為ThingWebGL端數字孿生應用最優解,JS提供Web平臺的3D渲染能力。
大家都知道,Web平臺有很多的開源引擎,如:three.js,BabylonJS,PlayCanvas,ClayGL,Oasis等,以及在CS端也有,如:Unity、UE、CryEngine、Ogre等引擎,我們對其中一些引擎做了較深入的研究和項目實踐,但發現這些引擎并不能完全滿足我們所面對的數字孿生領域的需求。這種情況下,我們結合了之前使用C++開發的引擎經驗、WebGL的開發經驗、上述引擎的使用經驗、以及項目中的實踐經驗,開發了WebGL版的T3D引擎,以便更好地服務于Web平臺的3D渲染。
T3D引擎框架
在T3D引擎的框架設計中,主要分為四層:標準封裝層,渲染邏輯層,場景資源層和擴展層。
標準封裝層,渲染邏輯層,場景資源層構成核心庫 t3d.js。
核心庫是一個Web優先的,最小可運行的通用圖形渲染庫。Web優先指的是t3d.js主要基于WebGL和WebGPU作為底層繪圖標準。通用圖形渲染庫指的是t3d.js并不限定圖形渲染以外的其它邏輯,適用性與擴展性比較好。
另外,官方提供常用需求的擴展,作為第二方庫供開發者使用。至于定制化的需求,支持由開發者基于T3D開發第三方庫。
改進
渲染引擎封裝的功能,從大的分類來說,可以分為:場景樹,幾何體,材質,渲染管線,下面我來簡要介紹一下T3D在這些方面的改進。
場景樹
改進了場景樹矩陣更新的邏輯,基于內置的矩陣標臟系統,可以進行觸發式更新。簡單理解就是,有改變再更新,不改變不更新,在大多數項目中,可以極大提高矩陣更新效率,從而提升渲染幀率。
優化Uniform的預處理,場景中全局參數,燈光參數,可以單獨進行更新并cache,提高Uniform上傳效率。
可擴展的渲染層級列表,更方便的渲染排序。基于渲染層級,可方便地實現背景,場景,覆蓋物的排序分離,并基于深度緩沖分層,滿足特定渲染需求。能一定程度上解決透明圖標遮擋問題,滿足alwaysOnTop,Overlay的需求等等。(three.js由于沒有渲染分層功能,同一場景內的渲染節點不能通過一次遍歷分發到不同的渲染數組中,很難高效地實現上述功能。)
幾何體
核心庫提供Geometry,Attribute,Buffer類,提供逐頂點的幾何體描述。同時支持Instance繪制。基于幾何體的封裝,我們可以接收多種類型的數據進行渲染:
模型加載器,例如核心庫示例部分提供的GLTFLoader,VoxLoader等。
程序生成,例如:點,線,面,管,擠出等。
自定義數據,例如第三方GIS數據,實時傳輸數據等。
在點線面的擴展上,t3d.js的官方示例部分,會提供業務場景(ThingJS)中常用的幾何體生成計算模塊。
材質
一般的Web渲染引擎中,很難基于內置材質進行擴展。例如three.js,材質的Uniform上傳與材質類型是深度耦合的,因此很難基于Standard材質實現掃光等材質特效。T3D提供了材質繼承機制,只需要簡單插入著色器邏輯,即可實現對PBR材質的快捷修改。
渲染管線
在常見的WebGL引擎中,渲染器的渲染功能容易是過度耦合的。T3D面向基于GPU加速的圖形接口,即WebGL與WebGPU,基于這樣的思路,我們抽離出RenderPass的概念。
目前我們提供WebGLRenderPass作為默認的渲染通道,未來,幾乎可以無縫切換到WebGPURenderPass。這樣在我們推出WebGPU渲染器后,不需要改變上層代碼邏輯,即可直接實現WebGPU的渲染。
另外,T3D提供的接口可以單獨處理“場景圖信息的收集”與“渲染列表的生成”,并可以執行粒度更低的渲染命令。便于實現高性能的后處理流程擴展。在實際渲染中,物體勾邊,發光等后期,往往需要多通道的渲染。在下圖中,同樣是執行兩通道的渲染,t3d執行的流程,能避免很多冗余的邏輯。
基于這樣的設計,我們提供了高級渲染器(EffectComposer)的擴展。高級渲染器是一個后期混合器,并內置了常用的后期處理模塊。高級渲染器為ThingJS提供了豐富的后期特效支持。
除了全屏幕的后期處理效果,EffectComposer還提供逐物體的特效解決方案。
未來,T3D還在快速迭代中,未來我們還要做:
基于Transform Feedback特性的更強大的粒子系統。
節點式材質系統。
更加強大的WebGPURenderPass。
…
綜上所述,T3D為Web平臺提供強大的3D渲染能力。基于T3D引擎,能實現豐富的幾何體定制,材質定制和渲染管線定制。未來T3D將本著開放,共享的原則,不斷演進,為用戶提升渲染效果和渲染性能,保證ThingJS在Web端優異的渲染能力。
關于UINO優锘科技
UINO優锘科技成立于2012年,總部位于北京,目前團隊已超過千人,在上海、廣州、深圳、杭州、南京等地均設有分支。
自成立至今,UINO秉承數字孿生的理念,以多維空間大數據為基礎,致力于打通邏輯世界和物理世界,并憑借三維可視化交互為核心特點的數字孿生運維管理能力,形成了數據中心可視化、智慧園區、智慧城市、智慧消防等多種數字孿生運運場景群。
迄今為止,UINO優锘科技已服務了2,000+行業領軍企業,并不斷為全行業客戶提供數字孿生可視化解決方案。



