为满足日益增长的计算机图形真实感的需要,几何模型变得越来越高度细节化。然而,无论采用传统的建模系统还是利用三维扫描系统得到的三维模型,其格网均十分复杂,不利于存储、传输和绘制。正如前一章已经介绍过,为解决此问题,网格模型简化技术和层次细节模型相继产生。网格模型简化技术是人们直接利用简化后的近似网格模型代替初始网格模型进行各种操作。然而,简化网格模型毕竟降低了初始模型的精确度。层次细节模型则是根据不同的近似程度生成一组简化网格模型,再根据不同的条件确定使用其中的一个简化网格模型代替初始网格模型。然而,为了保证层次细节模型之间的过渡有一定的连续性,常常需要非常多的层次,这样就会产生大量的数据,同样难以有效地进行存储、传输。
为了解决上述问题,可以对格网采用实时动态简化方法。当观察者离物体较远或物体在快速运动时,只看到物体的大概轮廓,此时从原始数据中抽取关键的近似信息,构成一个粗糙格网表示该物体即可;当观察者离物体越来越近或物体运动越来越慢时,实时的把该物体更细节的信息逐渐的、连续的添加到原粗糙格网上,直至恢复物体的全部信息。在本章研究中,目标就是在模型的简化过程中,可以实时地得到具有所需要的分辨率的近似模型,并保证分辨率的连续性,防止模型变化尺度过大,出现跳跃现象。为实现动态简化,拟采用递进格网表示方法。递进格网法以边折叠和点分裂为基本操作,记录了模型简化过程中原顶点和新顶点位置以及顶点间的连接关系的变动信息,从而生成一个由原始模型的最简化模型和一系列简化信息组成的递进格网表示模式。动态简化中采用的基本边折叠操作是上一章介绍的二次误差度量简化方法。算法动态性体现在与视点细化准则结合上,最后形成视点相关的有选择性累进网格,实现实时图形绘制。
4.1动态简化方法的相关工作
动态简化的基本思想是:在模型的化简过程中,可以实时地得到具有所需要的分辨率的近似模型。每个模型的简化程度由模型之外的因素决定,例如离视点的距离。动态简化一般是通过一些简单的局部的几何变换来实现,从而生成具有连续的不同分辨率的近似模型。动态简化是静态简化的延续,它的很多基本操作采用的是静态简化的方法。
应用系统中直接采用复杂格网或相当多的细节层次,在存储、传输、和渲染等方面是代价昂贵的。采用动态简化方法,能解决由此引起的一系列实际问题,比如细节层次之间的过渡、递进传输和有选择性简化等。在细节层次之间的过渡是指,为进一步提高渲染性能,通常定义一个模型在不同细节层次的几个版本。当观察者靠近物体时候,使用一个比较高的细节模型;当远离物体时,用一个粗糙模型来取代候。由于格网层次之间的转换,可能会导致视觉上的跳跃,为克服此问题,应该在不同分辨率的格网之间构建平滑的视觉过渡。递进传输是指,当格网在网络上传输时候,先以较少的时间传输一个简化网格模型,并让用户可以浏览,随着数据的继续传输,再不断细化该简化网格模型直至完成整个模型的传输。有选择性简化表示去调整某些有选择性区域的细节层度,而不是整个模型。比如说,当用户在地形上飞翔时,当靠近观察者时候,在视域范围之内的地形格网需要高细节的,范围之外的地形只需要低细节格网,甚至不用调度数据进入内存。
Hoppe(1996)提出的递进格网法通常被认为是第一个动态算法。递进格网法以边折叠和点分裂为基本操作,记录了模型简化过程中原顶点和新顶点位置以及顶点间的连接关系的变动信息,从而生成了一个由原始模型的最简化模型和一系列简化信息组成的递进格网表示模式,递进格网可以把任意拓扑网格表示为一种高效、无损且具有连续分辨率的编码。在实时绘制时,通过逆向跟踪简化信息序列,对每条简化信息执行点分裂逆操作,可以逐步恢复所删除的模型细节,实时得到原始模型的连续精度的简化模型,由此实现细节层次模型的平滑过渡,这在很大程度上克服了以往模型的平滑过渡方面的不足,可以支持不同细节的网格模型的实时生成。
这种方法不仅能够提供一组连续的多细节层次模型,支持递进方式传输,还提供一种有效的网格压缩方式。虽然这种递进网格在不同方面存在着局限性,比如,由于边删除的先后顺序与边的几何拓扑信息无关,因此在模型恢复的过程中必须进行逐一判断,速度较慢。但是它已经被应用于多细节层次领域的进一步研究中。
在其它基于视点的动态简化方法中,夏等(1997)使用顶点分裂与边折叠变化来建立一简化层级,进行实时有选择性简化。他们的方法是预先计算一给定格网
另外一个相关工作是,David Luebke等(1996)采用八叉树将空间进行划分,当一个八叉树节点所对应空间的体积投影到屏幕上小于指定范围时,就将这个节点中的所有顶点折叠在一起,并删除所有的退化多边形。
Eck参数化算法采用分片技术(Partition)和调和映射技术(Harmonic Map)。如图4.1所示,该重采样算法由3 步构成:(1)分片。输入网格的所有三角形被分成一组类似于Voronoi 的片(图4.1 (b)),这个Voronoi 图的对偶图构成了输入网格的一个类似Delaunay 的初始剖分,输入网格因此被剖分成一组三角形区域(图4.1 (c)),所有三角区域对应的三角形构成了原始网格模型的基网格(图4.1 (e),即参数域)。(2)参数化。在边界约束情况下,使用调和映射把每个三角形区域内的所有顶点嵌入对应的三角形内部,生成初始参数化。通过在参数域内拉直相邻两个三角形区域的公共边得到改善的Delaunay 剖分(图4.1 (d))和相应的参数化。(3)重采样。对基网格实行一变四的子分操作,并用参数化的逆映射把新生成的顶点映射到原始网格模型表面得到具有子分连接性的网格(图4.1 (f))。最后,由于网格模型具有子分连接性,容易生成不同分辨率下格网。
事实上,MRA方法表示的格网和递进格网有很多相似之处,因为两者都存储一个简单的基础格网和一个细节记录流,并且都能产生一个连续分辨率的格网表达形式。不同地方是MRA方法要求细节带有子分连接性,结果是,任意一个初始格网
国内研究也多集中在视点相关的动态简化算法方面,特别是在大数据量地形实时可视化应用领域。
吴恩华等(2002)提出的层次可见性与层次细节地表模型相结合的快速绘制方法,旨在利用地表模型所具有的水平线(horizon)特性在预处理中为地表多分辨率块模型建立相应的层次“块”可见性结构,快速判定地形块相对于当前视点的可见性,以减少多分辨率模型中模型细节的处理和绘制三角形的数目。王宏武等(2000)采用四叉树来构造多分辨率地形模型,并且解决了模型带来的裂缝问题。周昆(2000)则将视点无关与视点相关结合起来,生成混合多细节层次模型。赵友兵等(2002)提出的一种大规模地形的快速漫游算法,将视见体投影到平面上,根据投影三角形对分块地形数据进行类似于光栅扫描的裁减。采用基于三角形的四叉分割,减少了操作的数目和重复判断的数量。
对于规则格网地形,可以采用四叉树或二叉树等层次结构比较容易实现地形LOD模型的动态生成和显示;而对地形不规则三角网(TIN)结构,由于它本身数据结构的复杂性,使得其动态LOD地形模型建立和实时连续显示比较困难。对于此问题,许妙忠等(2003)提出一个基于点删除的建立连续LOD模型的方法。
4.2动态简化格网建立
4.2.1递进格网表示方法
这样,通过运用n个依照一定顺序排列的边折叠变换,一个初始格网
考虑到不同的速度和准确的平衡,有多种方法选择边折叠的顺序。在极端情况下,一种快速的方法是随机选择边折叠。更复杂的方法是使用度量方法来提高边选择的策略,比如顶点到平面距离的度量。
Hoppe提出的基于能量优化的边折叠算法的基本思想是:以边折叠作为网格简化的基本操作,为控制递进网格的质量,从初始网格表面采样点集以记录初始网格的信息,根据与简化网格之间的距离计算能量函,该能量函数表示了简化网格与初始网格的匹配程度,利用能量最小原理,指导网格简化操作的进行。这种方法的主要缺点是:算法实现复杂,计算量大,速度慢。
基于上述讨论,本章在进行基于边折叠的网格简化时,不是用能量优化方法,而是使用上一章讨论的受约束二次误差度量方法。同时,引入了二次误差的度量队列,能有效地控制边折叠的次序,避免局部区域的过度简化和另一些区域的简化不够,大大增强了递进网格的质量。
递进网格模型的恢复就是在初始简化网格模型的基础上,按照细化序列进行点分裂的操作。每一步点分裂操作如图4.6所示:
PM创建是一预处理过程,因此能被离线处理。
4.3 视点相关的实时选择性格网细化
4.3.1视点相关算法特点
上面介绍的递进格网表示方法获得了一个连续的格网序列,能建立不同细节层次的模型版本,但还需要联系视点位置,才能发挥更大作用。比如,相当多的面位于平截头体之外,它们没有对最终渲染出来的图像做出贡献。若这些面在渲染流水线中早早被剔除的话,会降低资源消耗。在平截头体之内,模型的某些区域会比其他地方离观察者更近,而视觉无关的LOD格网不能提供适当的细节层次模型。相同的,通常没有必要去渲染那些背向观察者的面。这些面在流水线的像素处理阶段之前通过使用背面检测会被剔除,但若在顶点处理阶段之前能被剔除,将降低流水线负担。
通过将场景数据组织表示为一四叉树或八叉树的层次结构,上面提出的有些问题能被解决。比如,通过使用层级剔除,能有效的移走平截头体外的部分场景。然而,在不规则格网表面上应用这种层次结构是比价困难的。比如说,如果地形格网被分成块,并且这些块在不同细节层次被渲染,那么将不得不解决这些块之间的裂缝问题。
下面将依赖于随时改变的视点参数,介绍一个实时有选择性细化递进格网框架。
4.3.2视点相关细化准则
首先介绍Hoppe(1996)描述的三个视点相关的简化规则:视觉平截头体,屏幕空间误差和背面剔除。
4.3.3选择性细化先决条件
选择性细化表示调整某些目标区域的细节层度,而不是整个场景环境或整个大的三维模型。比如说,当用户在地形上飞翔时,当靠近观察者时候,在视域范围之内的地形格网需要高细节的,范围之外的地形只需要低细节格网。
夏提出的方案类似于四叉树结构下的方案。后来Varshney等提出的方案有相同的局限性,因为它只是改变了夏的方案为一种隐含表达的方式。Hoppe提出的保留邻接四个面的拓扑信息方案有更大的灵活性,但仍然依赖于四个面是否存在于当前格网中的活动性。这种条件可能会产生一个长的依赖链条。比如,在最坏情况下,为满足点分裂变换条件,当前格网可能会细化到原始格网。
与以前方案不同,下面将介绍存储原始格网
4.3.4递进格网过渡空间
4.3.5 选择性细化算法描述
同上一节介绍的一样,为建立递进格网,首先通过一系列边折叠操作将一原始格网简化为基础格网。类似于小波分析,每一条边折叠操作保留着必要的信息,便于恢复到原始格网,这个处理分析过程通常离线处理,称作预处理阶段。在应用启动后,给定基础格网和细节集合,通过一系列的顶点分裂操作,能获得连续序列的细节层次格网。再进一步,通过运用选择出来的点分裂变换集合,依赖于一定准则比如视点参数,能产生有选择性细化格网。此时,对递进格网的实时处理以建立有选择性细化格网称作运行阶段。
4.3.6实验结果分析
通过数据统计,现提出的方案能以较小数量的顶点与三角面个数来产生有选择性细化格网。这结果来源于应用视觉相关准则,剔除了不必要的绘制细节,同时加强了目标区域的细节程度,另外由于围绕被选择顶点没有产生额外的顶点分裂操作,也减少了需要绘制的三角面。
从三维模型成像图(图4.13,图4.14)可以看到,高细节与低细节区域泾渭分明,达到了有选择性细化目标。应用二次误差度量方法产生的简化格网在外观上保持了原始模型的特征。由于应用了二次误差度量的边折叠算法以及渲染面数的减少,提高了渲染速度(见表4.1),在相应调整模型的屏幕空间几何误差后,能达到实时显示要求。现在实验是把整个模型置于平截头体之内,若应用到更大场景环境中,相比于整个场景只是很小一部分需要高细节绘制时,现完成方案的优势将更加明显。
4.4 本章小结
静态网格表示方法有几个缺点:首先,数据量庞大,不易于存储、传输和绘制,尤其在交互式可视化和虚拟现实中,要求图形生成具有实时性,过于庞大的网格显然是不适合的;其次,用这种表示法不易于建立光滑的多细节层次的近似模型。
本章应用递进网格表示方法来高效的存储网格信息,支持多细节层次场景的自动生成和光滑过渡,能获得快速可视化效果并支持递进传输。为进一步加速渲染,还进行了大数据量格网的局部自适应处理,即有选择性细化。实现了视点相关的有选择性格网,能显著提高目标区域细节,同时减少对最终图像贡献少或没有贡献区域的细节,有效降低了图形流水线的渲染负担。
在较早实现视点相关有选择性格网方法中,一条折叠边的邻接区域拓扑信息在预处理阶段被存储。仅当当前格网的顶点邻接区域配置符合存储的拓扑信息时,顶点分裂和边折叠变换在运行阶段才是有可能的。如果预备条件不满足,额外的点分裂或边折叠会递增的应用到邻接区域中,直到变换配置满足存储的拓扑信息。其局限性就是细化格网的分辨率会逐渐变化。而在引入的递进格网新可选择性细化方案中,进行点分裂或边折叠进行时,不用顾及邻接区域的配置,同时不需要引入额外的顶点分裂或边折叠变换。原因是使用界定面的概念为提出的方案提供了理论基础,它能列举和可视所有可能的有选择性格网集合。同时,使用了新的点分裂和边折叠定义,使得遍历整个集合空间成为可能。