iT邦幫忙

0

cesiumjs 如何編輯模型及優化

  • 分享至 

  • xImage

小弟我目前正在研究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,他是如何辦到將遠處的貼圖不呈現,然後他是怎麼優化載入城市模型的?

小弟一腳踏入這個坑,懇求大大幫忙~~

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
fernandy
iT邦新手 5 級 ‧ 2023-09-22 16:50:57

很高興聽到你對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的研究!

我要發表回答

立即登入回答