cesium導入3D模型(obj轉gltf)


cesium中支持載入3D模型,不過只支持gltf格式。gltf是khronos組織(起草OpenGL標准的那家)定義的一種交換格式,用於互聯網或移動設備上展現3d內容,充分支持opengl,webgl,opengles圖形加速標准。


在用cesium的過程中難免需要導入建好的obj或dae模型,這時候就需要將這些模型轉成gltf格式了
我比較常用的是obj,所以我用的是obj2gltf

obj轉gltf步驟
首先在cesium目錄下安裝obj2gltf(如果沒有nodejs的就裝一個吧,反正又簡單官方還推薦)

npm install --save obj2gltf

然后在node_modules目錄下找到obj2gltf,把你需要轉的obj和帶的貼圖放在obj2gltf根目錄下(貌似是obj2gltf的bug,指定目錄似乎不管),在obj2gltf目錄下打開命令行,輸入

node bin/obj2gltf.js -i model.obj -o model.gltf

為了避免一個個文件轉換的麻煩,參考博客http://blog.csdn.net/u013929284/article/details/53106331,寫了一個批處理文件,將文件夾A中的obj文件全部轉為對應的gltf文件放入文件夾B中,代碼為

@echo off
for /r D:\obj2gltf-master\OBJ %%i in (*.obj) do node bin/obj2gltf.js -i %%i -o OUTPUT\test.gltf
pause & exit

 

按原博主的方法會報缺少參數,添加-i,-o后解決,成功轉換。

這里寫圖片描述
成功轉換模型后,將模型放到相應路徑,使用viewer.scene.primitives.add方法加載

      var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(
          Cesium.Cartesian3.fromDegrees(102.73, 25.04,  0));
      var model = viewer.scene.primitives.add(Cesium.Model.fromGltf({
          url : '../Source/SampleData/Models/pangea3dgalleon.gltf',
          modelMatrix : modelMatrix,
          //scale : 10.0,
          maximumScreenSpaceError: 16 // default value
      }));

      viewer.camera.flyTo({
          destination : Cesium.Cartesian3.fromDegrees(102.73, 25.04, 2631.082799425431)
      });

 

加載后發現模型不出現,排查后原因是加載地形后模型被擋住,將模型放大到一定程度或放置位置在一定高度就能看到

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM