LOD地形設計(一)

   在大規模的三維場景中,不可能一次渲染所有的三角形,而且即使能做到這點,全部渲染也是不可取的。常用的做法就是採用LOD,即層次細節模型。距離視點較遠的三角形可以大一些,粗糙一些,而距離視點較近的三角形則應有較爲細膩地表現。常用的LOD地形的實現算法是四叉樹算法,即對二維地平面進行分割時,每次把正方形分成4個等分的小正方形,直到分割的正方形尺寸達到某個閾值爲止,然後對不能再分的正方形進行三角形剖分渲染。


由於正方形的右下角位於視截體內部(圖1),需要把正方形進行分割,圖2爲第一次分割的後的狀態。由於右下角正方形位於視截體內部,所以進行第二次分割,見圖3。直到第3次分割(圖4),纔有小正方形不在視截體內,既不要細緻渲染的正方形。如此不斷分割,地平面會出現若干大小不等的正方形。爲了記錄正方形哪些是要分割的,哪些是不要分割的,需要設置一個標誌,爲此封裝一個類來管理標誌,該類記爲Bit。

 


 

    爲了判斷一個節點區域是否在視截體內部,應該有一個管理視截體數據的類CFrustum。該類應該有視截體的六個平面方程,以及檢測物體是否落在視截體內的函數。由於LOD地形是和視點相關的,距離視點進的三角形需要細膩渲染,而較遠的則則可以稍微粗糙一些。因此一個正方形距離視點的距離d和自身的邊長e應該是一個指標來決定改正方形是否需要細分,d/e < C1時,需要進一步細分,否則不需要進一步細分。當C1的值越大,e的值越小,節點細節較爲細緻;相反,C1越小,e值越大,節點細節與粗糙。正方形是否需要進一步分割,還和地形的起伏有關係,當地勢平坦時,節點細節可以較少,反之節點細節應該較爲豐富。r=MAX(正方形四個定點和中心)-MIN(正方形四個定點和中心)。r/e  < C2時,e較大,需要分割。C2越大,e越小,層次越細膩,反之,C2越小,e越大,可以少一些細節。稱C1爲距離分辨率,  C2爲高度分辨率。

既然LOD和視點相關,就必須有一個類來記錄視點,把該類記爲Camera,該類應該包含視點相關數據,如視點位置,視線目標,視點如何移動,旋轉等(未完待續)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章