三维地图的性能优化
? ?最近在搞前端三維地圖項目,在地圖場景比較大的情況下,渲染的壓力會非常大,如果沒有做優(yōu)化,渲染會特別慢,幀率可能一秒10幀都不到。
? ?渲染的優(yōu)化主要集中在如下幾個方面:
? ? 1. 使用瓦片技術(shù)。 瓦片技術(shù)說到底就將地圖分成很多個層級,最上層的地圖是最粗糙的,但是覆蓋了整個場景,往下一層將整個場景分為四個子區(qū)域,每個子區(qū)域包含了更多的細節(jié)內(nèi)容。如此層級依次往下,最底層的地圖會包含最多的細節(jié)。
? ? 2. 空間分割技術(shù)。 使用像八叉樹,或者四叉樹對場景做分割。這樣在渲染的時候可以盡可能快的剔除掉不在當前視錐體范圍內(nèi)的物體。
? ? ? ? 2.1. 包圍體技術(shù)。八叉樹,四叉樹可以對空間做分割,但是當它們的一塊子區(qū)域只有一部分在視椎體內(nèi),這個時候就需要使用包圍體技術(shù),對子區(qū)域內(nèi)的各個物體的包圍體做可視性判斷。
? ? 3. 遮斷剔除技術(shù)。 在視錐體范圍內(nèi),有些物體會被前面的物體遮擋,這些被遮擋的物體其實是不需要渲染的。遮擋查詢有多種技術(shù)方案實現(xiàn),比如通過擴撲性,硬件遮擋查詢。擴撲性比較麻煩,我這里推薦硬件遮擋查詢技術(shù),實現(xiàn)起來相對比較容易。給一個鏈接:https://www.cnblogs.com/lyggqm/p/7831382.html? 這篇文章寫的很不錯,有很好的參考價值。
? ? 4. HLOD技術(shù)。這個技術(shù)說通俗點就是當camera距離地面很遠的時候,地形用比較少的三角形;當camera距離地面比較近的時候,用比較多的三角形。當然它的內(nèi)部實現(xiàn)其實很復(fù)雜,整個地形文件都是是一個樹形結(jié)構(gòu),最上層的節(jié)點表示整個場景,當然很粗糙;隨著camera往地面靠近移動,需要比較精細的表示場景,這個時候就取當前節(jié)點的子節(jié)點。子節(jié)點對父節(jié)點的細化有兩種方案:replace和add,replace表示子節(jié)點的內(nèi)容完全取代父節(jié)點特定區(qū)域的內(nèi)容。add表示子節(jié)點在父節(jié)點內(nèi)容的基礎(chǔ)上做一些添加。 有沒有注意到,瓦片技術(shù)和HLOD技術(shù)比較像,其實瓦片技術(shù)就是HLOD技術(shù)的一種,瓦片技術(shù)用的是replace方案。
轉(zhuǎn)載于:https://my.oschina.net/u/1273706/blog/3094431
總結(jié)
- 上一篇: 我计算机桌面的word图标改变了咋办,桌
- 下一篇: CAD日照分析教程:CAD软件中如何擦除