Qt3D使用assimp載入常規模型檔案

ideryi發表於2021-03-15

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也封裝了不少細節,開發起來十分方便.

相關文章