一种基于特征保留的三维模型递进传输方法

文档序号:6610134阅读:212来源:国知局
专利名称:一种基于特征保留的三维模型递进传输方法
技术领域
本发明涉及到三维模型简化、几何压缩编码以及递进传输等方面的技术领域,特别是一种保留特征的三维模型递进传输方法,可应用于多种具有复杂纹理和结构特征的三维模型处理和网络发布。此外,也应用于数字博物馆中珍贵文物的网络发布。

背景技术
在计算机图形学中,一般使用三角形网格描述复杂的三维形体。随着三维数据捕获技术的不断进步,网格的数据量会非常庞大,这给三维模型的存储、传输和绘制都带来许多困难。数字博物馆中包含了大量的三维模型需要在网上展示,最基本的如单个模型展品的传输,复杂的如大型场景的实时漫游,都需要解决网络传输的瓶颈限制。
传统的单分辨率模型的网络传输采取先下载后显示(Download-and-Display)模式,即将三维模型的所有相关数据都下载到客户端之后再显示。这种方式的不足之处在于用户等待时间太长。对此的改进是由Hoppe提出的递进网格方法(参见Hoppe H.Progressive Meshes.ACMComputer Graphics,1996,30(1)99-108),即首先采用顶点删除(参见SchroederW.Decimation of Triangle Meshes.Computer Graphics,1992,26(2)65-70)、二次误差(参见Garland M.Surface Simplification usingQuadric Error Metrics.Computer Graphics,1997,31(3)209-216)等模型简化算法来得到多分辨率模型,并在简化过程中记录每一步操作,从而将原始网格模型分解成一个粗糙的基网格和一系列可对基网格进行逆向恢复的细节优化信息;在传输过程中,首先传送基网格到客户端并显示,然后再逐渐的传输细节优化信息,对最初的粗糙模型进行细化;这样一种无损的模型重构和编码方法,能够在很短的时间内给用户响应,并且可以随时停止传输,这是一种边下载边显示(Download-while-Display)模式的递进传输方法。
对于递进网格方法,之后也有了很多方法进行改进,然而,这些方法大多是针对比较规整、不含属性的几何模型来进行处理的,并不涉及纹理等属性信息,而且不支持三维场景。在实际应用领域,无论是单个模型还是三维场景,不仅含有几何、拓扑信息,而且常常包含颜色、纹理等属性,并且不可避免地存在边界和孔洞,因而需要采用合适的方法,在简化的同时保留这些特征信息。此外,许多方法都是仅仅利用模型简化来得到递进网格文件,并没有再对模型数据进行进一步的压缩,如果能将递进网格和压缩编码结合起来,重新构造模型文件,将更有利于减小模型数据量,提高模型传输浏览的实时响应。


发明内容
本发明的技术解决问题克服现有技术的不足,提供一种基于特征保留的三维模型递进传输方法,该方法基于特征保留,即在处理过程中保持原始模型拓扑性质及纹理或颜色属性特征,且对模型真实感保持性高,对网络带宽和客户端机器性能要求低,并支持三维场景的递进传输。
本发明的技术解决方案一种基于特征保留的三维模型递进传输方法,其特征在于包括下列步骤 (1)对原始网格模型进行保留特征的简化,形成粗糙基网格; (2)对基网格实施八叉树压缩编码,形成递进网格文件; (3)采用Browser/Server结构下八叉树解码-递进网格传输的递进传输模式; (4)在上述步骤的基础上采用面向对象的视点相关传输策略传输三维场景。
在简化中采用了保留拓扑边界及纹理或颜色属性的三角形折叠方法,主要操作步骤为 (1)对原始三角形网格进行分类边界三角形、角点三角形、内部三角形、特征三角形; (2)根据三角形的分类,采用不同的误差度量方法 a.对于内部三角形,为每个三角形Ti配备一个4×4的误差矩阵Qi,并假设其折叠后的新点为vi,定义三角形的折叠误差为通过使误差最小得到vi位置; b.对于角点三角形,限定其折叠后的新点vi为原边界上的一个顶点,采用与步骤a相同的方法计算折叠误差; c.对于边界三角形和特征三角形,置其折叠误差为最大值。
(3)得到所有三角形的折叠误差之后选择误差最小的三角形执行折叠操作。
所述步骤(3)中在传输的过程中采用几何压缩解码和递进网格结合的方式,步骤为 (1)在传输起始阶段,采用八叉树广度优先遍历的解码方式,直至基网格数据传输完毕; (2)采用递进网格传输方式保持较高相似度下模型精度的连续提升。
所述步骤(4)中对于三维场景采用面向对象的视点相关传输策略的步骤为 (1)为场景中每个对象构建一个单独的数据流,对每个数据流都采用前述八叉树解码-递进网格传输的递进传输模式; (2)在客户端设置下载、分析、绘图线程,进行同步控制,保证对象的并行传输; (3)在客户端计算视点信息,并根据视锥可见性判断当前需要传输的对象; (4)服务器接收客户端传送的所需对象标志,发送相应的优化信息。
本发明与现有的发布方法相比具有以下优点 (1)保留了原始模型拓扑性质及纹理/颜色属性 传统的方法大多是针对比较规整、不含属性的几何模型来进行处理的;而在实际应用领域,三维数据不仅含有几何、拓扑信息,而且常常包含颜色、纹理等属性,并且不可避免地存在边界和孔洞,这些信息对于保持模型的外观和真实感具有重要作用,必须在简化过程中加以保留。
本发明基于三角形折叠的方法,给出了一种结合属性的非封闭网格模型简化方法,不仅有效地控制了简化网格与原始网格之间的几何误差,而且较好地保留了三维模型的拓扑边界以及颜色、纹理、法矢量等属性,与传统方法相比,具有更大的适用范围和实用性。
此外,本发明的模型简化算法可以根据用户对几何/属性不同比重的保留需要指定模型简化的精确程度,对于一个几十万甚至上百万多边形的初始模型而言,当它简化99%之后,仍然可以保持较高的几何相似度和边界拓扑结构以及属性特征。
(2)对网络带宽和客户端机器性能要求灵活 传统的“先下载后显示”的三维传输模式,需要将三维模型的所有相关数据都下载到客户端之后再显示。因此它对网络带宽的要求很高,对于规模超过百万多边形的三维模型而言,这种模式根本无法应用;另外,不同客户端机器的图形处理性能不同,同一个模型,对于一些用户来说可能已经很难处理,但另一些用户可能还需要更高精度的效果。
近些年提出的远程渲染系统是一种Client/Server结构,客户端负责接受用户的输入并向服务器发送相应的渲染请求,高图形性能的服务器负责渲染并把得到的图像回传给发送请求的客户端进行显示,这样的系统虽然解决了客户端机器图形性能不足的问题,但由于将所有渲染工作全部放在服务器,所以限制了最多支持的用户数目。
本发明所采用的是基于Browser/Server结构的递进传输模式,只需要将一个数据量很小的粗糙的基网格传输到客户端,客户端收到基网格数据后立即可以显示,然后服务器持续发送对基网格的优化信息,客户端的显示效果也逐渐精细,直至传输完毕或达到用户对模型精细度的要求为止。这样,用户可以根据自己的需要和机器的性能选择相应精度的模型进行查看,并且可以随时中止或继续传输;由于将渲染任务分担给了每个客户端,因而可以最大限度的支持更多的用户。
(3)响应时间短、精细程度高 “先下载后显示”方法的最大问题在于响应时间过长,需要等待整个模型下载完毕之后才能开始显示。
递进网格传输作为一种细粒度的模型多分辨率划分方案,在得到基网格数据后,它可以马上开始对粗糙模型的渲染和细化过程,并且可以提供较其他方法更高精确度的模型;但其不足在于与非递进方法相比,需要消耗很长的时间来恢复出完整的最高分辨率模型;另外,传统的递进传输方法虽然在整体过程上是“边下载边显示”,但在开始阶段仍需等待基网格数据下载完毕之后才可以显示和递进更新,而对于精度较高且包含纹理/颜色等属性的三维模型,仅仅采用简化的办法处理后,其基网格数据量仍然较大,例如多边形面片数为1000000的三维模型简化99%之后的基网格文件大小仍有3MB之多,在带宽低的情况下,它所需要的下载时间也是不可容忍的。
基于树型结构的几何递进压缩是一种粗粒度的模型多分辨率划分方案,它可以从“零”开始显示模型,并随着恢复信息的传输和解码,成批更新模型的几何数据,从而最大限度的降低响应时间;由于分批有效地压缩,生成的模型文件数据量较小且传输总时间比递进网格方法缩短许多;但其不足是模型分辨率的提升不连续,存在跳变,且恢复过程中模型的精确度相对递进网格方法要低。
而本发明结合递进网格和几何压缩二者的优点,在网格简化的基础上对其基网格又进行了进一步的压缩编码,并采用八叉树广度优先遍历解码和递进网格传输相结合的恢复方案,在对响应时间要求高而对模型精确度要求不高的传输起始阶段,采用压缩解码传输方式,直至基网格数据传输完毕;之后采用递进网格传输方式,保持较高且连续的模型分辨率提升,以便用户随时中止,这样,就进一步缩短了响应时间。
(4)支持三维场景 三维模型包括对象模型和三维场景,三维场景是由不同的对象组成的,其中每个对象都是一个独立的形体或结构。传统的方法大多只针对对象模型进行处理,而不考虑三维场景。
而本发明将场景模型看作是若干对象模型的组合体,而对其中的每个对象进行拓扑边界完全保留的网格简化,从而达到对整个模型化简的目的。在传输恢复阶段,使用多数据流,将每个对象构成一个单独的数据流,并采用视点相关的传输策略,通过控制当前可见对象的传输,并保证所有对象处于统一的世界坐标系内,就可以恢复出完整的原始模型。



图1为本发明的系统实现流程; 图2为本发明对三维模型进行保留特征简化的实验结果; 图3为本发明的三维场景的视点相关传输框架; 图4为本发明对日月观音模型的进行递进传输的过程; 图5为本发明对包含25个兵马俑的三维场景进行视点相关解码传输的过程。

具体实施例方式 本发明包括模型简化、压缩编码、递进传输三个方面的内容,实现流程如图1所示。
1.三维模型简化 本发明采用基于二次误差的三角形折叠算法对三维模型进行简化,并在简化的同时保留模型的拓扑边界及属性特征。算法的基本操作是三角形折叠收缩,即通过对三角形Ti执行折叠操作,使它的三个顶点合并为一个顶点vi,从而简化了原来的网格。
算法首先将原始网格中所有三角形进行分类,划分原则如下 对于网格模型中的每一个三角形,如果它的某一条边只被一个三角形(即该三角形)所拥有,则该边为边界边,该三角形为边界三角形;对于非边界三角形,如果至少有一个顶点在边界边上,则该顶点为边界点,该三角形为角点三角形;如果三个顶点都不在边界边上,则该三角形为内部三角形。
对于包含颜色属性的模型,使用每个三角形三个顶点颜色值的平均值作为该三角形的等价颜色值,如果当前三角形与其周围邻接三角形颜色值的差超过预先指定的阈值τ,即 则标记该三角形为特征三角形,其中[rigibi]T、[rpgpbp]T分别为三角形Ti、Tp的颜色值,而阈值τ则可以根据用户对几何及属性特征保留程度的不同要求来选取,对属性细节要求越高,则τ值越小,反之则越大。
此外,对于纹理,也采取类似的办法进行处理;不同之处只是需要通过纹理坐标从纹理图像中获取相应顶点的颜色信息,再来计算该三角形的纹理等价颜色值。
之后,计算每个三角形的几何折叠误差 (1)对于原始网格中的每个内部三角形Ti,配备一个误差矩阵Qi,如果三角形Ti折叠为点vi=[xi yi zi1]T,则定义该三角形的折叠误差为新点到原三角形的所有邻接三角形平面的距离平方之和 这里p=[a b c d]T表示与三角形Ti邻接的三角形集合中每个三角形所在平面的平面方程ax+by+cz+d=0(其中a2+b2+c2=1)。于是上式给出的误差标准可以转换为下面的二次形式 其中Mp是4×4的对称矩阵,能够表示三角形网格中任一点到平面的二次距离 而误差矩阵Qi为所有邻接三角形的平面二次矩阵相加对于vi位置的选取,则通过计算使得ε(Ti)的值最小来得到。
(2)对于每个角点三角形,限定其折叠后的新点vi为原边界上的一个顶点,并通过计算折叠误差; (3)对于边界三角形和特征三角形,置其折叠误差为最大值。
在得到每个三角形的折叠误差之后,按最终的误差从小到大排列三角形,从三角形序列中选取折叠误差最小的三角形执行折叠操作,这样,就在保持几何相似度的前提下保证了边界三角形和特征三角形不参与折叠,从而保留了模型的边界和属性细节。
利用上述简化方法,将模型简化70%之后仍与原始模型非常接近,当简化90%以上时,所得的结果除了在几何相似性上可以接受外,仍可较好地保留原始模型的边界、轮廓及属性特征,如图2所示。
在模型简化的同时,把参与折叠消失的三角形的顶点坐标以及其相关三角形的信息记录下来,以构造递进网格文件,从而支持有效地增量传输。对于包含属性的模型,可以对顶点坐标表达进行扩展,将顶点信息表示为vi(xi,yi,zi,

),其中xi,yi,zi为顶点坐标,

为顶点对应的标量属性(例如对于颜色属性来说,代表RGB颜色值;对于纹理属性,表纹理坐标),经过以上处理,就可以将属性信息记录在递进网格文件中,从而在重建原始几何模型的同时提供属性的恢复。
2.基网格压缩编码 本发明对简化后的基网格进行基于八叉树划分的压缩编码,对顶点的几何坐标用12bit来进行量化,主要分三个步骤 (1)对几何模型的顶点进行八叉树的多分辨率层次化组织,直到最精细化的树节点能够表达量化的精度首先,通过对模型设置一个最小包围盒,并按照八叉树的划分方法进行递归细分,其中每个树节点记录其子树所含顶点的个数,对于不含顶点的树节点将不再继续子分,而包含顶点的树节点将被迭代子分,直到节点为空或只含一个顶点且达到最大精度层为止;因此生成的八叉树中叶节点中心隐含表示其所包含顶点的空间位置。
(2)由粗到细以广度优先的方式遍历八叉树的各个节点,并输出描述顶点位置情况的数据流根据节点中所含顶点的个数,对于每个非空节点,用1bit标识其是否是一个单节点;对于一个单节点,用3bits来标识该单节点中的哪个子节点包含唯一顶点;而对于非空非单节点,则产生一个8bits的标识,表示该节点的子节点是否非空;如此循环,直至访问到最精细层的节点停止。
(3)对拓扑数据进行顶点索引的重排和压缩采用叶节点中包含的顶点从左到右的顺序重新排列顶点索引,并且更新原始拓扑数据中的对应索引值,并对拓扑数据进行压缩。
(4)将属性信息预先按照几何节点流的叶顶点的顺序排列并压缩将属性信息预先按照几何节点流的叶顶点的顺序排列好,在编码过程中使其与几何信息同步。
(5)对所有数据流进行算术编码。
采用压缩编码后,基网格文件量有了进一步缩小。
1.递进传输 本发明采用Browser/Server结构下八叉树解码-递进网格传输的递进传输模式。在传输解码阶段,首先采用基于八叉树广度优先遍历的逐层细化方式恢复基网格;在基网格信息传输完毕后,继续采用递进网格传输的方式,传输一系列细节恢复信息,对模型进行优化和恢复。
(1)浏览器-服务器 本发明在浏览器端使用内嵌于Web浏览器的Java Applet,因而不需要用户安装独立的应用程序,就能够对三维模型进行渲染;用户可以对模型进行旋转、平移、缩放等交互式操作,还可以在场景中漫游行走,查看感兴趣区域等;此外,由于采用了递进压缩及传输策略,使得响应时间大大缩短,更适合于普通用户网上浏览。
在三维数据传输的过程中,用户在需要查看和操作模型时,可以随时控制暂停传输,此时,浏览器端向服务器发送一个等待请求,请求中包含当前的数据流位置和状态,服务器暂停发送数据;在用户停止操作时,浏览器向服务器发出下载请求,服务器根据已保存的状态信息继续向浏览器端发送数据,从而继续三维模型的细化过程。
(2)通信线程及其管理 为了达到递进传输的目的,需要一边下载文件数据,一边进行模型渲染,因而采用多线程的实现方式。
服务器将模型文件顺序的传输到客户端,客户端在接收数据的同时分析数据内容,针对内容的不同构建不同的内部模型数据表示,以便开始绘制;同时在每个新信息到达时,都需要更新内部的数据内容,并重新更新屏幕中的图像。这里需要三个线程,分别为数据下载线程、数据分析线程和图形绘制线程(主线程)。
下载线程负责从服务器端下载文件数据,每当客户端有数据之后,便交由分析线程对数据进行语义分析,形成内部的数据描述格式。绘图线程负责将这些内部数据显示到屏幕上去。在其后的过程中,每当接收到一条新信息,便转换成内部数据描述,随后显示;如此反复进行。
在此过程中需要解决线程之间的同步问题第一,对于下载线程和分析线程来说,在数据没有下载之前进行分析是没有意义的,这就需要在这两个线程之间进行同步;第二,在分析线程分析已下载的文件数据时,下载线程可能又下载到新的数据并要求对文件数据进行更新,这就需要在这两个线程之间进行数据的互斥访问;同样,分析线程和绘图线程之间也存在这样的问题,绘图线程只有在分析线程部分完成(完成若干条优化信息的分析)之后才能进行显示,它们之间也存在一个读写互斥。
这里采用临界区实现这三个线程对资源的互斥访问,在下载线程未将数据下载到客户端本地的时候,分析线程只能等待,只有得到数据之后才能工作。根据二者速度的不同,可分为两种情况 (1)下载速度比分析速度慢当分析完毕当前的数据段后,分析线程需要根据当前下载的状态决定其本身运行状态。如果当前文件未下载完毕,那么继续等待下一段数据的到来;如果当前文件已经下载完毕,分析结束。
(2)下载速度比分析速度快此时对于分析线程来说,所要分析的数据是一直存在的,只需要在开始的时候等待第一次数据的到来即可。
对于分析线程和绘图线程来说,它们之间的同步比较简单,只要在新数据分析结束之后,绘图线程可以进行绘制。
1.三维场景传输 三维场景由不同的对象组成,其中每个对象都是一个独立的形体或结构。为此,在简化和编码阶段,将三维场景看作是若干对象模型的组合体,而对其中的每个对象进行拓扑边界完全保留的网格简化,而在传输恢复阶段,使用多数据流的方法,并采用一种面向对象的视点相关传输策略,根据用户的视点的不同选择不同的模型对象进行优化。
首先为场景的每个对象建立了一个单独的数据流,因而对于每个数据流来说,都可以采用前述八叉树解码-递进网格传输的递进传输模式。与简单的对象模型传输不同,本发明设计了一个面向对象的视点相关的传输框架,如图3所示,服务器端提供模型数据并保存当前模型对象的传输状态,客户端下载数据并重构、渲染模型。除了下载、分析、绘图线程外,为客户端再增加一个可见性判断线程,用来计算视点信息,并根据视锥可见性判断需要传输的对象;服务器只需要接收每个客户端传送的所需对象标志,就可以发送相应的优化信息。这样,就将计算负载分散给每个客户端,从而提高了服务器的效率;而对于客户端来说,由于这种可见性判断是粗粒度的面向对象的,因而也不会造成大量的计算,影响可视效果。
该框架整个执行过程为 (1)客户端向服务器发出场景传输请求; (2)服务器接收客户请求,与该客户端建立一个连接,同时查看该用户请求的模型数据是否已经调入内存,如果没有则将其调入内存,然后为该场景的每个对象建立一棵八叉树; (3)服务器向客户端传输每个对象的基网格数据(顶点的坐标、面的索引以及其它相关信息); (4)客户端接收完毕基网格信息后,进行显示; (5)客户端根据自己的视点计算当前可见的对象,并将可见性状态传输到服务器; (6)服务器根据当前客户端状态传输当前可见对象的优化信息,并将其他对象的优化信息数据流的传输暂停,保存当前状态; (7)客户端每接收到一条优化信息,便对模型进行细化,并重新绘制; (8)如果视点改变,重复上述(5); (9)客户端退出,服务器清理无用的状态信息。
利用上述传输方法,对模型进行递进传输,图4为一个观音模型的传输,首先进行八叉树解码,在得到基网格后,进而进行递进网格传输恢复。从图4传输过程可以看出,在八叉树启动并解码传输20%之后得到的基网格,与原始模型除了在几何相似性上非常接近外,还较好地保留原始模型的边界、轮廓及纹理特征。
图5为对场景中一组兵马俑模型进行递进传输的过程,其初始过程仍相似,首先对当前可见的兵马俑模型进行八叉树解码传输;随后视点拉近,部分对象进入视野并参与细化;当视点继续转动时,原先在窗口外的兵马俑模型由于刚开始传输,仍然显得比较粗糙。
权利要求
1.一种基于特征保留的三维模型递进传输方法,其特征在于包括下列步骤
(1)对原始网格模型进行保留特征的简化,形成粗糙基网格;
(2)对形成的粗糙基网格实施八叉树压缩编码,形成递进网格文件;
(3)采用Browser/Server结构下八叉树解码-递进网格传输的递进传输模式;
(4)在上述步骤的基础上采用面向对象的视点相关传输策略传输三维场景。
2.根据权利要求1所述的基于特征保留的三维模型递进传输方法,其特征在于所述步骤(1)中对原始网格模型的简化,采用了基于三角形折叠的保留拓扑边界及纹理或颜色属性的方法,步骤为
(1)对原始三角形网格进行分类边界三角形、角点三角形、内部三角形、特征三角形;
(2)根据三角形的分类,采用不同的误差度量方法
a.对于内部三角形,为每个三角形Ti配备一个4×4的误差矩阵Qi,并假设其折叠后的新点为vi,定义三角形的折叠误差为通过使误差最小得到vi,位置;
b.对于角点三角形,限定其折叠后的新点vi为原边界上的一个顶点,采用与步骤a相同的方法计算折叠误差;
c.对于边界三角形和特征三角形,置其折叠误差为最大值。
(3)得到所有三角形的折叠误差之后选择误差最小的三角形执行折叠操作。
3.根据权利要求1所述的基于特征保留的三维模型递进传输方法,其特征在于所述步骤(3)中在传输起始阶段,采用八叉树广度遍历解码方式,直至基网格数据传输完毕,之后采用递进网格传输方式保持模型精度的连续提升。
4.根据权利要求1所述的一种三维模型递进传输方法,其特征在于所述步骤(4)中对于三维场景模型采用面向对象的视点相关传输策略的步骤如下
(1)为场景中每个对象构建一个单独的数据流,对每个数据流都采用前述八叉树解码-递进网格传输的递进传输模式;
(2)在客户端设置下载、分析、绘图线程,进行同步控制,保证对象的并行传输;
(3)在客户端计算视点信息,并根据视锥可见性判断当前需要传输的对象;
(4)服务器接收客户端传送的所需对象标志,发送相应的优化信息。
全文摘要
一种基于特征保留的三维模型递进传输方法,在原有三维模型简化算法的基础上进行了特征保留的改进,在简化几何模型的同时保持了模型的拓扑性质和属性特征,得到了数据量较小的基网格;并在此基础上实施了基于八叉树划分的压缩编码,构造出递进网格文件。在传输时,首先利用八叉树广度优先遍历解码基网格,之后采用递进网格传输方式,传输一系列细节恢复信息,连续提升模型精度,恢复原始模型,从而解决了传统传输方法响应时间长的问题。此外对三维场景设计了面向对象的视点相关传输策略,加速了场景的实时绘制,并将对象可见性判断放在客户端进行,降低了服务器负载。
文档编号G06T17/00GK101119485SQ20071011996
公开日2008年2月6日 申请日期2007年8月6日 优先权日2007年8月6日
发明者沈旭昆, 越 齐, 赵沁平, 赵学伟 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1