现在的位置: 首页 > 综合 > 正文

大规模地形渲染——误差计算

2012年10月07日 ⁄ 综合 ⁄ 共 774字 ⁄ 字号 评论关闭
 

LOD算法用来决定哪些三角形需要绘制的判断依据就是计算三角形的误差(Error),然后跟预先设定的门限值进行比较来选择合适的LOD级别。通常需要考虑的因素就有地形本身的起伏程度,视点到三角形的距离,有的还要考虑视点的方向等。一般采取的做法就是将顶点的实际高度值与插值之间的误差向屏幕进行投影,投影之后的象素值跟设定值进行比较来确定当前的LOD级别是否符合精度要求。并且为了简化公式,往往对应用场景做一个假设,比如视点方向与地表接近平行等,很多算法都采用了这种简化方式,并且取得了较好的效果。

    本算法采用了一种新的误差计算方法。给定相等大小的三角形,距离视点较远的三角形在投影之后的象素宽度比距离视点较近的三角形的象素宽度要小。下图中A点的三角形投影到屏幕空间之后的象素尺寸肯定比B点处的象素尺寸大。由此可以看出,距离视点较远处的三角形密度比距离视点较近的三角形密度小,也就是说三角形的密度反映了地形的绘制精度。我们可以通过计算视点单位角度内的三角形个数来衡量地形的精细程度。 

    

    d为视点到三角形的距离,h为视点到地平面的高度,D为三角形的尺寸,根据三角形相似性,投影之后的三角形尺寸D’= D*h/d ,单位象素内的三角形个数则为1/D’,那么根据弧度的计算公式,单位弧度内的三角形个数应该为:

        d/D’= d*d/D*h      1

给定弧度fov,视野范围内的三角形个数应该为:

        K = fov*d*d/D*h    2

通过这个公式,我们就可以计算距离视点任意距离的三角形密度,预先给定一个阀值,然后比较计算值和阀值大小,从而决定选择地形的细节层次。这种做法的好处就是不必考虑地形本身的复杂度,因为我们可以做出最坏的情况处理,那就是假定视点离地表很低,那么距离视点远处和近处的三角形都需要非常精细的三角形级别。

抱歉!评论已关闭.