CesiumLab V1.3 新功能 MAX场景处理(免费Cesium处理工具集)
? 每次到寫文章的時候就很高興,意味著又有重大功能更新了,也意味著10多天昏天黑地的閉關(guān)日子暫時結(jié)束了。
依照慣例,先放圖
?
小范圍精模型cesium加載效果?
大范圍白模cesium加載效果?
存儲對象名稱支持點選處理目的:
????????MAX建模的三維場景 或者其他建模軟件導(dǎo)出的三維模型數(shù)據(jù)(只支持靜態(tài)場景,不支持動畫) 轉(zhuǎn)為 cesium可以加載的 3dtiles模型。
希望達(dá)到的目標(biāo):
? ? ? 自動創(chuàng)建lod,加快cesium的加載和渲染速度。
使用的優(yōu)化手段:
? ? ? 大模型(mesh)切分、場景分塊、三角網(wǎng)簡化、紋理縮放合并、材質(zhì)合并。 分久必合,合久必分,分分合合,估計有些人都暈了,我也很暈,但是沒辦法,這是必要的過程。?
支持格式:
? ?我使用的開源項目assimp做輸入數(shù)據(jù)讀取解析器,所以理論上支持的模型格式多達(dá)57種,詳細(xì)見????https://github.com/assimp/assimp。
? ?這里有我們熟悉的,obj,3ds,gltf 還有很多人關(guān)心的 ifc(ifc只支持一部分格式,不是全部,別高興太早)。
? ?開發(fā)過程中都是用dae測試的、為什么用這種格式?dae是基于xml的,可以算第一個比較完整的模型交 換格式標(biāo)準(zhǔn),所有數(shù)據(jù)都是文本保存,更方便閱讀和調(diào)試。所以我建議如果可以最好max中導(dǎo)出dae格式做測試。
導(dǎo)出工具:
? ??
Autodesk Collada是 autodesk官方出的導(dǎo)出插件,這個插件真心很爛,特別對于大場景的導(dǎo)出,基本次次卡死。唯一的優(yōu)勢是對中文支持比較友好,對象的中文名都輸出到dae了,所以沒辦法冒著次次卡死的風(fēng)險不停的測試。下面是我的導(dǎo)出參數(shù):
?
?
autodesk dae 參數(shù)1?
?
autodesk dae參數(shù)2OpenCOLLADA?是 開源的導(dǎo)出插件,點鏈接OpenCOLLADA?去下載對應(yīng)版本的插件。這個插件優(yōu)點是導(dǎo)出很快速,缺點也非常明顯,對中文支持不友好,max里的所有中文名稱都沒了。?
?
OpenCOLLADA dae參數(shù)?
參數(shù)配置:
?
模型參數(shù)配置從簡單的說:
保存名稱:把模型對象名稱(Node的name)存入3dtiles的featuretable中,這樣加載cesium之后,可以依據(jù)pick到的模型名稱來區(qū)分點擊的對象,方便做后續(xù)的業(yè)務(wù),當(dāng)然如果你的數(shù)據(jù)是 花花草草,這些本身就是裝飾類的模型,那就沒必要保存這個了。
強(qiáng)制雙面:按道理模型都應(yīng)該存儲這個屬性,但是可惜MAX導(dǎo)出的dae沒有保留這個有用的屬性。所以我們需要在這里強(qiáng)制設(shè)置,對于常見的十字交叉樹木花草、單片護(hù)欄、圍墻等物體,需要勾選此項。對于封閉的模型,例如建筑物或者設(shè)備等,不要勾選,可以提升一些渲染效率。
貼圖效果:無光照 : 適應(yīng)的是 烘培后的場景 或者 像花草樹木本身貼圖都是實景圖片的模型。
? ? ? ? ? ? ? ? ? 簡單光照:適應(yīng)的其他貼圖模型,采用自定義shader實現(xiàn),相當(dāng)光線一直是視點方向,正對平面,模型最亮。
? ? ? ? ? ? ? ? ?cesium默認(rèn):cesium內(nèi)置的處理方式,全局太陽光。(因為一些人反映模型效果太暗,所以才搞了個 無光照 和 簡單光照)
分割策略:這個最難解釋的,我們天天提LOD,LOD是什么?核心就四個字:分塊,分層 。這個工具的3600行純手打的C++代碼就是圍繞這四個字來的。分層,其實依據(jù)精度來計算的,這個也就不展開了,核心機(jī)密。我們來說說這個分塊策略:
???? ?空間優(yōu)先: 依據(jù)模型(精確到每個mesh)的模型空間位置,來分割塊,這個也是常規(guī)手法,比如四叉樹,八叉樹等等,不過這回因為考慮到適應(yīng)性,并沒有使用四叉樹或者八叉樹,而是自創(chuàng)的一個二叉樹。簡單來說,分別在x,y,z三個軸向上分割,哪個軸向上分割的模型總量差較小,就使用哪個軸。
? ? ? 材質(zhì)優(yōu)先:依據(jù)模型(精確到每個mesh)的材質(zhì)(含貼圖)來組合,優(yōu)先把使用相同材質(zhì)的模型放在一起。為什么要做這個?請看文本圖1,近處的花花草草,如果按照空間分割、這些花花草草本身其實幾何體很簡單,但是紋理很大,導(dǎo)致這個紋理存儲在多個塊中,就比較浪費了,完全沒有必要,所以這種優(yōu)先使用材質(zhì)分塊,分層級別更少,效率更好一些。
? ? ?注意優(yōu)先二字,我們內(nèi)部會自動計算,分塊這兩種方法會綜合運用,而不是唯一標(biāo)準(zhǔn)。
?
后記:
? ? ? ?這個工具最開始并沒有排到我計劃的列表中去,不過看大家各種嘗試,轉(zhuǎn)模型太辛苦了,還是犧牲一下我兩周的時間來做點事情。和我最開始預(yù)估的一樣,第一,我自己暫時用不上這個工具;第二,本身這個工具的難度就很大,需要上所有的優(yōu)化手段,模型分割、模型簡化,紋理合并,場景分塊等等。所以我很擔(dān)心,這個坑填不上,后來想想,先填一點,能解決一部分問題也好。每天約16個小時的高強(qiáng)度工作,大約花了2天設(shè)計了整個流程,又花3天時間堆上所有代碼,又花了2天時間調(diào)通。效果也有了。然而,這時候我又有了更好的處理流程,覺得第一版太屎了,修修補(bǔ)補(bǔ),各種不順眼,本著做產(chǎn)品不是做項目的目的,決定代碼重構(gòu)。花了0.5天整理思路,1天的時間堆代碼(3000多行c++代碼一天手打出來),2天各種測試修補(bǔ)bug,再來0.5天的UI部分,這回效果基本滿意了。再這過程中,真的也是沒有及時回復(fù)很多小伙伴的消息,真的抱歉了。
????模型優(yōu)化是個無底洞,這個工具也不是放之四海而皆準(zhǔn),依然還有較大的優(yōu)化空間。有人問我支不支持幾百平方公里的模型? 我不好回答,因為這要看模型制作的精細(xì)度,以及模型現(xiàn)在的場景結(jié)構(gòu)。如果轉(zhuǎn)換有問題,請發(fā)測試數(shù)據(jù)給我。
?
?
一起來聊技術(shù)吧轉(zhuǎn)載于:https://www.cnblogs.com/cesium1/p/10062817.html
總結(jié)
以上是生活随笔為你收集整理的CesiumLab V1.3 新功能 MAX场景处理(免费Cesium处理工具集)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: React入门-9.redux你好
- 下一篇: Android Studio 3.3 B
