Qt3D使用assimp加载三维模型文件,assimp支持很多常规格式的三维模型格式: 其中支持导入的格式有:
3D
3DS
3MF
AC
AC3D
ACC
AMJ
ASE
ASK
B3D
BLEND
BVH
CMS
COB
DAE/Collada
DXF
ENFF
FBX
glTF 1.0 + GLB
glTF 2.0: 目前,对于glTF2.0,支持以下扩展:
KHR_lights_punctual ( 5.0 )
KHR_materials_pbrSpecularGlossiness ( 5.0 )
KHR_materials_unlit ( 5.0 )
KHR_texture_transform ( 5.1 under test )
HMB
IFC-STEP
IRR / IRRMESH
LWO
LWS
LXO
M3D
MD2
MD3
MD5
MDC
MDL
MESH / MESH.XML
MOT
MS3D
NDO
NFF
OBJ
OFF
OGEX
PLY
PMX
PRJ
Q3O
Q3S
RAW
SCN
SIB
SMD
STP
STL
TER
UC
VTA
X
X3D
XGL
ZGL
此外,某些格式受非自由代码或外部SDK(默认情况下未构建)的依赖而支持:C4D(https://github.com/assimp/assimp/wiki/Cinema4D-&-Melange)当前支持导入几何+节点层次结构
支持导出的格式有:DAE (Collada)
STL
OBJ
PLY
X
3DS
JSON (供 WebGl使用, 通过 https://github.com/acgessler/assimp2json)
ASSBIN
STEP
glTF 1.0 (部分支持)
glTF 2.0 (部分支持)
3MF ( 实验阶段 )
FBX ( 实验阶段 )
Qt3D导入三维模型代码: Qt3DRender::QSceneLoader* loader = new Qt3DRender::QSceneLoader(rootEntity); QObject::connect(loader, &Qt3DRender::QSceneLoader::statusChanged, this, [](Qt3DRender::QSceneLoader::Status s) {qDebug() << s;}); QUrl url = QUrl::fromLocalFile(file); loader->setSource(url); rootEntity->addComponent(loader);虽然assimp实现了主要的模型格式解析,但是Qt3D也封装了不少细节,开发起来十分方便.