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,该类应该包含视点相关数据,如视点位置,视线目标,视点如何移动,旋转等(未完待续)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值