大規(guī)模三維建筑場景網(wǎng)頁端可視化的思路

1.總體思路

初始化時加載最大場景,當相機靠近的時候,向服務(wù)器發(fā)出申請,下載相機可視區(qū)域的構(gòu)件素材,當某一區(qū)間由可見變?yōu)椴豢梢姷臅r候,將該區(qū)域清空,并將該部分的構(gòu)件存儲到本地。利用相機可視區(qū)域,物體遮擋來確定場景樹,從而減少需要渲染的構(gòu)件,利用本地構(gòu)件緩存來優(yōu)化加載速度。

2.流程圖

流程圖.png

3.具體實現(xiàn)

3.1構(gòu)件素材的的處理

在threejs中,每個物體都是由材質(zhì)和幾何體構(gòu)成的,在建筑模型中,往往有一些構(gòu)件的信息備注。于是,將素材分為三類:geometries,meterials,userDate,將這三類素材存放在服務(wù)器端。

3.2自適應(yīng)森林的數(shù)據(jù)結(jié)構(gòu)

自適應(yīng)多叉樹是一種根據(jù)改進的八叉樹,只有當三維場景的包圍盒長寬高比例近似于1:1:1的時候,才按八叉樹進行劃分。如果有一邊相對于另外兩邊過長,則按照二叉樹進行劃分,如果有一邊相對于另外兩邊過短,則按照四叉樹進行劃分。也就是自適應(yīng)多叉樹的非葉子節(jié)點分為八叉、四叉和二叉三種情況,這樣能保證最終得到的葉子結(jié)點的包圍盒趨近于正方體。包圍盒趨近于正方體的好處是包圍盒內(nèi)三維場景的包圍球中場景密度最高,計算視野范圍內(nèi)是否存在包圍球的效果最好。

3.3視域剔除

首先將計算出物體包裹球的半徑和坐標,因為相機是可移動的,所以我們先通過坐標變換將相機移到原點,我們只需要根據(jù)相機和物體 位置即可以判斷出該物體是否在視野中,如果在視野中就添加到場景樹中。如果物體由可見變?yōu)椴豢梢?,我們將改物體的信息存在本地的緩存當中,以便后續(xù)的使用。

3.4遮擋剔除

在渲染大規(guī)模場景中,假設(shè)視野中有一堵墻將后面的物體都擋住了,這時候只需要渲染這一堵墻,而不渲染后面的物體,這樣可以加快渲染的速度。在實現(xiàn)這一功能時,需要先判斷視野和物體是否在遮擋物的兩側(cè),然后判斷物體是否在視線和遮擋面構(gòu)成的空間(與視野相隔的空間)中,若在則不可見,否則為可見。


圖示

3.5LOD層次細節(jié)算法(目前沒實現(xiàn))

我的理解是:
一,不在照相機視景體內(nèi)的網(wǎng)格部分將不會被繪制。
二,距離相機視點遠的地方網(wǎng)格以低分辨率來繪制,近的地方以高分辨率來繪制。
三,粗糙的部分以高分辨率繪制,平坦的部分以較低的分辨率來繪制。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容