专利名称:用于处理三维模型数据的方法和装置的制作方法
用于处理三维模型数据的方法和装置技术领域
本发明总体涉及计算机图形图形的网络传输和显示,尤其涉及三维面片模型中的面片数据的处理。
背景技术:
三维(3D)图形广泛用于诸如虚拟世界、电子游戏等多媒体应用中。三维图形通常是用三维模型表示的,而面片模型(mesh model)是一种常用的三维模型。一般来说,用于表示面片模型的面片数据(mesh data)的数据量相当庞大。在基于因特网的3D图形应用中,往往需要通过网络从一个源计算机(例如服务器)向一个目标计算机(例如客户机)传送大量的面片数据。在网络的带宽资源有限的情况下,源计算机向目标计算机发送的面片数据量如果过大,有可能不能被及时传送,导致相应的三维图形不能被及时显示,对用户体验产生不利影响。多媒体应用的用户希望即使在带宽资源有限的情况下,也能以令人满意的速度在计算机网络上传输面片数据。
现有技术中存在一种渐进式传输面片模型数据的方法,例如,“ProgressiveMesh”(H.Hoppe,ACM SIGGRAPH 1996 Proceedings) 一文中提出了一种传输 3D 面片模型的方法。该方法将3D面片模型转换成层次化的面片(Hierarchical mesh),存储在服务器中。一个层次化的面片包含若干个子面片(submesh)。每个子面片均含有3D面片模型的部分信息,具有不同的信息量。通过传输每个子面片,3D面片模型的数据被渐进地传输到接收端。接收端接收到子面片的信息后,显示相应的三维图形;随着时间的推移,接收端显示的三维图形与原始3D面片模型越来越接近,直到完全相同。现有技术的上述方法,在传输子面片时,需要同时发送原始3D面片模型的顶点数据和边数据。发明内容
本发明的一个目的是改进在计算机网络上传送面片模型的面片数据的方式,提高在接收数据的目标计算机上显示3D图形的速度。
一方面,提供一种用于处理三维模型数据的方法,包含:获取原始面片模型的面片数据;用预定的面片模型构造算法,由原始面片模型的顶点数据构造一个衍生面片模型;比较原始面片模型的面片数据与衍生面片模型的面片数据,获得衍生面片模型的误差数据;发送与原始面片模型相关的顶点数据;发送衍生面片模型的误差数据。
另一方面,提供一种用于处理三维`模型数据的方法,包含:接收用于呈现三维面片模型的数据;响应于所接收的数据是与原始面片模型相关的顶点数据,执行下述操作:用预定面片模型构造算法,根据与原始面片模型相关的顶点数据,构造衍生面片模型;根据所构造的衍生面片模型,显示三维面片模型;以及响应于所接收的数据是衍生面片模型的误差数据,用所接收的误差数据修正当前显示的三维面片模型。
另一方面,提供一种用于处理三维模型数据的装置,包含:数据获取单元,被配置以获取原始面片模型的面片数据;面片模型构造单元,被配置以用预定的面片模型构造算法,由原始面片模型的顶点数据构造一个衍生面片模型;比较单元,被配置以比较原始面片模型的面片数据与衍生面片模型的面片数据,获得衍生面片模型的误差数据;顶点数据发送单元,被配置以发送与原始面片模型相关的顶点数据;误差数据发送单元,被配置以发送衍生面片模型的误差数据。
另一方面,提供一种用于处理三维模型数据的装置,包含:
数据接收单元,被配置以接收用于呈现三维面片模型的数据;数据类型判断单元,被配置以判断数据接收单元所接收的数据的类型;面片模型构造单元,被配置以响应于所接收的数据是与原始面片模型相关的顶点数据,用预定面片模型构造算法,根据与原始面片模型相关的顶点数据,构造衍生面片模型;三维模型呈现单元,被配置以显示所构造的衍生面片模型,其中,三维模型呈现单元进一步被配置以响应于所接收的数据是衍生面片模型的误差数据,用所接收的误差数据修正当前显示的三维面片模型。
结合附图并参考以下详细说明,本发明各实施方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本发明的若干实施方式。在附图中:
图1示出了适于用来实现本发明各种实施方式的示例性计算系统100的框图2示意性表示三维图形的面片模型和面片模型的数据表示;
图3示意性表示按照本发明一个实施例的用于处理三维模型数据的流程图4A示意性表示一个衍生面片模型;
图4B-4D示意性表示与原始面片模型相关的顶点数据;
图5示意性表示按照本发明一个实施例的用于处理三维模型数据的方法的流程图6A-6C示意性表示在目标计算机202上呈现三维面片模型的过程;
图7示意性表示按照本发明一个实施例的用于处理三维模型数据的装置的框图8示意性表示按照本发明另一个实施例的用于处理三维模型数据的装置的框图。
具体实施方式
附图中的流程图和框图,图示了按照本发明各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个单元、程序段、或代码的一部分,所述单元、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如所示,计算系统100可以包括:CPU(中央处理单元)101、RAM (随机存取存储器)102、R0M(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU 10URAM 102, ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。例如,计算系统100可以配置网络适配器,以便具有访问计算机网络的功能。
图1所示的计算系统100,可以用来实现应用于本发明各实施例的源计算机和目标计算机。
在说明本发明的各种实施方式之前,首先说明三维图形的面片模型和面片模型的数据表示。图2示意性表示三维图形的面片模型和面片模型的数据表示。
图2中显示了一例三维图形210,该图形的头部,可以用标记220所指示的3D面片模型(3D mesh model,简称“面片模型”)来表示。面片模型220的细节,由大量的三角形的面构成。
标记230指示的是一个简化的面片模型。面片模型230是一个由10个顶点vl_vl0和11个三角形的面fl-fll构成的封闭结构。
标记240指示的是面片模型230的顶点列表,其给出了面片模型230的顶点的几何信息。具体来说,顶点列表240中列出了面片模型230的所有顶点{vl、v2、v3...}和每个顶点的三维坐标,例如,顶点vl的坐标为(xl,yl, zl)。
标记250指示的是面片模型230的面列表。面列表250中列出了面片模型230的所有面(fl、f2...)和构成每个面的顶点,例如构成面fl的顶点为(vl,v2, v3)。
面列表250的等价形式是边列表260。边列表260列出了面片模型230中所有的边,例如,边el是连接两个顶点vl和v2的边。边列表260给出了面片模型230的顶点之间的连接信息。
顶点列表240和面列表250构成面片模型230的数据集,简称面片数据。显然,面片模型230的数据集或面片数据,也可以由顶点列表240和边列表260代表的数据构成,即由面片模型的顶点集合和边集合构成。
可以说,面片模型(以下也简称为“面片”)是由顶点和顶点之间的边构成的封闭结构。
为了方便说明,以下说明中,将一个顶点所在的边,称为该顶点的邻接边,例如边el和e3都是顶点vl的邻接边(adjacent edge),显然,一个顶点可以有不止一个的邻接边。将一个顶点所在的面,称为该顶点的邻接面,例如,面Π和f2都是顶点vl的邻接面(adjacent face),显然,一个顶点可以有不止一个的邻接面。
图2的底部简单地表示了本发明的应用场景。如图所示,在基于因特网的三维应用中,需要通过网络203从作为发送端的源计算机(例如服务器)201向作为接收端的目标计算机(例如客户机)202发送三维图形的面片数据。三维图形的面片模型的数据量通常很庞大(数量级可达10兆字节);并且,图形的精度要求越高,数据量越大。这对网络203的带宽提出很高的要求。在带宽不足的情况下,面片模型的数据可能无法及时从源计算机201传输到目标计算机202,这样,就不能及时地在目标计算机上呈现三维图形,从而影响接收端用户的体验。
发明人注意到,面片模型的边的数量随着顶点的数量增加而增加。根据欧拉公式,对于实际应用中更复杂的面片模型来说,其边的数量有可能近似顶点的数量的三倍。发明人发现,在通过计算机网络传送面片模型时,源计算机201无需同时发送关于顶点数据的信息和关于面/边数据的信息,目标计算机202也可以渐进地显示三维面片模型。
本发明的基本构思是,源计算机201先向目标计算机202单独发送关于面片数据中的顶点数据的信息,再向目标计算机202发送关于面片数据中的边数据/面数据的信息。
相应地,目标计算机202在收到关于面片数据中的顶点数据的信息后,用现有技术中已有的预定算法,推测性地构造衍生面片模型,并显示所构造的衍生面片模型;在收到关于面片数据中的边数据/面数据的信息后,对衍生面片模型进行修正。由于无需在发送关于顶点数据的信息的同时发送关于面/边数据的信息,大量传输带宽将被节省,关于顶点数据的信息和关于边数据/面数据的信息都能顺利和及时地被传输到目标计算机202。当关于顶点数据的信息到达目标计算机后,目标计算机根据关于顶点数据的信息就能推测性地构造面片模型,显示出与原始三维图形近似的三维图形;当关于边数据/面数据的信息到达目标计算机后,目标计算机能修正已经显示的三维图形,直到所显示的三维图形与原始三维图形相同。
现在参看图3,并以图2所示的面片模型230为例,说明按照本发明实施例的用于处理三维模型的面片数据的方法。图3示意性表示按照本发明一个实施例的用于处理三维模型的面片数据的方法的流程图。
图3所示的方法,可以在源计算机上201实现,过程如下。
首先,在步骤S310,获取原始面片模型的面片数据。
原始面片模型是要在目标计算机202上显示的面片模型。原始面片模型的面片数据包含顶点数据,以及边数据或面数据。
面片模型例如是图2中的面片模型230,其面片数据由顶点列表240和边列表260代表,或者由顶点列表240和面列表250等同地代表。这些列表的数据,可以预先存储在一个数据库(未予示出)中。相应地,步骤S310可以从该数据库中获取面片模型的面片数据。
在步骤S320,用预定的面片模型构造算法,由原始面片模型的顶点数据构造一个衍生面片模型。
现有技术中,存在各种面片模型构造算法,这些算法可以以一个顶点集合作为输入,推测性地计算出一个衍生面片模型。德洛内三角算法(Delaunay triangulation)就是这样一种算法。类似的其它算法可见于例如“A New Vorono1-Based SurfaceReconstruction Algorithm”(Amenta et al., SIGGRAPH 1998)和“Poisson surfacereconstruction,,(Kazhdan et al., Symposium on Geometry Processing 2006)。可以从这些算法中确定一种算法,作为预定的面片模型构造算法。
按照本发明一个实施例,步骤S320可以选择德洛内三角算法。
德洛内三角算法可以根据一个顶点集合中顶点之间的空间几何关系,生成顶点与顶点之间的边,由此构造一个个三角形的面,从而构造一个目标面片模型。具体来说,德洛内三角算法通过试图最大化每个三角形的面的三个内角角度中的最小值,推测性地计算哪些顶点之间应该有连线。德洛内三角算法在多数情况下避免产生形状过于狭长的三角形(例如至少有一个内角的角度小于10度的三角形)。从大量文献中的实验结果可以得知,在顶点数量较多的情况下,德洛内三角算法可以对顶点之间的边作出比较准确的推测。
例如,图2所示的面片模型230为例,可以用德洛内三角算法,由面片模型230的顶点集合VS = Ivl、v2、v3、v4、v5、v6、v7、v8、v9、vl0}作为输入,构造一个面片模型,即衍生面片模型。该衍生面片模型,如图4A中的标记Mk所示。
如图4A所示,衍生面片模型Mk与面片模型230不完全相同,但是与面片模型230有一定的相似性。例如,衍生面片模型Mk的顶点vl与v6之间存在一条边,顶点v7与v8之间存在一条边,而面片模型230的顶点vl与v6之间没有边,顶点v7与v8之间没有边。再如,面片模型230的顶点v3与v4之间存在一条边,顶点v6与v9之间存在一条边,而衍生面片模型Mk的顶点v3与v4之间没有边(如虚线所示),顶点v6与v9之间没有边(如虚线所示)。
在步骤S330,比较原始面片模型的面片数据与衍生面片模型的面片数据,获得衍生面片模型的误差数据。
原始面片模型和面片数据是描述原始面片模型的数据,例如顶点数据和边数据/面数据。衍生面片模型和面片数据是描述衍生面片模型的数据,例如顶点数据和边数据/面数据。如上文所述,德洛内三角算法是一种推测性算法,根据该算法由面片模型230的顶点构造的衍生面片模型,可能与面片模型230不完全相同,即与原始面片模型230之间存在误差。
比较原始面片模型230的面片数据和衍生面片模型Mk的面片数据,可以确定这种误差。
按照本发明一个实施例,所述比较原始面片模型的面片数据与衍生面片模型的面片数据,包含比较原始面片的边数据与衍生面片模型的边数据,所述误差数据包含多余边数据和缺失边数据,其中,多余边数据包含在衍生面片模型中存在、但在原始面片模型中不存在的边,缺失边数据包含在原始面片模型中存在、但在衍生面片模型中不存在的边。
例如,比较面片模型230的边数据与衍生面片模型Mk的边数据,可以获得衍生面片模型Mk的误差数据如下:
多余边数据:顶点vl与v6之间的边,顶点v7与v8之间的边;
缺失边数据:顶点v3与v4之间的边,顶点v6与v9之间的边。
一般地,可以按照衍生面片模型中的顶点,用下面的表达式(I)来表示一个衍生面片模型中的多余边数据V(i,+e):
V (i, +e) = {e (i, I, +), e (i, 2+),...e (i, p+)}......(I)
其中,符号“ + ”表示“多余”,“e(i,l,+)”表示顶点i与顶点I之间的边是多余边,...“e(i, P,+) ”表示顶点i与顶点P之间的边是多余边。换言之,由表达式⑴可以表示衍生面片模型的一个顶点i的邻接边中哪些是多余边。
例如,原始面片模型230中,顶点vl的邻接边包含el、e2、e3,即顶点vl和顶点v2、v3与v4之间的边。在衍生面片模型Mk中,顶点vl还存在另一个邻接边-顶点vl和顶点v6之间的边,则顶点vl之间v6的边是多余边。可以在多余边数据V(l,+e)中将该多余边记为 “{1,6,+}”。
类似地,顶点v7与v8之间的边也是多余边,在多余边数据V(7,+e)中,将其记为“ {7,8,+},,。
将一个有η个顶点(1...η)的衍生面片模型中的多余边的集合记为VS1,则
VSl = {V(l, +e), V(2, +e)...V(n, +e)}......(2)。
衍生面片模型Mk的多余边的集合为:
VSl = {{1,6,+},{7,8,+}}
一般地,可以按照衍生面片模型中的顶点,用下面的表达式(3)来表示一个衍生面片模型中的缺失边数据V(i,_e):
V(i, -e) = {e (i, I, -), e (i, 2, -),...e (i, p, -)}......(3)
其中,“e(i, I,-) ”表示顶点i与顶点I之间的缺失边,...“e(i,p,-) ”表示顶点i与顶点P之间的缺失边。换言之,由表达式(3)可以表示哪些边是衍生面片模型的一个顶点i的邻接边中的缺失边。
例如,在衍生面片模型Mk中,顶点v3与v4之间不存在边,而原始面片模型230中,v3与v4之间存在边,因此,顶点v3与v4之间的边是衍生面片模型的缺失边。可以在缺失边数据V (3,-e)中将该缺失边记为“ {3,4,-} ”。
类似地,衍生面片模型Mk的缺失边还有顶点v6与v9之间的边,可以在缺失边数据V(6,-e)中将其记为“{6,9,-}”。
将一个有η个顶点(1...η)的衍生面片模型中的缺失边的集合记为VS2,则
VS2 = {V(l, -e), V(2, -e)...V(n, -e)}......(4)
例如,对于衍生面片模型Mk来说,VS2 = {{3,4,_},{6,9,-}}。
因此,一个衍生面片模型的误差数据集合VSE_K = VS1+VS2,即:
VSeeeoe = {V (I,+e),V (2,+e)...V (n, +e),V (I,_e),V (2,_e)...V (n, _e)}
例如,衍生面片模型Mk的误差数据集合VSE_ = {{1,6, +},{7,8, +},{3,4, -},{6,9,-}} ο
按照本发明另一个实施例,所述比较原始面片模型的面片数据与衍生面片模型的面片数据,包含比较原始面片的面数据与衍生面片模型的面数据,所述误差数据包含多余面数据和缺失面数据,其中,多余面数据包含在衍生面片模型中存在、但在原始面片模型中不存在的面,缺失面数据包含在原始面片模型中存在、但在衍生面片模型中不存在的面。
如上文结合图2所述的那样,边数据与面数据之间具有等价性,根据上一个实施例中比较原始面片的面数据与衍生面片模型的边数据,不难知道如何比较比较原始面片的面数据与衍生面片模型的面数据,并得出误差数据,即多余面数据和缺失面数据。
以上的步骤S310-S330,都是为要通过网络203向目标计算机202发送的、用于在目标计算机202上呈现面片模型的数据而作的预处理。显然,可以在任何时候进行与处理。预处理的结果,可以存储起来。
执行了上述预处理并存储了预处理的结果后,就可以通过网络203向接收端202发送数据。
当需要通过网络向接收端202发送数据时,首先执行步骤S340。
在步骤S340,发送与原始面片模型相关的顶点数据。
按照本发明一个实施例,与原始面片模型相关的顶点数据,是原始面片模型的顶点数据,例如顶点集合 VS = {vl、v2、v3、v4、v5、v6、v7、v8、v9、vlO}。
或者,与原始面片模型相关的顶点数据,也可以是由原始面片模型的顶点数据衍生的顶点数据。
按照本发明一个实施例,在步骤340之前,可以根据原始面片模型的顶点数据,生成衍生的顶点数据。相应地,在步骤340中,所述与原始面片模型相关的顶点数据,可以是所述衍生的顶点数据。
下面参看图4B-4D,说明如何生成衍生的顶点数据。图4B-4D示意性表示与原始面片模型相关的顶点数据。图4B表示原始面片模型的顶点集合VS。如图所示,图4B的虚框中的顶点个数和几何位置,与图2的面片模型230中的完全相同。
按照本发明一个实施例,可以将顶点集合划分为若干个子集VS_1,VS_2...VS_x(x>I),每个子集包含的顶点的数据,是衍生的顶点数据,并且是缩减了的顶点数据。例如,将顶点集合VS划分为两个子集VS_1 = {v3, v6, v7},VS_2 = VS_VS_1。图4C的虚框内的顶点,表示顶点子集VS_2中的顶点。与图4B相比,图4C的虚框内少了顶点v3、v6和v7,即顶点子集VS_2中不含顶点v3、v6和v7。
在原始面片模型的顶点集合很大,而带宽不足的情况下,可以先传送一个顶点子集的顶点数据,例如VS_2的顶点数据,再传送其它顶点子集的顶点数据,例如顶点子集VS_1的顶点数据。
按照本发明一个实施例,当原始面片模型的顶点集合VS很大时,可以将顶点集合VS中的顶点进行聚类,用所产生的顶点集合的数据,作为衍生的顶点数据,这种衍生的顶点数据是缩减了的顶点数据。例如,图4D就表示经过对顶点集合VS中的顶点进行聚类后产生的衍生的顶点数据。比较图4D和图4B可知,图4B中的顶点v3、v6和v7变成了图4D的虚框中的顶点I1,表示顶点Mcl是对顶点v3、v6和v7进行聚类而产生的顶点。经聚类产生的顶点Vca与聚类之前的顶点v3、v6和v7具有映射关系νε1〈-> {ν3, v6, v7},映射关系也是一种衍生的顶点数据,属于与原始面片模型相关的顶点数据。
在原始面片模型的顶点集合很大,而带宽不足的情况下,可以先传送图4D所示的衍生顶点数据,即Ivl,v2,v4, v5, v8, v9, vlO, VcJ,目标计算机可以先根据图4D所示的衍生顶点数据呈现三维图形。然后,再传送映射关系νε1〈->{ν3,v6,v7}。目标计算机于是根据后来接收的映射关系Κ->{ν3,v6, v7}确定顶点数据为VS,根据VS显示三维图形。由此可以渐进地显示三维图形。
在步骤S340发送的与原始面片模型相关的顶点数据,可被目标计算机202用于显示三维面片模型。这将在下文参照图5作进一步说明。
然后,在步骤S350,发送衍生面片模型的误差数据。例如,可以发送衍生面片模型Mk 的误差数据集合 VSE_ = {{1,6,+}, {7,8, +}, {3,4,-}, {6,9,-}}。
按照本发明一个实施例,所述发送衍生面片模型的误差数据,包含将误差数据划分成多个误差数据子集,并且每次发送一个误差数据子集,直到所有的误差数据子集都被发送。
例如,可以将一个衍生面片模型的误差数据集合VSekmk划分为若干个误差数据子集:
{V(I, +e),V(2,+e),V(l,~e),V(2,_e)}
{V (3,+e),V (4,+e),V (3,_e),V (4,_e)}
...
{V (n-1,+e), V (n, +e),V (n-1,_e)...V (n, _e)}
每次发送其中的一个误差数据子集,直到所有的误差数据子集都被发送。
例如,可以将VSekkok = {{1,6, +},{7,8, +},{3,4, -},{6,9, -}}划分为两个误差数据子集:{{1,6,+},{3,4,-}}和{{6,9,-},{7,8,+}},并分别发送这两个误差数据子集。
需要指出的是,以上的两个误差数据子集,仅仅是示例性的。在实际应用中,每个误差数据子集的数据量远不止这些。但是,误差数据子集的数据量,比误差数据集合VSekkot的数据量更少,在网络203的带宽不足的情况下,如果源计算机201根据带宽条件传送数据量较少的误差数据子集,误差数据子集可以及时地到达目标计算机202。
在步骤S350发送的误差数据,可被目标计算机202用于呈现三维面片模型。
下文将结合图5,说明目标计算机202针对源计算机201发送的原始面片模型相关的顶点数据和衍生面片模型的误差数据分别要作的处理。
图5表示按照本发明一个实施例的用于渐进地呈现三维面片模型的方法的流程图。如图5所示的方法,可以在目标计算机202实现,过程如下。
在步骤S510,通过网络203从源计算机201接收用于三维模型的数据。
上文在结合图3的说明中可知,源计算机201向目标计算机202发送的数据,可能是与原始面片模型相关的顶点数据(步骤S340),也可能是衍生面片模型的误差数据(步骤S350)。
在步骤S520,目标计算机202判断所接收的数据的类型,以便作出相应的处理。判断数据的类型,有各种实现方式,例如,一种简单的方式,是通过设置代表数据类型的标识符来区别发送端发送的数据的类型。
根据所接收的数据的类型的不同,目标计算机202将作出不同的处理。如棱形框521和522分别表示的那样,在本发明的实施例中,接收端只需针对顶点数据和误差数据作出处理。
在步骤S530,响应于所接收的数据是与原始面片模型相关的顶点数据,执行下述操作:用预定面片模型构造算法,根据与原始面片模型相关的顶点数据,构造一个衍生面片模型;根据所构造的衍生面片模型,显示三维面片模型。
按照本发明一个实施例,所述预定面片模型构造算法,可以是德洛内三角算法。
预定面片模型构造算法,应该与源计算机202使用的面片模型构造算法相同。在实践中,所述预定面片模型构造算法,可以是预先指定的部署在目标计算机上的面片模型构造算法。如果目标计算机上部署了多种面片模型构造算法,也可以随时根据源计算机的通知,选择其中一种面片模型构造算法。
在上文结合图3所作的说明中,已经描述了用预定面片模型构造算法生成边数据或面数据的方式。
上文在参照图3对步骤S340的说明中,指出了步骤S340中所发送的与原始面片模型相关的顶点数据,可以是原始面片模型的顶点数据,也可以是衍生的顶点数据。按照本发明一个实施例,与原始面片模型相关的顶点数据,是原始面片模型230的顶点数据,即顶点集合VS = {vl、v2、v3、v4、v5、v6、v7、v8、v9、vlO}。在这种情况下,根据顶点集合VS,构造一个如图4A中所示的衍生面片模型Mk。然后,根据衍生面片模型Mk的数据,显示三维面片模型。按照本发明另一个实施例,与原始面片模型相关的的顶点数据,是衍生的顶点数据。例如是如上文所述的图4C或4D所表示的衍生顶点数据。在这样的情况下,也可以根据图4C或4D所表示的衍生顶点数据,构造一个衍生面片模型,然后,根据所生成的衍生面片模型的数据,显示三维面片模型。在步骤530之后,过程返回到步骤S510,继续接收数据。在步骤S540,响应于所接收的数据是衍生面片模型的误差数据,用所接收的误差数据修正当前显示的三维面片模型。如上文结合图3所述的那样,衍生面片模型的误差数据包含下述至少之一:多余边数据;缺失边数据;多余面数据;缺失面数据。按照发明一个实施例,所述用所接收的误差数据修正当前显示的三维面片模型包含:响应于误差数据包含多余边数据,从当前显示的三维面片模型中去除多余边数据中的边;响应于误差数据包含缺失边数据,在当前显示的三维面片模型中添加缺失边数据中的边;响应于误差数据包含多余面数据,从当前显示的三维面片模型中去除多余面数据中的面;响应于误差数据包含缺失面数据,在当前显示的三维面片模型中添加缺失面数据中的面。衍生面片模型的误差数据可以是表示衍生面片模型的面片数据与原始面片模型的面片数据之间的误差的数据,或者,也可以所述表示衍生面片模型的面片数据与原始面片模型的面片数据之间的误差的数据的子集,即误差数据子集。参看附图6A-6C,附图6A-6C示意性表示在目标计算机202上呈现三维面片模型的过程。例如,假设在步骤530,根据顶点集合VS,构造一个如图4A中所示的衍生面片模型Mk。然后,根据衍生面片模型Mk的数据,显示三维面片模型。图6A表示当前显示的三维面片模型。如前文参照图3所述的那样,例如,衍生面片模型Mk的误差数据为VSekkqk = {{I,6,+},{7,8, +}, {3,4, {6,9,-}}。就是说,在当前显示的三维面片中,顶点vl和v6之间的边和顶点v7和v8之间的边是多余边,顶点v3和v4之间的边和顶点v6和v9之间的边是缺失边。假设误差数据VSE_K被划分为两个误差数据子集:{{1,6,+},{3,4, -}}和{{6,9,-},{7,8,+}}。 如果步骤S510接收的数据是误差数据子集:{{I,6,+},{3,4,_}},则在步骤S 540中,从图6A所示的当前显示的三维面片模型中去除顶点vl和v6之间的边,并增加顶点v3和v4之间的边,结果如图6B所示。在步骤540之后,过程返回到步骤S510。接着,步骤S510接收的数据是误差数据子集{{6,9,-},{7,8,+}},则在步骤S540中,从图6B所示的当前显示的三维面片模型中去除顶点v7和v8之间的边,并增加顶点v6和v9之间的边,结果如图6C所示。以上描述了按照本发明实施例的用于处理三维模型的面片数据的方法和用于渐进地呈现三维模型的方法。按照相同的发明构思,本发明也提供一种用于处理三维模型的面片数据的装置和用于渐进地呈现三维模型的装置。参看图7,该图示意性表示按照本发明一个实施例的处理三维模型的面片数据的装置的框图。图7所示的装置包含:数据获取单元710、面片模型构造单元720、比较单元730、顶点数据发送单元740和误差数据发送单元750。数据获取单元710被配置以获取原始面片模型的面片数据。面片模型构造单元720被配置以用预定的面片模型构造算法,由原始面片模型的顶点数据构造一个衍生面片模型。比较单元730被配置以比较原始面片模型的面片数据与衍生面片模型的面片数据,获得衍生面片模型的误差数据。顶点数据发送单元740被配置以发送与原始面片模型相关的顶点数据。误差数据发送单元750被配置以发送衍生面片模型的误差数据。按照本发明一个实施例,所述预定的面片模型构造算法包含德洛内三角算法。按照本发明一个实施例,所述比较单元730被配置以比较原始面片的边数据与衍生面片模型的边数据,所述误差数据包含多余边数据和缺失边数据,其中,多余边数据包含在衍生面片模型中存在、但在原始面片模型中不存在的边,缺失边数据包含在原始面片模型中存在、但在衍生面片模型中不存在的边。按照本发明一个实施例,所述比较单元730被配置以比较原始面片的面数据与衍生面片模型的面数据,所述误差数据包含多余面数据和缺失面数据,其中,多余面数据包含在衍生面片模型中存在、但在原始面片模型中不存在的面,缺失面数据包含在原始面片模型中存在、但在衍生面片模型中不存在的面。按照本发明一个实施例,所述误差数据发送单元750被配置以将误差数据划分成多个误差数据子集,并且每次发送一个误差数据子集,直到所有的误差数据子集都被发送。参看图8,该图示意性表示按照本发明另一个实施例的用于处理三维模型数据的装置的框图。图8所示的装置包含:数据接收单元810、数据类型判断单元820、面片模型构造单元830、三维模型呈现单元840。数据接收单元810被配置以接收用于呈现三维面片模型的数据。数据类型判断单元820被配置以判断数据接收单元所接收的数据的类型。面片模型构造单元830被配置以响应于所接收的数据是与原始面片模型相关的顶点数据,用预定面片模型构造算法,根据与原始面片模型相关的顶点数据,构造衍生面片模型。按照本发明一个实施例,与原始面片模型相关的顶点数据包含下述之一:原始面片模型的顶点数据;或者由原始面片模型的顶点数据衍生的顶点数据三维模型呈现单元840被配置以显示所构造的衍生面片模型,其中,三维模型呈现单元进一步被配置以响应于所接收的数据是衍生面片模型的误差数据,用所接收的误差数据修正当前显示的三维面片模型。按照本发明一个实施例,所述预定面片模型构造算法是德洛内三角算法。按照本发明一个实施例的用于处理三维模型数据的装置,误差数据包含下述至少之一:多余边数据;缺失边数据;多余面数据;和缺失面数据,并且,所述三维模型呈现单元840被配置以:响应于误差数据包含多余边数据,从当前显示的三维面片模型中去除多余边数据中的边;响应于误差数据包含缺失边数据,在当前显示的三维面片模型中添加缺失边数据中的边;响应于误差数据包含多余面数据,从当前显示的三维面片模型中去除多余面数据中的面;响应于误差数据包含缺失面数据,在当前显示的三维面片模型中添加缺失面数据中的面。以上描述了按照本发明实施例的用于处理三维模型数据的装置,由于上文已经详细地描述了按照本发明各种实施例的用于处理三维模型数据的方法,在上述对系统的描述中,省略了明显与对方法的描述重复、或者很容易从对方法的描述中引申得出的内容。应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例中,该方法可具有更多、更少或不同的步骤,对步骤的编号,是为了使说明更加简明,而不是对各步骤之间的顺序关系的严格限定,各步骤与步骤之间的顺序可以与所描述的不同。因此,在本发明的一些实施例中,可以没有上述一个或多个可选步骤。每个步骤的具体执行方式可以与所描述的不同。所有这些变化都处于本发明的精神和范围之内。本发明可以采取硬件实施方式、软件实施方式或既包含硬件组件又包含软件组件的实施方式的形式。在优选实施方式中,本发明实现为软件,其包括但不限于固件、驻留软件、微代码等。而且,本发明还可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,这些介质提供程序代码以供计算机或任何指令执行系统使用或与其结合使用。出于描述目的,计算机可用或计算机可读机制可以是任何有形的装置,其可以包含、存储、通信、传播或传输程序以由指令执行系统、装置或设备使用或与其结合使用。介质可以是电的、磁的、光的、电磁的、红外线的、或半导体的系统(或装置或器件)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机磁盘、随机访问存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。目前光盘的例子包括紧凑盘-只读存储器(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD。适合于存储/或执行程序代码的数据处理系统将包括至少一个处理器,其直接地或通过系统总线间接地耦合到存储器元件。存储器元件可以包括在程序代码的实际执行期间所利用的本地存储器、大容量存储器、以及提供至少一部分程序代码的临时存储以便减少执行期间从大容量存储器必须取回代码的次数的高速缓存存储器。输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等等)可以直接地或通过中间I/o控制器耦合到系统。网络适配器也可以耦合到系统,以使得数据处理系统能够通过中间的私有或公共网络而耦合到其他数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器以及以太网卡仅仅是当前可用的网络适配器类型的几个例子。从上述描述应当理解,在不脱离本发明真实精神的情况下,可以对本发明各实施方式进行修改和变更。本说明书中的描述仅仅是说明性的,而不应被认为是限制性的。本发明的范围仅受所附权利要求书的限制。
权利要求
1.一种用于处理三维模型数据的方法,包含: 获取原始面片模型的面片数据; 用预定的面片模型构造算法,由原始面片模型的顶点数据构造一个衍生面片模型; 比较原始面片模型的面片数据与衍生面片模型的面片数据,获得衍生面片模型的误差数据; 发送与原始面片模型相关的顶点数据; 发送衍生面片模型的误差数据。
2.权利要求1的方法,其中,所述比较原始面片模型的面片数据与衍生面片模型的面片数据,包含比较原始面片的边数据与衍生面片模型的边数据,所述误差数据包含多余边数据和缺失边数据,其中,多余边数据包含在衍生面片模型中存在、但在原始面片模型中不存在的边,缺失边数据包含在原始面片模型中存在、但在衍生面片模型中不存在的边。
3.权利要求1的方法,其中,所述比较原始面片模型的面片数据与衍生面片模型的面片数据,包含比较原始面片的面数据与衍生面片模型的面数据,所述误差数据包含多余面数据和缺失面数据,其中,多余面数据包含在衍生面片模型中存在、但在原始面片模型中不存在的面,缺失面数据包含在原始面片模型中存在、但在衍生面片模型中不存在的面。
4.权利要求2或3的方法,其中,所述发送衍生面片模型的误差数据,包含将误差数据划分成多个误差数据子集,并且每次发送一个误差数据子集,直到所有的误差数据子集都被发送。
5.权利要求1的方法,其中,所述与原始面片模型相关的顶点数据,是原始面片模型的顶点数据。
6.权利要求1的方法,进一步包含,根据原始面片模型的顶点数据,生成衍生的顶点数据,其中,所述与原始面片模型相关的顶点数据,包含所述衍生的顶点数据。
7.一种用于处理三维模型数据的方法,包含: 接收用于呈现三维面片模型的数据; 响应于所接收的数据是与原始面片模型相关的顶点数据,执行下述操作: 用预定面片模型构造算法,根据与原始面片模型相关的顶点数据, 构造衍生面片模型; 根据所构造的衍生面片模型,显示三维面片模型;和 响应于所接收的数据是衍生 面片模型的误差数据,用所接收的误差数据修正当前显示的三维面片模型。
8.权利要求7的方法,其中,所述与原始面片模型相关的顶点数据包含下述之一: 原始面片模型的顶点数据;或者 由原始面片模型的顶点数据衍生的顶点数据。
9.权利要求7的方法,其中,误差数据包含下述至少之一: 多余边数据; 缺失边数据; 多余面数据;和 缺失面数据,并且其中,所述用所接收的误差数据修正当前显示的三维面片模型包含:响应于误差数据包含多余边数据,从当前显示的三维面片模型中去除多余边数据中的边; 响应于误差数据包含缺失边数据,在当前显示的三维面片模型中添加缺失边数据中的边; 响应于误差数据包含多余面数据,从当前显示的三维面片模型中去除多余面数据中的面; 响应于误差数据包含缺失面数据,在当前显示的三维面片模型中添加缺失面数据中的面。
10.权利要求9的方法,其中,所述衍生面片模型的误差数据包含下述之一: 表示衍生面片模型的面片数据与原始面片模型的面片数据之间的误差的数据; 所述表示衍生面片模型与原始面片模型之间的误差的数据的子集。
11.一种用于处理三维模型数据的装置,包含: 数据获取单元,被配置以获取原始面片模型的面片数据; 面片模型构造单元,被配置以用预定的面片模型构造算法,由原始面片模型的顶点数据构造一个衍生面片模型; 比较单元,被配置以比较原始面片模型的面片数据与衍生面片模型的面片数据,获得衍生面片模型的误差数据; 顶点数据发送单元,被配置以发送与原始面片模型相关的顶点数据; 误差数据发送单元,被配置以发送衍生面片模型的误差数据。
12.权利要求11的装置,其中,所述比较单元被配置以比较原始面片的边数据与衍生面片模型的边数据,所述误差数据包含多余边数据和缺失边数据,其中,多余边数据包含在衍生面片模型中存在、但在原始面片模型中不存在的边,缺失边数据包含在原始面片模型中存在、但在衍生面片模型中不存在的边。
13.权利要求11的装置,其中,所述比较单元被配置以比较原始面片的面数据与衍生面片模型的面数据,所述误差数据包含多余面数据和缺失面数据,其中,多余面数据包含在衍生面片模型中存在、但在原始面片模型中不存在的面,缺失面数据包含在原始面片模型中存在、但在衍生面片模型中不存在的面。
14.权利要求12或13的装置,其中,所述误差数据发送单元被配置以将误差数据划分成多个误差数据子集, 并且每次发送一个误差数据子集,直到所有的误差数据子集都被发送。
15.权利要求11的装置,其中,所述与原始面片模型相关的顶点数据,是原始面片模型的顶点数据。
16.权利要求11的装置,进一步包含,数据衍生单元,被配置以根据原始面片模型的顶点数据,生成衍生的顶点数据,其中,其中,所述与原始面片模型相关的顶点数据,包含所述衍生的顶点数据。
17.一种用于处理三维模型数据的装置,包含: 数据接收单元,被配置以接收用于呈现三维面片模型的数据; 数据类型判断单元,被配置以判断数据接收单元所接收的数据的类型; 面片模型构造单元,被配置以响应于所接收的数据是与原始面片模型相关的顶点数据,用预定面片模型构造算法,根据与原始面片模型相关的顶点数据,构造衍生面片模型;三维模型呈现单元,被配置以显示所构造的衍生面片模型,其中,三维模型呈现单元进一步被配置以响应于所接收的数据是衍生面片模型的误差数据,用所接收的误差数据修正当前显示的三维面片模型。
18.权利要求17的装置,其中,所述与原始面片模型相关的顶点数据包含下述之一: 原始面片模型的顶点数据;或者 由原始面片模型的顶点数据衍生的顶点数据。
19.权利要求19的装置,其中,误差数据包含下述至少之一: 多余边数据; 缺失边数据; 多余面数据;和 缺失面数据,并且,所述三维模型呈现单元被配置以: 响应于误差数据包含多余边数据,从当前显示的三维面片模型中去除多余边数据中的边; 响应于误差数据包含缺失边数据,在当前显示的三维面片模型中添加缺失边数据中的边; 响应于误差数据包含多余面数据,从当前显示的三维面片模型中去除多余面数据中的面; 响应于误差数据包含缺失面数据,在当前显示的三维面片模型中添加缺失面数据中的面。
20.权利要求19的装置,其中,所述衍生面片模型的误差数据包含下述之一: 表示衍生面片模型的面片数据与原始面片模型的面片数据之间的误差的数据; 所述表示衍生面片 模型与原始面片模型之间的误差的数据的子集。
全文摘要
本发明涉及计算机图形的网络传输和显示。提供一种用于处理三维模型数据的方法和装置,该方法包含获取原始面片模型的面片数据;用预定的面片模型构造算法,由原始面片模型的顶点数据构造一个衍生面片模型;比较原始面片模型的面片数据与衍生面片模型的面片数据,获得衍生面片模型的误差数据;发送与原始面片模型相关的顶点数据;发送衍生面片模型的误差数据。
文档编号G06T19/00GK103186924SQ201110461368
公开日2013年7月3日 申请日期2011年12月30日 优先权日2011年12月30日
发明者王宜敏, 王健, 胡国强, 孟繁晶, 朱子玉 申请人:国际商业机器公司