El游戏引擎-1. 地形

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

 

Terrain

1.1 动态LOD地形(高度图粗糙是造成地形不漂亮的重要原因T.T

Terrain_W

 

1.2 动态LOD地形(线框模式)

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值