數(shù)字孿生場景渲染能力中的WebGL技術(shù)路線
使用三維建模技術(shù)構(gòu)建出的虛擬現(xiàn)實場景后,需要通過渲染引擎實現(xiàn)場景的高精度、高保真和實時渲染。同時,需要將現(xiàn)實場景中的數(shù)據(jù)信息融合到虛擬場景中,實現(xiàn)對現(xiàn)實情況的監(jiān)測和控制。
目前大多數(shù)數(shù)字孿生城市項目在三維渲染引擎的技術(shù)選型上通常是2種方案,一種是基于C/S架構(gòu)的主流游戲引擎技術(shù)路線(Unreal Engine、Unity3D等),另外一種是基于B/S架構(gòu)的WebGL技術(shù)路線。
數(shù)字孿生場景渲染能力是當(dāng)下數(shù)字孿生項目實際交付過程中的核心關(guān)注能力之一,本節(jié)將基于B/S和C/S兩種技術(shù)架構(gòu)以及云渲染技術(shù)架構(gòu)分別介紹。
1、WebGL技術(shù)路線
1)基于WebGL的三大數(shù)字孿生技術(shù)路線
A. 基于WebGL純代碼開發(fā)
使用基于WebGL封裝的渲染庫直接進(jìn)行開發(fā),例如three.js、babylon.js。適用于體量較小、開發(fā)周期短而效果相求不高的項目
優(yōu)勢:
靈活性高:根據(jù)業(yè)務(wù)需求進(jìn)行深度定制,且易于其他業(yè)務(wù)系統(tǒng)通信或集成;
代碼冗余少:代碼體量小,易于問題排查;
建設(shè)成本低;
劣勢:
復(fù)用性低:由于根據(jù)業(yè)務(wù)需求進(jìn)行深度定制可復(fù)用的代碼少,難以模塊化以至于無法通過該路線批量化交付項目;
效果較差:能支撐的三維場景體量小,能達(dá)到的渲染效果比較有限,難以實現(xiàn)中大型場景或較為寫實的場景風(fēng)格;
B. 支持H5的游戲引擎打包WebGL
使用C/S的游戲引擎開發(fā)場景后打包成WebGL,例如Cocos、Egret、Unity3D。適用于業(yè)務(wù)特點(diǎn)上偏向于游戲,且無需于其他業(yè)務(wù)系統(tǒng)集成、通信的項目。
優(yōu)勢:
建設(shè)成本較低:C/S的游戲引擎提供了較為成熟完善的編輯器和工具,能夠低成本實現(xiàn)高質(zhì)量效果和高性能;復(fù)用性高;三維渲染效果好;
劣勢:
靈活性低:難以嵌入其他業(yè)務(wù)系統(tǒng)或通信;實現(xiàn)專業(yè)領(lǐng)域下的特有業(yè)務(wù)成本高或不可實現(xiàn);
難以基于場景進(jìn)行二次開發(fā);學(xué)習(xí)成本高;
代碼冗余多:游戲場景中場景和邏輯同等重要,邏輯上多為事件驅(qū)動。且游戲場景對動畫、特效、性能、包體和UI要求都很高。而數(shù)字孿生重場景、輕邏輯、以數(shù)據(jù)驅(qū)動為主,由于業(yè)務(wù)差異導(dǎo)致打包的WebGL代碼冗余過多;
維護(hù)成本高:
封裝度過高,做后期優(yōu)化空間小,bug難排查;
每次場景修改都需要重新打包WebGL;
C. 自研B/S低代碼融合渲染引擎
基于WebGL封裝的渲染庫開發(fā)適用于數(shù)字孿生項目的融合渲染引擎,再基于自研的引擎的進(jìn)行開發(fā),例如EasyTwin數(shù)字孿生融合渲染引擎。適用于有大量中大型數(shù)字孿生需求,項目間具有一定的可復(fù)制性且有與別的業(yè)務(wù)系統(tǒng)耦合的需求。
優(yōu)勢:
靈活性高:可根據(jù)通用業(yè)務(wù)自由定制;
學(xué)習(xí)成本較低:低代碼化開發(fā)過程,開發(fā)人員無需熟知WebGL等技術(shù)棧;
代碼體量合適:完全根據(jù)業(yè)務(wù)確定引擎功能;可深入到引擎底層做性能以及渲染效果的優(yōu)化;排查bug高效、解決問題徹底;
復(fù)用性高:業(yè)務(wù)的可復(fù)用點(diǎn)可得到引擎層的支持;
維護(hù)成本低:低代碼化、配置化實現(xiàn)孿生場景,業(yè)務(wù)的修改以及場景上的修改不需要修改代碼;
效果較好:可開發(fā)各種通用或定制的編輯器,實現(xiàn)技術(shù)與美術(shù)的結(jié)合;
劣勢:
渲染引擎的研發(fā)成本高:需要較強(qiáng)的技術(shù)能力通用化、組態(tài)化引擎的場景編輯能力、渲染效果、以及業(yè)務(wù)邏輯開發(fā)能力;
2)基于WebGL的數(shù)字孿生場景實踐
以自然場景中的植被為例進(jìn)行介紹,基于WebGL在地形模型上刷出符合自然環(huán)境的植被,并控制性能消耗。
準(zhǔn)備工作:

① 根據(jù)地形網(wǎng)格生成地形高度圖(中間圖),白色表示最高點(diǎn),黑色表示最低點(diǎn),通過山的高度校對植被的垂直方向坐標(biāo);
② 在現(xiàn)有地形模型的基礎(chǔ)上,把相機(jī)放到模型正上方,范圍覆蓋整個地形,渲染一幀導(dǎo)出深度緩存;
③ 在PS中處理成一個黑白圖片,白色表示”種樹”,黑色表示“不種樹”(左圖);
④ 計算生成植被點(diǎn)位的世界坐標(biāo);
生成植被示例:
① 生成噪聲圖,用于給定植被的XY坐標(biāo)、種類、色調(diào)、大小一個有規(guī)律的隨機(jī)(右圖);
② 為了生成的植被具備上下的空間層次,植被會包括以下表現(xiàn)方式:土壤紋理、草地紋理、草、灌木、樹木;
③ 為了生成的植被具備遠(yuǎn)近的空間層次,會有以下實現(xiàn)植被的方式:模型、廣告牌、ViewBillboard;
性能優(yōu)化:
① 視錐體剔除;
② 遮擋剔除;
③ 實例化渲染;
④ LOD;
⑤ GPU Drvien;
生成效果:

想要了解數(shù)據(jù)可視化素材&免費(fèi)獲取數(shù)字孿生可視化模板,歡迎點(diǎn)擊:https://easyv.cloud/?t=bilibili