El遊戲引擎 1 地形

2021-08-25 07:25:25 字數 1632 閱讀 3684

1.地形

某種程度上說,目前主流3d

引擎都可以被描述為基於地形的3d

引擎。由於地形在遊戲中使用之普遍,各引擎都對該部分內容給予充分重視,在實現其地形系統時在各種理論、演算法上所投入的研究也不遺餘力。

1.1動態lod

lod(層次細節,level of detail

)簡單來說,就是對於接近視點或者說需要精確繪製的物體採用高層次細節,而對於遠離視點或者說不需要精確繪製的物體採用低層次細節,以提高渲染時的效率。

lod概念很早就被引入到遊戲開發中,在大規模地形的實現中得到廣泛應用。地形渲染一般的實現方法是根據高度圖建立三角形頂點緩衝,之後在繪製的時候根據lod

建立索引緩衝,再之後渲染。由於在渲染時lod

會參考視點、視錐等選取需要繪製的有效三角形的索引進行繪製,這樣一來很多無效三角形在被送入流水線之前就被剔除。理想情況下,不論多大的地形,每一幀渲染的三角形數目也不會有很大波動。 el

採用動態lod

對地形進行繪製管理,所採取的理論及實現皆參考潘李亮《基於lod

的大規模真實感室外場景實時渲染技術的初步研究》一文,這裡給出鏈結,不多贅述,並對作者表示感謝。

地形動態lod

中值得注意的是四叉樹管理的實現及t

裂縫的修復。解決了這兩個問題,基本上就沒有什麼難點了。

1.2渲染

el地形採用類似魔獸世界3+1的渲染方式,三張地表細節紋理(草地、泥土、磚塊),及一張混合引數紋理,該紋理的rgb通道分表代表前三張紋理的混合權重值,alpha通道代表地形是否有陰影。

另外,影響地形渲染效果的諸多因素當中,光照其實佔了很大部分比重,處理好光照模型,渲染出來的地形會有意想不到的效果。

1.3看起來很美

最後給出地形lod

的一些討論。

評估自己的專案自問一下,地形真的有必要做動態lod

嗎?動態lod

在渲染前的確能裁剪大量的三角形,但是決定裁剪哪些三角形的步驟卻需要在cpu

中給出計算,而專案中如果要得到相對精緻的地形,這樣的計算量也是很大的。el

的地形運算中,動態lod

引發了指數級的降幀。

地形動態lod

,看起來很美。但在實際的專案運用中,作者覺得地形採用靜態lod

更為合適。市面上一些引擎就是這麼做的,魔獸世界也是如此。魔獸放棄了動態lod

策略,採用二級靜態lod

,而魔獸世界的地形效果及效率業界也有目共睹。可能會有人堅持認為類似魔獸的無限連續地形,用動態lod

是再適合不過了。其實作者竊以為,無限連續地形的精髓,不在於lod

而在於地形分塊。

關於專案中地形採用靜態lod

的討論,siney

在其blog

中的觀點也很中肯。

最後給出魔獸世界地形渲染方法的一些鏈結,希望對大家有所幫助。

圖1.1

動態lod

地形(高度圖粗糙是造成地形不漂亮的重要原因t.t)

圖1.2

動態lod

地形(線框模式)

El遊戲引擎

el遊戲引擎 trcj 目錄 前言 1.地形 1.1 動態lod 1.2 渲染1.3 看上去很美 2.水 2.1 wow 經典水2.2 實時渲染水 3.模型 3.1 配置max 外掛程式開發環境 3.2 max 外掛程式開發 3.3 elmaxplugin 4.場景管理 5.gui 6.雜項 7.d...

Quantied mesh 1 0 地形格式

乙個地形瓦片在quantied mesh 1.0格式是簡單的根據瓦片地圖伺服器 tile map service tms 和全球大資料的多解析度四叉樹。所有的瓦片都有延伸地形,所以,瓦片的url是 然後在這些url種找到金智塔的兩個根檔案 180 deg,90 deg 0 deg,90 deg 0 ...

JLOI2013 地形生成

排列計數的乙個經典做法就是按照某種順序將元素不斷往序列中插入,不難發現本題的第一問為了方便知道每個位置前面有多少個大於當前位置,我們可以考慮按高度從大到小地將一座座山不斷插入序列。假設當前沒有高度相同的山,當前考慮插入第 i 座山,是當前山的關鍵字,那麼我們能插入的位置就有 min 個,根據乘法原理...