基于拓扑手术的几何压缩.doc_第1页
基于拓扑手术的几何压缩.doc_第2页
基于拓扑手术的几何压缩.doc_第3页
基于拓扑手术的几何压缩.doc_第4页
基于拓扑手术的几何压缩.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于拓扑手术的几何压缩GABRIEL TAUBIN JAREK ROSSIGNAC 摘要 来源于主要工业部门的复杂的三维数据变得日益丰富而重要,办公和私人所使用的交互式三维渲染随处可以得到,互联网上传送和共享的三维数据正以几何级数递增,所有这些应用极大的刺激了对高效的三维几何压缩技术的需求。三维几何压缩技术在减少三维模型通过数字传送通道的传输时间和减少磁盘空间存储量方面具有重要意义。因为以前的三维模型是通过多面体来表示的,多面体模型在渲染时通常会对表面模型进行三角面片化,所以本篇文章介绍一种新的复杂三角面片模型的压缩表示方法简单而高效的压缩与解压缩算法。在这个方案中,顶点的位置坐标在给定的精度内进行量化,然后构造一颗顶点跨度树,通过树中的2,3或者4个先前的顶点来预测当前顶点的位置坐标,然后对校正的顶点坐标进行熵编码。法线,颜色,纹理坐标等属性信息也是使用相同的方法进行压缩。连接信息的编码属于无损压缩,平均每个三角形小于两比特。顶点跨度树和少量的跳跃边把模型分离成一个简单的多边形。一颗三角形跨度树和一系列匹配位用来对三角化的多边形编码。我们的方法在Michael Deering的研究成果之上进行改进,充分利用在顶点跨度树中若干祖先顶点的几何相近性,保持了连接信息的无损压缩,避免了顶点的重复,连接信息仅使用了小于三倍的比特位。然而由于解压缩需要对所有顶点随机存储,此方法硬件渲染时必须修改以适应有限的内存。最后,我们演示了一些达到两个数量级压缩效果的VRML模型的实现结果。1 引言尽管在机械CAD和动画方面模型系统正在扩展它们的几何领域向自由曲面方向发展,多面体模型仍然是制造,建筑,地理信息系统,地球科学和娱乐行业所使用的主流三维表示方法。多面体模型在硬件辅助渲染方面尤位有效,它对于视频游戏,虚拟现实,飞行模拟和涉及复杂CAD模型的电子模型试验应用十分重要。相对于图像和视频压缩而言,无论是研究机构还是三维数据交换标准委员会都很少关注三维形状的压缩问题。这种形式很可能因下述原因而迅速改变。(1) 机械CAD模型复杂性的爆炸式增长大大增加了处理这些模型所需的内存和辅助存储的成本。(2) 协同设计,游戏,快速成型,虚拟交互中,三维模型在网络中的传输被可得到的有限带宽所限制。(3) 高性能硬件适配器的图形性能由于内存不足以存储整个模型或者由于传输瓶颈问题而被大大制约。由于任意的多边形面片可以简单高效的三角面片化,此篇文章只进行三角网格的解释。一个三角形网格被它的顶点(位置),三角形之间的连接关系(连接信息),颜色,法线及纹理信息(属性)(属性信息不影响三维几何信息,但会对渲染方式产生影响)所定义。本篇所介绍的压缩格式和压缩与解压缩算法是在Deering先前所作的工作基础之上展开的,具体如下:(1) 连接信息的无损编码和高压缩比(平均每个三角形小于两个比特);图1是一个例子。(2) 更好的关于坐标压缩的顶点组织形式。(3) 对任意拓扑结构的多边形模型,为建立接近最优的压缩提供高效率的方法。(4) 压缩和解压缩技术产生很长的三角形条带,因此很适合当前的高端图形适配器。2 相关的工作近年来被广泛研究的三维压缩方法可以分为三类:多面体简化,位置和属性压缩,和连接信息的编码。2.1 多面体简化多面体简化技术通过改变模型的连接信息来减少网格中的顶点数目,同时尽可能的调整其余顶点的位置以使由于简化而形成的网格误差为最小。这些技术集中于促使过采样网格中图形或数据的减少来达到产生多细节层次(LOD)的目的。尽管这些技术被认为是有损压缩,它们不适合应用于要求有精确连接信息的模型。实际上简化技术和这里描述的压缩技术是交叉的,因为几何压缩可以应用于每一个细节层次(LOD)。2.2 位置和属性的压缩无损或有损压缩方法用来减少和顶点位置相关的几何数据存储量(必须),和可能的法线,颜色,和纹理坐标信息。应用通常目的的数据压缩算法于几何数据流会产生非最佳的解决方法。我们构建Deering的方法,标准化几何数据在一个单位立法体内,圆整顶点坐标为固定长度的整数。圆整的效果决定了损失的信息量。我们把顶点空间组织成一颗跨度树,使用几何预测法用小的校正差值来代替位置和属性坐标,校正差值可以用更少的位数进行无损编码,然后使用标准的无损熵编码技术进一步压缩。由大量小三角形组成的网格在量化过程中所形成的人工痕迹可以通过网格平滑方法来减少。2.3 连接信息编码在许多流行的多面体或三角形网格的3D表示中,连接信息编码通常是试图减少内在的冗余,这是主要的焦点也是本篇主要的贡献。考虑一个V个顶点,T个三角形的三角形网格(对于一个简单拓扑结构的网格,三角形的个数大约是顶点个数的两倍)假定顶点以一个适当的顺序排列,定义这些顶点所支持的T个三角形最少需要多少个比特位呢?从一个极端考虑,如果顶点总是被组织成一个标准的2维网格,三角形网格可以完全被网格的行和列数所定义。正规的网格可以适用于GIS中的梯田模型和用于渲染统一的镶嵌的非裁减矩形参数补块,然而它们不适用于CAD,娱乐和其它应用中更通用的3D形状。从另一个极端考虑,一个三角形可以被三个顶点引用所表示(指针或者顶点位置数组的索引),这种解决方案不会对网格施加任何拓扑限制,但是每个三角形需要存储三个地址(大概每个顶点六个地址),即使限制模型小于1024个顶点,这种方案仅连接信息每个顶点就将消耗60个比特位。在图形API中使用的三角形条带,例如OpenGL 提供了一个折中方案,一个新顶点和先前的两个顶点组合隐式地在当前的条带中定义了一个新三角形。三角形条带仅仅当可以建立长三角形条带时才可以取得预期的效果,而长三角形条带问题是一个具有挑战性的计算几何问题。近一步讲,由于一个顶点属于相同三角形条带或者两个不同的条带,平均被使用两次,OpenGL所使用的三角形条带需要传送大多数顶点多次,交换操作的缺乏进一步增加了这种冗余。三角形条带作为一种压缩技术的应用(所有顶点的位置在解压缩过程中可以随机访问得到),每个三角形仍然需要存储一个顶点引用,每个条带需要两个顶点引用,而且需要保存条带的数量,长度信息和每个三角形的附加信息位,这个信息位用来标识先前三角形的哪一个公共边用来作为下一个三角形的基边(这个标识位相当于GL中的交换操作)。Deering提出使用一个栈缓冲存储先前使用的16个顶点取代对模型所有顶点的随机访问,这对存贮器非常有限的适配器是一个很合适的解决方法。Deering对如何使用下一个顶点提供了更通用的控制,以及允许栈中当前顶点的短时间包括和栈缓冲中16个顶点任一个的重新使用,这使三角形条带的语义通用化。这种连接信息的存储成本是:每顶点一比特位,表明是否把该顶点推入栈缓冲中;每三角形两比特位,表明如何控制当前的条带;每三角形一比特位,表明是读入一个新顶点,还是从栈缓冲中读入一个顶点;以及四个比特位的地址,每次当旧顶点被使用时用来从栈缓冲中选择顶点。假定一个顶点仅仅被使用一次,则连接信息编码的总代价是:14比特/顶点加2+1比特/三角形。假定每顶点两个三角形,则总的代价位大概为11比特/顶点(当然,其它通用目的的压缩方案可以被应用于产生比特流,但是上述情况是对所有种类几何压缩的讨论,因此忽略了这种相对的分析)。就我们所知,使用Deering的通用三角形网格目前还不能系统的创建好的遍历通用网格的算法。不成熟的遍历网格方法会产生许多孤立的三角形或者小的分支,这意味着顶点中的重要部分将会被传送一次以上,因此增加了每个三角形的比特位数。在以上假设的基础之上,所有的顶点坐标解压缩时可以随机访问得到,本篇所提供的解决方案比Deering的方法多产生两到三倍的压缩比,并且为计算接近最优的连接信息编码提供了实践性和有效的算法。做为副产品,解压缩算法建立了非常长的三角性条带,这适合于与当前的3D渲染适配器进行最优化交流。而且,我们的压缩算法保持了网格的原始连接,而Deering的方法经常做不到这一点,我们还使用了相近性组织顶点,这可以进一步对位置和属性信息进行压缩。3 综述三角形网格中的三角形可以形成一个或多个连接的流形组件。在我们的压缩方案中,每一个连接组件的连接信息首先通过在组件的顶点和边图中构造一个顶点跨度树,来进行编码。由于在顶点跨度树中的相近性经常意味着对应顶点的几何相近性,我们可以使用树中的祖先来预测顶点的位置,因此仅仅需要对预测值和实际顶点位置值之间的差值进行编码。当顶点坐标被量化(例如,在一个定点表示方案中被截断到一个最接近的数字),这些校正的向量通常比绝对的位置有更小的广度,因此可以使用更少的比特位来编码。然后校正的差值使用熵编码进行压缩,例如在JPEG/MPEC标准中使用的哈夫曼编码或算术编码。为了对连接信息编码,网格首先沿着称做切割边的边子集进行切割,这个子集包括顶点跨度树的所有边,也可以有少量的不属于顶点跨度树的切割边。例如,对一个简单网格(球面同构体网格)如图二所示,我们证明除顶点跨度树的边以外,没有其它切割边。顶点跨度树的分支节点和叶子节点被顶点行程(仅有一个孩子的若干相连顶点集)相互连接。我们通过对每一个顶点行程编码来压缩顶点跨度树的表示,编码由长度加两比特信息位组成,信息位可以正确的俘获顶点跨度树的拓扑结构。为了提高压缩率,我们尽力构造具有最小行程数量的顶点跨度树。这种表示仅能俘获顶点跨度树的结构,顶点跨度树的节点和顶点位置的对应关系通过存储的每一个顶点位置的压缩编码(例如校正差值熵编码)来建立,而顶点位置的存储顺序必须和顶点跨度树中相应节点的先序遍历(深度优先)顺序相一致。当作为拓扑边界处理,切割边把网格组织成一系列被分支三角形相连的三角形行程。每一个分支三角形连接三个行程(我们把相近的两个分支三角形作为长度为一的三角形行程)。在行程或限制的分支三角形内连接三角形的边称作匹配边,我们证明了简单网格的一条边(球面同构体的网格)不是匹配边就是顶点跨度树的边。图的顶点对应于三角形、图的边对应于匹配边,这样的一张图形成了网格三角形的一颗二叉跨度树。它是沿顶点跨度树进行切割产生的网格对偶图,我们采用和顶点跨度树相同的编码方式对三角形跨度树编码,然而由于三角形树是二叉树,我们仅需存储每一个三角形的行程长度加一个比特信息位。这两颗树和压缩的顶点位置联合起来可以恢复每一个三角形行程的长度和边界以及封闭每一个三角形的顶点。解压缩的第一步是由复原程序建立一个顶点索引查询表,这个表反映了顶点沿网格(由切割边产生的网格)的边界环出现的顺序。图三演示了这个边界的形成,为了直观起见,人为的扩大了切割边产生的拓扑连接性并且使边界环所包围的三角化的多边形在平面内显示。这个切割和在平面内显示的过程和剥柚子皮的过程类似,所有皮会保持连接性。显而易见,不同的切割策略产生不同行程数目的三角形树,我们研究了一种切割策略似乎可以有效的把三角形和顶点行程的数目减小到最少。对应于三角形树从上到下的遍历顺序遍历一个三角形行程可以定义左右边界。因为每一个三角形行程的左右边界形成了边界环的连接分支,如果我们知道两个起始顶点和沿行程左右边界的顶点数目,就可以复原每个行程的边界。在三角形行程中,每个当前的匹配边和它先前的匹配边共享一个顶点,这个共享的顶点可能位于左边界或右边界上,每个匹配边使用一个比特位来对正确的边编码,这些比特位按照解压缩算法中匹配边被访问的顺序串行化,这就形成了我们称作的左或右步骤中的匹配模式。三角形跨度树表示的一个入口表明了在一个行程中匹配边的数量N,然后是三角形行程左右两边界的总顶点数目。匹配模式中的0表明了左边界顶点的数目,相应的1表明了右边界顶点的数目。给出边界环查询表中的两个索引(一个是左边界的起始点,另一个是右边界的起始点),我们的解压缩算法接下来使用匹配模式的N-1个比特位为这个行程建立一个三角形条带。在行程的末端,我们可能遇到三角形跨度树的一个叶子或者是一个分支三角形。在后面一种情况,行程的最后匹配边构成邻接分支三角形的基。分支三角形的第三个顶点称作Y顶点,在边界环中相应的索引不是按我们的压缩格式那样显式的存储,而是在解压缩预处理步骤中,以相对于父亲三角形行程左边界最后一个顶点的相对位置的形式存储在查询表中。解压缩算法将以递归的方式访问分支三角形的两个边所连接的两个行程,直到三角形跨度树遍历结束并且所有的三角形被复原。沿着先序遍历的连接路径联结遇到的三角形可以建立长三角形条带,这些路径以根或者一个分支节点为始点,在相应分支的最左叶子处结束。法线、颜色、和材质映射坐标也可以和三角化的模型联系起来。这些被模型的顶点所列出,主要是出于渲染的目的。但是在不同的三角形中每一个顶点的使用可能是不同的。在第六部分我们将演示跨度树的压缩表示对可以用来压缩法线、颜色、和纹理映射坐标的三角形顶点有一个隐式的顺序。4简单网格(略)5通用网格(略)6属性信息(略)7实现结果(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论