El遊戲引擎-1. 地形

來源:互聯網
上載者:User

1. 地形

某種程度上說,目前主流3D引擎都可以被描述為基於地形的3D引擎。由於地形在遊戲中使用之普遍,各引擎都對該部分內容給予充分重視,在實現其地形系統時在各種理論、演算法上所投入的研究也不遺餘力。

 

1.1 動態LOD

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

LOD概念很早就被引入到遊戲開發中,在大規模地形的實現中得到廣泛應用。地形渲染一般的實現方法是根據高度圖建立三角形頂點緩衝,之後在繪製的時候根據LOD建立索引緩衝,再之後渲染。由於在渲染時LOD會參考視點、視錐等選取需要繪製的有效三角形的索引進行繪製,這樣一來很多無效三角形在被送入流水線之前就被剔除。理想情況下,不論多大的地形,每一幀渲染的三角形數目也不會有很大波動。

El採用動態LOD對地形進行繪製管理,所採取的理論及實現皆參考潘李亮《基於LOD的大規模真實感室外情境即時渲染技術的初步研究》一文,這裡給出連結,不多贅述,並對作者表示感謝。

http://www.hellocpp.net/Articles/Article/145.aspx

         地形動態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中的觀點也很中肯。

http://www.sineysoft.com/blog/post/Terrain_lod.html

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

http://fotoone.spaces.live.com/blog/cns!68DE430B0B5562FB!1234.entry

 

圖1.1 動態LOD地形(高度圖粗糙是造成地形不漂亮的重要原因T.T)

 

圖1.2 動態LOD地形(線框模式)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.