基于地形熵的多分辨纹理选择方法

(整期优先)网络出版时间:2019-02-28
/ 3
摘 要 三维场景真实感绘制是虚拟现实的重要手段之一,实时渲染的地形都需要使用巨量图像数据作为纹理。本文提出了一种新的基于地形熵的多分辨率纹理选择方法。预处理阶段将纹理分块,实时绘制时根据误差阈值计算所需纹理分辨率层次细节,不同分辨率模型之间无缝转换,满足了三维场景绘制的逼真度和实时性要求。

关键词 多层次细节模型;纹理层次细节;地形熵;视相关


1 引言

三维场景的真实感绘制在近十年来成为国内外计算机图形学领域研究和关注的热点。随着遥感及卫星技术的发展,使得获取高分辨率的数字高程数据以及影像纹理数据成为可能,对地形的实时绘制也提出了更高的要求。在三维场景绘制中要渲染的纹理数据量远远大于几何模型的数据量,所以对于纹理数据使用多层次细节模型(Level of Detail, LOD)技术来减少纹理渲染量可以有效减少整体数据量。

在对地形纹理数据进行简化时,主要有采用Mip-map[1]技术和Clip-map[2]技术。MIP-map技术预处理生成地形纹理的各级分辨率模型,绘制时根据实际需要决定使用哪种分辨率的纹理,对于纹理数据的尺寸和大小均有限制,不能适合大尺度纹理数据[3]-[5]。Clip-map技术突破Mip-map技术对纹理尺寸的限制,对纹理数据的装载进行剪切装入,但Clip-map技术对纹理的剪裁由硬件完成,所以此技术需要特殊的硬件支持,只能在大的图形工作站上完成。

在大规模真实感地形场景的绘制中,直接用原始纹理数据显然不太现实。如何根据视点及地形复杂度因子高效的生成与之相适应的动态网格是多分辨率纹理映射算法的关键。为此,本文提出一种新的基于地形熵的视点相关的多分辨率地形纹理的选择方法。算法分预处理和实时绘制两个阶段,预处理阶段,将在平面空间上把大规模纹理数据分割成一系列规则区域;实时绘制阶段,根据视点位置、地形熵、及程序控制绘制三角形总数和视觉层次等因子选择适合的纹理多分辨率层次模型,实时生成自适应地形三角网,纹理映射。

2 纹理数据结构

本文采用的是Lok M.Hwa[6]提出的一种新的菱形纹理单元,该纹理数据结构如图1所示。它以无裂缝产生的类似于四叉树的形式遍历数据,并能达到相对于Mip-map等数据结构两倍的分辨率的细节呈现。并且该数据结构在不同分辨率之间的平滑转换不需要进行不同分辨率纹理之间的复杂混合运算。

1049130.jpg

图1 菱形纹理单元数据结构

将菱形纹理单元为系统处理的最小纹理数据单位,每个菱形纹理单元都由两个斜边重叠的正二等边三角形组成的,每个正二等边三角形又由256或1024个三角形组成。每个菱形纹理单元有两个父亲节点,四个邻居节点,以及四个儿子节点。菱形纹理单元斜边的中点同时也是此菱形的中点d惟一标识此纹理单元。两个正二等边三角形的直角顶点即为此菱形的左右父节点(p1,p2);正二等边三角形的两直角边中点即此菱形的四边中点为纹理单元的四个子节点记为C0-C4;连接同一分辨率互为邻居的两纹理单元节点d,其直线必定过菱形纹理单元儿子节点。q为以虚线组成的高一级纹理分辨率模型的中点,a为d的祖先节点。以C0-C4组成的高一级分辨率纹理块,其分辨率为原纹理块的两倍,而其每个子节点所覆盖的原菱形纹理单元的四分之一。将菱形纹理单元的儿子节点和其双亲节点的用下标联系,其邻居节点的访问通过遍历其儿子节点的另一个父亲节点来实现。纹理数据节点的分裂及合并运算采用ROAM的双对列处理。纹理网格以菱形纹理单元为单元逐层细分生成。

3 纹理分辨率的选择

在纹理分辨率层次细节的选择过程中,误差阈值为菱形纹理单元是否被分割的依据。在纹理数据的分割的过程中,当纹理块的误差大于要求的误差阈值时,需要对其进行分割以获得更高一级的纹理分辨率图像;否则,不必分割,即当前的纹理数据已经符合所要求的误差阈值。

如图2所示,利用视域四棱锥来确定可视的物体,除了在完全显示区域以外的物体其他物体全部绘制。对于显示区域内需要绘制的纹理根据由地形的粗糙度,视点相关,以及物体空间单位长度在投影平面上的像素数等因素所确定的误差阈值选择相应的纹理分辨率层次。

104105986.jpg

图2 透视投影视域

3.1 地形熵

由人眼的特殊成像机理可知,人眼对空间频率接近于零的平滑区域和空间频率相似的纹理区域有很大的视觉“钝性”,所以“不变”与“规则变化”的场景很容易在人的意识中被忽略,视觉对“突变”和“极不规则变化”的区域更感兴趣。因此在大规模地形场景中,人眼对于地形高低起伏变化多的区域比相对平坦的区域具有更高的视觉敏感度。

地形熵可以用来描述地形的起伏的复杂程度。根据DEM数据所提供的地形块的高程值来确定此地形块的地形熵。设R(i)为i点的高程数据, 前提假定地形高度为正值R(i)>0,M为地块所包含的数据点总数量。由此定义地形熵Hf[7]

104135468.jpg(1)

如图3所示,地形顶点高度差为简化运算式(1)利用泰勒级数展开的:

104135245.jpg(2)

地形熵反映了该地形所有的信息量的大小即该地形块的高低起伏的复杂程度,如果地块高程值变化越急剧,代表地块包含的信息量越丰富,则计算的得到的Hf值越小。

3.2 视点相关

在对地形进行渲染时选择使用不同分辨率的纹理,对于观察者来说,离视点近的区域使用分辨率较高的纹理,使离观察者近的地形表现的更加精细,离视点远的区域就可以使用分辨率较低的纹理。

104133115.jpg

图3 透视变换的基本原理

图3描述了在一定的观察条件下,几何模型空间的某一不同尺度大小的变化值在投影面上的投影值。根据透视投影的原理可以知道:当该变化值的方向与投影面的方向平行时,该变化值经过投影变换后,在投影面上的投影值最大[2,9,10]。假设观察者到变化位置的距离为d,该变化位置与视线范围的张角的大小为α,其中假设变化值大小为l,则在该观察条件下,l在投影面上的投影值τ为:

104142277.jpg(3)

由(3)式可知,对于一条特定的边,视点到模型的距离d越大,τ也就越小。根据纹理映射的机制,当采用一定分辨率的影像对一尺寸范围确定的区域表面进行映射时,由于其单位像素的大小对应于该几何区域上一定的几何长度大小。因此综合考虑地形的地形熵和视点相关这两个因素的影响,定义误差的判别准则[8]为:

104143355.jpg (4)

e为节点粗糙度因子,c为一可变系数,可以通过它对系统性能进行调整,λ为物体空间中的单位长度在投影平面上的像素数。

3.3 人眼所能辨别的层次细节数

人眼对于同一个场景中的不同分辨率细节的辨认程度一般为4-8级,当场景中的层次细节数超过一定级别时,人眼并不能完全分辨;并且为了在实时漫游场景时能保持画面的流畅,及保证一定的帧率,系统限制了每帧所能更新的纹理数据的最大值,当所需置换的纹理数据超过这一最大值时,系统将不无限量置换新的纹理数据而是用上一帧的纹理数据显示。

综合以上纹理层次细节模型的相关影响因素,本文提出了一个新的纹理细节层次选择计算公式,定义为纹理层次细节模型判定因子:

104143805.jpg (5)

K为当前菱形纹理单元包含的三角形个数,即两个正二等边三角形中三角形数目之和,C1,C2为可变系数,可以通过它对系统性能进行调整,β为系统设定的场景中纹理多分辨率模型的最大层次数,λ为物体空间中的单位长度在投影平面上的像素数。在实际三维场景绘制中,由于d很大,使得α相对很小,为了方便计算,本文将公式可简化为式(6):

104143279.jpg(6)

当pd>1时,纹理块需细分生成高一级纹理层次细节模型,当pd<1时,此时纹理数据已满足系统所需的分辨率层次,不需再分。

完成上述步骤,即可对场景进行渲染。

本文将地形熵作为地形粗糙度的衡量因子,以整个单位地形块代替每个节点为单位作为地形粗糙度因子进行计算,并将人眼所能分辨的总的场景细节层次数和系统每帧所能置换的三角型总数加入纹理细节层次模型的计算公式,使得系统每帧所需置换纹理数据更少,帧间画面流畅并能保证一定的帧率。地形纹理每帧实时无缝生成,避免了不同分辨率纹理之间的复杂纹理混合运算;以系统设定的最小纹理块代替单一顶点作为系统处理的最小纹理单元,将连续几帧均要用到的顶点存于顶点数组,减少了帧间的繁琐数据传输,同时缓解了大规模纹理数据传输的带宽瓶颈。

4 试验结果

根据上述方法,本文VC++6.0环境下,以OpenGL作为三维图形绘制工具,以一幅8192×8192影像纹理作研究,设定最小分割纹理单元为128×128,本文所使用的微机环境为:Intel P4 3.40G,1G DRAM,nVIDIA GeForce 6600 显卡;Windows XP操作系统的环境下进行测试。实验效果如图4。图4中左图是没有使用纹理层次细节的场景,总的纹理数据量为196.6MB。图4中右图为使用基于视点的三维纹理层次细节的场景,总的纹理数据量为96.3MB。在质量没有明显改变的情况下,数据量减少了一半以上,实时漫游情况下可以维持平均约40的帧率。

104156757.jpg

图4 实验效果图

实践证明:该方法能够有效地调度和使用纹理数据,在保证帧间连贯画面流畅情况下减少了渲染所需纹理数据数,满足真实感地形实时绘制中对大规模纹理数据及一定帧率的要求。

为达到三维地形场景的真实感实时绘制时绘制的逼真度及更高帧率的要求,需要更有效的纹理数据管理跟调度,因此高效的空间索引机制和纹理缓存机制以及纹理的压缩存储是本文的下一步研究工作的重点。

参考文献

[1] Williams, Lance. Pyramidal Parametrics. In Peter Tanner,editor,Computer Graphics (SIGGRAPH 83 Conference Proceedings),ACM SIGGRAPH,1983 vol.17, pp:1-11

[2] Tanner, C. C., Migdal, C. J., and Jones, M. T. The Clipmap:A Virtual Mipmap.In Proceedings of SIGGRAPH’1998,PP:151-159

[3]Döllner,J.,Baumman,K.,Hinrichs,K..Texturing Techniques for Terrain Visualization. Proceedings of the IEEE Visualization 2000, pp:227-234

[4] Brodersen A. Real-Time Visuaiization of Large Textured Terrains[C].In Proceedings of GRAPHITE 2005,pp:439-442

[5] Buchholz,H, Döllner,J. View-Dependent Rendering of Multiresolution Texture-Atlases. IEEE Publication Date:23-28 Oct.2005,PP:215-222

[6] L.M. Hwa, M.A. Duchaineau, and K.I.Joy.Adaptive 4-8 Texture Hierarchies.IEEE Publication Date:10-15 Oct.2004,pp:219-226

[7]王伟,谢燕武,李爱军. 一种改进的地形熵匹配导航算法[J].计算机仿真,2007,24(2):11-14

[8]谭兵,徐青,马东洋. 用约束四叉树实现地形的实时多分辨率绘制[J].计算机辅助设计与图形学学报,2003,15 (3):270-276

[9]唐泽圣.三维数据场可视化[M].北京:清华大学出版社,1999

[10] 万定生,龚汇丰.一种基于四叉树的大规模地形实时生成算法[J].计算机工程与应用,2005,41(33):186-188