一种多子网格模型上进行面分裂型曲面细分的方法

文档序号:6520386阅读:230来源:国知局
一种多子网格模型上进行面分裂型曲面细分的方法
【专利摘要】本发明公开了一种多子网格模型上进行面分裂型曲面细分的方法。该方法步骤包括:读取网格模型的所有子网格数据和uv坐标,以及其他关联属性值,如法向,颜色等;建立模型点、边、面拓扑数据结构;根据细分方法几何规则,计算细分曲面的新顶点坐标,并计算它们对应的uv坐标和其它属性值;根据细分方法的拓扑规则,更新细分模型的子网格数据、uv坐标和其它属性值;如果需要下一次细分,更新拓扑数据结构,重复上述过程。细分后网格模型的子网格带有原子网格的所有属性,可以直接用于渲染显示,除大幅提升模型细节和画质外,该发明也提高建模人员开发效率,减少模型文件容量,优化传输效率。
【专利说明】一种多子网格模型上进行面分裂型曲面细分的方法
【技术领域】
[0001]本发明属于计算机应用技术中的计算机图形学和3D建模【技术领域】,尤其涉及一种多子网格模型上进行面分裂型曲面细分的方法。
【背景技术】
[0002]在计算机图形学与CAD领域,细分曲面是一种通过一组规范操作一个粗糙的分段线性的多边形网格来表示一个光滑曲面的方法,用于从任意控制网格创建光滑曲面,细分曲面定义为一个无穷细化过程的极限。光滑曲面通过细分粗网格曲面的每一个多边形面元为更精细的面元,从而更好地逼近光滑曲面,这个过程递归进行,其极限情况是一个光滑曲面。
[0003]在主要的建模软件中,细分曲面建模现在比非均匀有理B样条(NURBS)建模更为流行。因为它们有很多优点:
[0004]?适用于任意拓扑结构
[0005]?数值上稳定
[0006]?实现简易
[0007]?局部连续性控制
[0008]?局部细化
[0009]因此细分建模方法在动漫游戏、影视制作等领域广泛应用于复杂形状的数字化创作。尽管曲面几何形状很重要,但只有形状不足以创造数字角色或其他真实感对象。一般说来,我们给形状附加诸如纹理、颜色、法向等信息,甚至通过纹理映射实现位移贴图。建立纹理映射,用户将曲面分解为一组坐标图(chart)(曲面上与一些简单平面形状一一对应、在纹理空间互不相连的区域),这个过程在图形学上又称为曲面的参数化。一旦建立起这种对应,用户就可以视坐标图为二维图像,如同平面画画一样在曲面上绘图。这个坐标称为UV坐标。
[0010]一个粗网格曲面结合细分规则能生成提升模型细节和画质的光滑曲面。此外,细分方法让建模人员无需手动设计上百万个三角形的复杂模型,只需简单勾绘一个初始控制网格的轮廓,剩下的工作就可以交给细分技术自动细分光滑,极大提高开发效率。如果初始控制网格中的纹理贴图能在细分过程中自动计算在顶点加密后的UV坐标,纹理映射就能自动完成,就不必传递数据量大的高质量的几何模型与纹理映射。使用简单的模型也在数据交换处理时大幅减少文件大小,大幅节约存储开销与网络带宽开销。
[0011 ] 在实际应用中(如游戏、影视特效制作),构成一个具体3D对象定义的网格模型可能由多个子网格部分组成,这是因为网格的不同部分可以使用不同的材质或不同的顶点格式,以便改变它们之间需要的渲染状态,提高渲染效率。在细分过程,为保证细分规则正确执行、细分曲面光滑,多个子网格要求作为总体进行细分,同时又要独立处理各个子网格的uv坐标等属性,保证它们之间的拼接和自然过渡。
[0012]为了实现曲面细分方法在细分过程中纹理坐标的自动计算,T.DeRose等人(T.DeRose, Μ.Kass, and Τ.Truong.Subdivision surfaces in character animation.1nProceedings of SIGGRAPH1998,85-94.)将控制顶点的uv坐标(s’ t)用作用于几何坐标(x, y, z)的细分规则进行细分操作,即控制点位置与细分可视为用由(x,y,z,s,t)组成的
5维空间代替。He 等人(L.He, S.Schaefer., K.Hormann.Parameterizing SubdivisionSurfaces.SIGGRAPH2010.)直接将现有的参数化方法扩展到细分曲面上,并优化结果,但这个方法需要在生成最终细分曲面基础上,并进行曲面坐标图的划分,不能单独使用控制网格进行数据传递。胡海龙等人(胡海龙,刘树群.Catmull-Clark细分曲面的纹理映射技术.微计算机信息,2007年18期),提出了一种应用于细分曲面的纹理映射方法,就是随着控制网格的逐步加细,相应的纹理图像作适当的分割和收缩并映射到相应的细分曲面上,但方法过于粗糙,对于其它的细分方法第η次的细分曲面并不一定能很好地投影到第η-1次的细分曲面上。

【发明内容】

[0013](一)要解决的技术问题
[0014]本发明所要解决的技术问题是对于多个不同属性patch组成的粗网格模型,通过面分裂型细分方法提升模型细节和画质,并能在细分过程中自动计算uv坐标等属性,细分后的patch继承原patch的渲染属性,可直接用于渲染显示。这个技术可应用于3D模型设计、在线数字娱乐、影视动漫游戏制作等方面。
[0015](二)技术方案
[0016]为此,本发明提出一种多子网格模型上进行面分裂型曲面细分的方法,其包括:
[0017]步骤1、读取所述网格模型的所有patch数据;
[0018]步骤2、根据所述patch数据,建立模型点、边、面的拓扑数据结构mesh。
[0019]步骤3:计算细分曲面的新顶点坐标,并依据生成新顶点的原始顶点的类型以及相应的细分几何规则计算它们对应的uv坐标和其它属性值;
[0020]步骤4:对所述新顶点进行拓扑连接,生成细分曲面的新面,更新模型细分后的patch数据、uv坐标和其它属性值;
[0021]步骤5:如果需要下一次细分,更新拓扑数据结构mesh,返回步骤3。
[0022]根据本发明的一种【具体实施方式】,步骤2的拓扑数据结构mesh包含所有子网格patch不重复的点、边、面拓扑结构。
[0023]根据本发明的一种【具体实施方式】,mesh每个点、边、面带有所属patch的ID号;顶点和边可拥有多个patch ID ;每个面元只属于一个patch,它在mesh中有唯一的patch ID;如果顶点对应多个不同的uv坐标,称为分裂点,否则为正常点。
[0024]根据本发明的一种【具体实施方式】,步骤3根据选用细分方法几何规则用mesh计算细分曲面的顶点坐标,并依据生成新顶点的原始顶点的类型以及相应的细分几何规则分别计算新顶点V-vertex、新边点E-vertex、新面点F-vertex的uv坐标。
[0025]根据本发明的一种【具体实施方式】,新顶点V-vertex、新边点E-vertex、新面点F-vertex对应的uv坐标计算方式如下:
[0026]新顶点V-vertex:原顶点的uv坐标;
[0027]新边点E-vertex:如果边点是正常点,uv坐标用作用于顶点坐标的细分规则进行细分操作。如果边点为分裂点,规范化边点的对应边的两个原顶点的加权值,使相加之和为I,然后用规范化后的加权值插值两个原顶点的UV坐标,该操作对对应边的相邻面元依次单独进行,因此对应不同的相邻面元有不同的UV坐标属性;
[0028]新面点F-vertex:采用计算新面点的顶点的加权值,uv坐标用作用于顶点坐标的细分规则进行细分操作。
[0029]根据本发明的一种【具体实施方式】,当新边点E-vertex对应边两个顶点为分裂点,或者一个为分裂点,一个为正常点,但这个正常点为u V展开图的边界点,则这个边点是分裂点,否则为正常点。
[0030]根据本发明的一种【具体实施方式】,步骤3其它关联属性各分量值按uv坐标的插值方式进行计算。
[0031]根据本发明的一种【具体实施方式】,步骤4中,模型曲面细分后,模型的patch几何数据、uv坐标和其他属性同步更新。
[0032]根据本发明的一种【具体实施方式】,patch几何数据更新,包括点、面,新产生的点、面根据它们的patch ID不重复地写入每个patch的几何数据中。
[0033]根据本发明的一种【具体实施方式】,patch数据更新,uv坐标等patch关联属性按patch的属性格式写入patch的关联属性数据中,可以直接用于渲染。
[0034](三)有益效果
[0035]本发明公开的上述方法可以解决在同一模型但不同patch部分有不同渲染需求(材质、顶点格式、纹理等)的光滑细分问题,在几何细分过程中自动实现不同patch之间纹理坐标等属性值的细分插值,同时保持这些属性在patch内和patch间的差别、拼接和过渡。由于一个粗网格曲面结合细分规则在保持小数据量的同时大幅提升模型细节和画质,能极大提升创作效率;初始控制网格中的纹理贴图等属性在细分过程中自动计算,能在顶点细分加密后自动完成,因而在远程传输时就不必要传递大数据量的高质量的几何模型与uv坐标等属性,使用简单的模型在数据交换处理时也能大幅减少文件大小,大幅节约存储开销与网络带宽开销。因此本发明在网络3D虚拟场景、影视游戏制作、3D模型建模、3D网游等应用领域有重要的使用价值。
【专利附图】

【附图说明】
[0036]图1示出了本发明中在多子网格模型上进行面分裂型曲面细分的执行流程图;
[0037]图2示出了本发明中一个带纹理的分片表示模型图;
[0038]图3示出了图2模型七个子网络(patch)组成的示意图;
[0039]图4示出了本发明细分图2模型一次的效果图;
[0040]图5示出了本发明细分图2模型两次的效果图;
[0041 ]图6示出了另一个粗网格模型和贴图效果;
[0042]图7示出了图6模型细分后的效果图。
【具体实施方式】
[0043]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施方案,以uv坐标为网格附加属性为例,并参照附图,对本发明作进一步的详细说明。[0044]本发明提出了一种在多子网格模型上进行的面分裂型曲面细分的方法,在细分过程中,纹理坐标进行自动插值。图1是本发明的方法流程图,如图1所示,本发明的方法包括如下步骤:
[0045]步骤1:读取网格模型的所有子网格(patch)数据。
[0046]常见的patch数据包括每个patch的顶点坐标、uv坐标、面组成顶点坐标索引和对应uv坐标索引。模型不同,patch数据可能还包括有不同属性数据。为了表述简单明白,本说明书中以处理uv坐标为例,其它网格相关属性(如颜色、材质)数据的处理类似,各个属性分量按uv坐标的计算过程进行计算。
[0047]步骤2:根据所述patch数据,建立网格模型的点、边、面的拓扑数据结构mesh。
[0048]根据步骤I读入的所述子网格模型的patch数据,建立用于细分的网格拓扑数据结构mesh。mesh包含所有子网格patch不重复的点、边、面的拓扑结构,如翼边数据结构,以供快速查询。
[0049]步骤2进一步包括以下操作:
[0050]步骤2.1:建立mesh,依次遍历所有patch,在mesh中保存所有patch顶点,并将patch顶点标记为分裂点或正常点,将所有的patch顶点与mesh顶点的对应索引关系记录在一个数组结构map中,并将所有的patch的每个面元的顶点索引更新为数组结构map对应的索引号后保存在一个面元 数组_f中。其中,所谓分裂点是指拥有不同uv坐标的顶点,所谓正常点是指非分裂点。
[0051]在mesh中添加一个patch顶点时,检查这个patch顶点是否在mesh内已有相同空间位置的点(例如在不同patch上相同点)。如果有相同点,这个patch顶点用mesh内的相同点顶点代替。
[0052]接着,判断所添加的patch顶点是分裂点还是正常点。mesh每个点、边、面带有所属patch的ID号;顶点和边可拥有多个patch ID ;每个面元只属于一个patch,它在mesh中有唯一的patch ID。一种实施方式是,如果这个顶点对应多个不同的纹理坐标,设置一个分裂点标记变量bSplit,当patch顶点是分裂点时,分裂点标记变量bSplit为true,否则,当其为正常点是,分裂点标记变量bSplit为false。但是,不管哪种情况,每个patch顶点在mesh中都只有一个对应点,但mesh中一个顶点可能对应多个patch顶点,因此patch内顶点索引号与mesh内对应顶点的索引号可能不相同。
[0053]然后,为了表示这种对应关系,将patch顶点与mesh顶点的对应索引关系记录在一个数组结构map中,同时,将patch的每个面元的顶点数据更新为map的对应索引号,并进行保存。例如保存在一个面元数组_f中。通过map和_€可以获得patch某个顶点或某个面元的一个顶点在mesh内对应的顶点索引。
[0054]步骤2.2:依次遍历所有patch,根据面元数组_f建立mesh的边、面的索引数据结构,保证mesh内面元组成顶点的索引号与mesh内的顶点保持一致,而不是与patch内的顶点索引号保持一致。
[0055]在面元存入mesh时,建立面信息,根据面元的顶点连接次序建立mesh的边数据,重复的边在mesh中只保留一个。mesh的面元数据与patch面元数据是--对应的。
[0056]步骤2.3:对于mesh内的点、边、面数据,根据其建立时对应的patch,分别设置一个变量保存对应的patch ID号。[0057] 这样可以根据这个patch ID快速知道某个元素(点、边、面)属于哪个patch。由于某个顶点或边可能属于不同的patch,因此它们的patch ID可能不唯一。
[0058]步骤3:计算细分曲面的新顶点坐标,并依据生成新顶点的原始顶点的类型以及相应的细分几何规则计算它们对应的uv坐标。
[0059]曲面细分后的顶点坐标,包括新顶点(V-vertex)、新边点(E-vertex)、新面点(F-vertex),以及它们的uv坐标。
[0060]注意,本发明可采用现有的任何面分裂型细分方法,并根据细分方法的几何规则来计算曲面细分后的顶点坐标。但是,一个具体的细分方法不一定产生全部新顶点类型,如LOOP细分方法,不产生F-vertex,在本发明中就不需要F-vertex的相关操作。细分曲面的新顶点的几何坐标的计算规则与选用的细分方法有关。
[0061]本发明的计算细分曲面的新顶点uv坐标的【具体实施方式】如下所述。
[0062]Patch ID 与 bSplit 的确定:
[0063]? V-vertex:与原顶点相同;
[0064]? E-vertex:当对应边两个顶点为分裂点,或者一个为分裂点,一个为正常点,但正常点为uv展开图的边界点,则这个边点的bSplit为true,否则为false ;patch ID为对应边的patch ID。
[0065]? F-vertex:patch ID 为对应面的 patch ID, bSplit 为 false。
[0066]uv坐标计算方式为:
[0067]? V-vertex:原顶点 uv 坐标;
[0068]? E-vertex:由使用的细分方法确定
[0069].E-vertex当其是是正常点,采用计算这个新边点的细分规则的原顶点的加权值对原顶点的UV坐标进行加权计算UV坐标。
[0070].E-vertex当其是分裂点,这个边点可能属于不同的patch,由于patch ID不唯一,对应多个uv坐标,这个uv坐标依附于这个顶点patch ID,其中一个patch ID对应于一个patch ;也可能是这个边点对应的边在一个patch内,作为曲面的参数化引入的网格切割线。计算这个E-vertex所对应的多个uv坐标,基本原则是根据这个分裂点所对应的不同面元分别计算:
[0071]a) E-vertex当其属于不同的patch,计算对应uv坐标需要使用对应patch上的uv坐标进行插值,方法是用该边对应的patch ID,找到patch数据中所属的面元,然后找到对应边的顶点uv值进行加权插值,该插值采用该边点对应边的两个顶点的几何细分加权值,先规范化使相加之和为1,然后用这两加权值对对应边的顶点uv值进行插值,就是需要的UV坐标值。
[0072]b)E-vertex当其属于同一的patch,只是作为曲面的参数化引入的网格切割线,方法是根据这个E-vertex对应的边检索到相邻的两个面元,对每个面元重复a)中“找到patch数据中所属的面元”后计算uv坐标的过程,就可以得以需要的uv坐标值。
[0073]? F-vertex:采用计算这个新面点的细分规则的原顶点的加权值直接对各顶点对应的uv坐标进行加权插值,计算结果就是需要的uv坐标值。
[0074]由于最后需要将V-vertex、E-vertex、F_vertex写回到对应的patch中进行渲染。步骤3执行前,为每个patch设置一个E-vertex计算器和一个F-vertex的计数器。在计算细分曲面的新顶点UV坐标过程中,每设置一个新的E-vertex或F-vertex的patch ID,就将相应的E-vertex或F-vertex的计数器加I,这个步骤3结束后,根据每个计数器值就知道每个patch顶点数组中要增加多少个顶点,以便在后续步骤中新顶点写回到对应patch前处理时设置相关数组变量有足够的存储长度。
[0075]步骤4:对新顶点进行拓扑连接,生成细分曲面的新面,根据新的点、边、面的patch ID更新细分后的patch数据和uv坐标。
[0076]根据选用细分方法的拓扑规则,对新顶点进行拓扑连接,生成细分曲面的新面,其顶点可能由V-vertex、E-vertex或F-vertex组成,因为它们既可能为正常点,也可能是分裂点,所以情况略复杂。
[0077]首先为每个patch建立一个即将增加的E-vertex、F-vertex的索引记录EB、FB和对应uv的EBuv、FBuv的索引记录,初值-1,表示未写入,其长度根据步骤3的计数器得至Li。但要注意的是,一个E-vertex可能对应两个uv坐标,这时EBuv内对应的值不仅需要记录uv坐标的索引值,还需要记录计算这个uv坐标的面元索引号,以便在后在写回处理时能被正确区分这个E-vertex所对应的不同uv坐标索引。另外,由于每个V-vertex与原patch中的顶点是对应的,这部分顶点不需要其它特别处理,只要更新patch中的对应顶点坐标;对于E-vertex与F-vertex顶点,要将patch中的顶点数组增加E-vertex计算器与F-vertex计数器之和的长度,以更写回这部分增加的新顶点。
[0078]下面具体说明如何将mesh细分后的点、面数据与uv坐标输出到patch中。在实现时,在mesh外按各patch 中的面逐个处理更方便,这时patch的顶点与mesh中的面元顶点由map进行映射对应。
[0079]对于某个patch中一个未细分的面元,按规则细分成若干新面,依次写入patch的面数组中,包括新面顶点坐标索引、uv坐标索引、uv坐标更新。新面的顶点是正常点,按正常的方式操作;如果新面含有分裂点,这个顶点对应多个uv值,需要分开计算。过程如下:
[0080]1.更新V-vertex在patch中对应的坐标值;
[0081]2.对patch中的所有面片进行面分裂处理,将每个新面元记入面元数组中,包括组成顶点索弓丨点、uv索引号
[0082]?顶点是正常点,uv值由步骤3得到。
[0083]?顶点是V-vertex,它在patch中由uv坐标索引值由原面信息得到;顶点索引值就是原来索引值。
[0084]?顶点是E-vertex或F-vertex,检查它在EBuv或FBuv对应索引是否-1,如果是,在patch中增加中该点对应的uv坐标,并将对应的索引记录在EBuv或FBuv中;如果不是-1,说明该点已经处理,EBuv或FBuv记录的索引就是这个新面顶点的uv索引。该顶点坐标按相同的方式处理,但顶点索引记录使用EB或FB。
[0085]?顶点是分裂点,只能是V-vertex和E-vertex。uv坐标由步聚3中面元对应的顶点UV插值计算,可能有多个UV坐标。
[0086]?顶点坐标。如果是V-vertex,取原来的索引号;如果是E-vertex,检查这个点与当前patch的patch ID—致的EB对应索引值是否-1:如果是-1,将这个顶点加入patch的顶点数组,并将索引序号记入EB中;否则,该顶点在patch的序列中索引序号在对应的EB中,它作为面元顶点索引号。[0087].uv坐标。与顶点坐标处理方式相似,但其值须由当前面元的相关的uv坐标插值计算,详见步骤3。
[0088]a) V-vertex:uv坐标取原值,索引由面元对应顶点的uv索引号取得。
[0089]b) E-vertex:检查EBuv中面元索引号为当前面元的uv索引是否为-1,如果是,将uv坐标直接添加到patch内,得到一个索引号,将-1更新为这个索引号,同时将面元索引号记录,供下次查询使用;如果不是-1,取EBuv中的对应面元的uv索引号。
[0090]步骤5:如果需要下一次细分,更新检索数据拓扑结构,返回步骤3
[0091]若要再进行一次细分,只需在步骤4中同步更新mesh内的点、边、面数据结构,与新的patch数据保持一致,返回步骤3。
[0092]下面以具体的实验结果说明本发明提出的上述方案。本实验中用C++语言和OpenGL实现了本发明所描述的方法,模型网格为OGRE的mesh文件。细分方法使用Loop细分。实验在一台 AMD Athlon64x23600+ 的 CPU、4GB 内存、Nvidia GeForce GTX550Ti 显卡、操作系统为Windows7。
[0093]图2是一个带纹理的分片表示模型,其中共420个顶点,588个面,显示效果较粗糖。
[0094]图3表示整个模型分解为七个部分的分割示意图,每个部分表示一个patch,这种分割有利于模型uv图的展开与纹理制作。
[0095]图4是用本发明方法细分图2中模型一次的效果图,图5是用本发明方法细分图2中模型两次的效果图。随着细分次数的增多,模型的几何形状变得光滑,而对应纹理帖图的正确效果表明,本发明的uv插值方法合理可行。
[0096]图6是另一个粗网格模型和贴图效果,图7是图6模型细分后的效果图。说明本发明的插值方法能根据细分过程自动计算合理的新顶点的uv坐标,保持纹理效果。
[0097]综上,本发明解决了如何将一个带非几何属性的多子网格模型上进行面分裂曲面细分。在对模型进行整体细分的过程中,能自动对网格的uv坐标等附加属性进行细分,在几何细分过程中自动实现不同patch之间纹理坐标等属性的细分插值,同时保持这些属性在patch内和patch间的差别、拼接和过渡,曲面细分后模型的几何结构与网格属性写回原来的数据结构中,可直接用于渲染显示。由于原始的简化模型数据量少,能提高建模人员的工作效率,同时低数据量也提高数据交换与传输的效率。
[0098]以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种多子网格模型上进行面分裂型曲面细分的方法,其包括: 步骤1、读取所述网格模型的所有patch数据; 步骤2、根据所述patch数据,建立模型点、边、面的拓扑数据结构mesh。 步骤3:计算细分曲面的新顶点坐标,并依据生成新顶点的原始顶点的类型以及相应的细分几何规则计算它们对应的UV坐标和其它属性值; 步骤4:对所述新顶点进行拓扑连接,生成细分曲面的新面,更新模型细分后的patch数据、uv坐标和其它属性值; 步骤5:如果需要下一次细分,更新拓扑数据结构mesh,返回步骤3。
2.如权利要求1所述的多子网格模型上进行面分裂型曲面细分的方法,其特征在于,步骤2的拓扑数据结构mesh包含所有子网格patch不重复的点、边、面拓扑结构。
3.如权利要求2所述的多子网格模型上进行面分裂型曲面细分的方法,其特征在于,mesh每个点、边、面带有所属patch的ID号;顶点和边可拥有多个patch ID ;每个面元只属于一个patch,它在mesh中有唯一的patch ID ;如果顶点对应多个不同的uv坐标,称为分裂点,否则为正常点。
4.如权利要求1所述的多子网格模型上进行面分裂型曲面细分的方法,其特征在于,步骤3根据选用细分方法几何规则用mesh计算细分曲面的顶点坐标,并依据生成新顶点的原始顶点的类型以及相应的细分几何规则分别计算新顶点V-vertex、新边点E-vertex、新面点F-vertex的uv坐标。
5.如权利要求4所述的`多子网格模型上进行面分裂型曲面细分的方法,其特征在于,新顶点V-vertex、新边点E-vertex、新面点F-vertex对应的uv坐标计算方式如下: 新顶点V-vertex:原顶点的uv坐标; 新边点E-vertex:如果边点是正常点,uv坐标用作用于顶点坐标的细分规则进行细分操作。如果边点为分裂点,规范化边点的对应边的两个原顶点的加权值,使相加之和为1,然后用规范化后的加权值插值两个原顶点的uv坐标,该操作对对应边的相邻面元依次单独进行,因此对应不同的相邻面元有不同的uv坐标属性; 新面点F-vertex:采用计算新面点的顶点的加权值,uv坐标用作用于顶点坐标的细分规则进行细分操作。
6.如权利要求5所述的一种多子网格模型上进行面分裂型曲面细分的方法,其特征在于,当新边点E-vertex对应边两个顶点为分裂点,或者一个为分裂点,一个为正常点,但这个正常点为uv展开图的边界点,则这个边点是分裂点,否则为正常点。
7.如权利要求1所述的一种多子网格模型上进行面分裂型曲面细分的方法,其特征在于,步骤3其它关联属性各分量值按uv坐标的插值方式进行计算。
8.如权利要求1所述的一种多子网格模型上进行面分裂型曲面细分的方法,其特征在于,步骤4中,模型曲面细分后,模型的patch几何数据、uv坐标和其他属性同步更新。
9.如权利要求8所述的一种多子网格模型上进行面分裂型曲面细分的方法,其特征在于,patch几何数据更新,包括点、面,新产生的点、面根据它们的patch ID不重复地写入每个patch的几何数据中。
10.如权利要求9的一种多子网格模型上进行面分裂型曲面细分的方法,其特征在于,patch数据更新,uv坐标等patch关联属性按patch的属性格式写入patch的关联属性数据中,可以直 接用于渲染。
【文档编号】G06T17/30GK103559374SQ201310601250
【公开日】2014年2月5日 申请日期:2013年11月25日 优先权日:2013年11月25日
【发明者】车武军, 鲍冠伯, 王政, 徐波 申请人:中国科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1