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(預設情況下未構建)的依賴而支援:
支援匯出的格式有:
- 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也封裝了不少細節,開發起來十分方便.