小弟我目前正在研究cesiumjs,遇到了瓶頸。
1.現階段使用3dtile方式載入城市模型b3dm檔,那這邊該如何編輯b3dm,我有使用https://github.com/CesiumGS/3d-tiles-validator/tree/main/tools 的工具,將b3dm轉成glb,但使用blender開啟會跳出錯誤 "GLB version must be 2; got 1",要怎麼讓GLB版本升級?
2.當我的模型量載入過多,記憶體就會呈現滿載情況,我去看https://3d.taipei/ ,這個也是cesium,他是如何辦到將遠處的貼圖不呈現,然後他是怎麼優化載入城市模型的?
小弟一腳踏入這個坑,懇求大大幫忙~~
很高興聽到你對CesiumJS的研究感興趣!讓我來回答你的問題:
升級GLB版本:GLB格式的版本通常由文件的metadata指定。要將GLB版本升級到2,你可以使用glTF-Transform工具。以下是一個使用步驟的示例:
首先,使用以下命令安裝glTF-Transform工具:
npm install --global gltf-transform
接著,使用以下命令將B3DM轉換為GLB並升級版本:
gltf-transform b3dm2glb -i input.b3dm -o output.glb --upgrade
現在,你應該能夠在Blender中成功打開升級後的GLB文件。
降低記憶體使用量和優化載入城市模型的方法可以有多種。以下是一些可能的解決方案:
層級細分(Level of Detail,LOD):根據觀察者的距離和視角,動態地調整模型的細節級別。這可以通過CesiumJS提供的LOD功能來實現。
可視範圍選擇(View Frustum Culling):只渲染位於相機視錐體內的模型,超出視錐體範圍的模型將不會被渲染。
平鋪地形(Tiling):將大型城市模型分成小塊(tiles),僅在需要時載入和渲染特定的tiles,這樣可以節省記憶體和加快載入速度。
簡化模型(Model Simplification):對城市模型進行簡化,例如移除不可見的細節、合併相鄰的小面片等,以減少模型的面數和頂點數。
紋理壓縮(Texture Compression):使用壓縮的紋理格式,如基於GPU的紋理壓縮(GPU-based texture compression),以減少紋理的記憶體佔用。
希望這些資訊對你有所幫助!祝你順利完成CesiumJS的研究!