图形数据表示的制作方法_3

文档序号:9713620阅读:来源:国知局
br>[0068]最终,网格数据21包括纹理索引30,每个纹理索引指向在值图20中的二维矢量。每个纹理索引应用于三角索引中的相应索引,按照与三角索引相同的顺序存储纹理索引。每个二维矢量用于指示平面纹理中的位置,应被布置为与相应三角顶点相重合。
[0069]现在移动材料数据22,每个实例具有:字符串形式的名称;扩散颜色(diffuseC0l0Ur)31,提供为表示值图20的四维矢量26c中的四维矢量的整数;扩散纹理32,提供为对blob数据24(下文所述)的实例的参考;以及反射颜色33,提供为表示值图20的四维矢量26c中的四维矢量的整数。应理解,并非材料数据22的所有实例都需要具有纹理和颜色数据二者。
[0070]事件数据23具有使用限定结构来产生对象的实例。每个实例具有字符串形式的名称,其位置采用索引的形式,其中该索引标识存储在值图20中的三维矢量。位置标识三维空间内的点,其中所述事件位于该点处。此外,转角标识提供转角信息的三维矢量。可以创建层级关系的事件,子数据限定这种层级关系。这种层级关系可以用于限定来自组件部分的复杂对象,其中根实例表示对象,子对象限定其组件部分。在这种情况下,相对它们的母对象,规定了子对象的位置和转角数据。
[0071]每个事件包括网格名称和材料名称,分别是表示上述网格数据和材料数据的实例的字符串。参考名称采用标识另一事件实例的字符串的形式,从而允许限定特定图形对象的两个实例,一个引用另一个以便允许共享相同特性,且每个事件具有它自己的位置和位置区域。
[0072]在一些实施例中,可以创建一些组件的未命名实例,并将其用于在没有对特定组件的实例进行规定的情况下提供默认信息。例如,在事件实例无法通过名称标识网格分量实例的情况下,该事件实例可以使用从没有名称的网格数据的实例得到的数据。
[0073]Blob数据24被布置为存储数据字节字符串。每个实例包括名称和类型数据(二者都是字符串)以及表示该数据的字节阵列。
[0074]元数据25以名称、值字符串对的形成存储与图形数据相关的数据。
[0075]应认识到,上述各种组件和在这些组件中包括的各种数据项目可以通常在特定示例数据文件中出现零次或更多次,取决于要呈现的数据的特性。
[0076]现参考图7到11来呈现使用数据的示例(诸如,如上所述的)。示例涉及以等轴测投影来呈现图7所示的三维表面。图8A示出了x-y平面内的表面;图8B示出了 ζ-y平面内的表面;且图8C示出了x-z平面内的表面。
[0077]参考图7,可以看出每个顶点具有一个或更多个法线(由点状线来表示),且下文将进行详细描述,其中当所述表面位于场景内时,使用一个或更多个法线。
[0078]参考图8A,六个顶点被标记为A到F。可以看出,所述表面包括四个三角形,将所述三角形标记为切、丨1、丨2、丨3。三角形切和丨3具有两个重合的顶点8、(:。三角形切和丨1具有两个重合的顶点C、D。三角形tl和t2具有两个重合的顶点D、E。从图3可以看出,两个法线示出在顶点D和E处。因此,顶点D和E中的每一个单独呈现在存储数据中,每个具有相应法线。这是由于该表面并非在这些顶点处是齐平的。
[0079]图9示出了在应用特定纹理之后在x-y平面内的网格。纹理由一系列标记方块形成。在将顶点B和C相连的线段上纹理的不连续性有助于将纹理应用于所述表面的方式,如下文所述。
[0080]参考图12到19,图12到19是以参考图5所述的方式存储用以呈现图7到11的表面的数据的表格。
[0081]图12示出了存储作为值图20的一部分的浮点数据。它包括索引和相应浮点值。所存储浮点值的索引从I开始,以便允许将索引O用于呈现无需进行存储的浮点值O。如上所述,所存储的浮点值中的每一个为正值。
[0082]图13示出了存储作为值图20的一部分的三维矢量。存储12个矢量,每个都具有索弓I,三个整数值分别针对x、y和Z分量来标识图12的浮点数据中的浮点值。所存储的整数值是有符号的,将所述符号应用于从图12的浮点数据得到的值,如上所述。
[0083]类似地,图14示出了以类似方式存储的二维矢量。每个都具有索引和两个整数值,其中所述整数值标识在图12的浮点数据中的值。
[0084]图12示出了单个存储的四维矢量。文中,所存储的矢量具有索引和四个整数值,每个整数值分别标识图12的浮点数据中的浮点值。
[0085]图12到15的数据共同构成上述值图20。
[0086]图16示出了被存储作为网格数据21的一部分的顶点索引,其中网格数据21限定了图7到11的表面。所存储的数据包括索引和标识三维矢量的索引。为了便于参考,图14示出了图6A的顶点标签如何与存储数据的每个顶点相对应。可以看出,顶点D和E二者都被表示为两个顶点数据项目,这是由于如上所述这些顶点中的每一个具有两个法线,一个与三角形tl相关联,一个与三角形t2相关联。
[0087]先参考图10,再次示出x-y平面内的表面。每个顶点被注释为以下形式:
[0088](xl,yl,zl):vector index:(x2,y2,z2)
[0089]其中
[0090]矢量索引(vectorindex)是在图13的表格内的索引;
[0091 ] (XI,yI,zI)是基于索引(x2,y2,z2)从浮点数据得到的矢量值,其中所述索引是当使用矢量索引值进行检索时由图13的表格提供的索引。
[0092]图17示出了用于呈现图5的表面的三角形顶点。所存储的数据包括索引,每个索引具有对存储在图16的表格中的顶点索引的引用。为了便于参考,图17附加示出了每个数据项目表示图10中的哪个三角形顶点。具体地,在图17中用数字以及字母(a、b或c)来标记每个三角形顶点,其中所述数字表示它所属的三角形(三角形切、丨1、丨2、丨3、丨4),且所述字母识别该三角形的顶点之一的,图10示出了这些字母。可以从图10看出,例如,在三角形t0、tl和13的每一个中的标记有c的顶点是重合的。还可以看出,在图17中,这些顶点中的每个表示在图16的表格中的同一顶点数据。相反,重合顶点tl,a和t2,a表示不同顶点数据项目,考虑到它们具有不同法线(如图5所示)。
[0093]参考图18,描述了纹理索引数据。这包括针对每个三角形索引的值(存储在图17的表格中),以与图17的表格的数据相同的顺序存储图18的表格的数据。对于每个三角形索弓I,存在存储的二维矢量,其中二维矢量标识在要被应用于相应三角形索引(图11)的纹理40的二维平面内的点。所存储的数据包括索引和对图14的表格中的二维矢量的适合参考。图18还以图17的方式示出了每个条目如何表示三角形顶点。
[0094]参考图11,在三角形中用数字来标注每个顶点,从而识别图18的表格中纹理索引条目之一。同样以以下方式标注在各三角形外部的每个顶点:
[0095](ul,vl):vector index:(u2,v2)
[0096]其中
[0097]矢量索引(vectorindex)是在图14的表格内的索引;
[0098](ul,vl)是基于索引(u2,v2)从浮点数据得到的矢量值,其中所述索引是当使用矢量索引值进行检索时由图14的表格提供的索引。
[0099]通常,以上述方式将纹理应用于由三角形构成的表面对于本领域技术人员而言是公知的。简言之,每个二维矢量标识在纹理40的平面内的点。与二维矢量相关联的三角形顶点位于在纹理平面40内的该点处。相对图12的连续纹理,示出了该表面,且由于不连续地应用纹理,该表面在图12的顶点B和C处断开。
[0100]图19示出了顶点法线数据,针对图16的顶点数据的每个顶点存储一个条目。以与图16相同的顺序存储图19的数据。
[0101]应认识到,图16到19的数据共同限定图5的网格数据21。
[0102]在以参考图5所述的方式呈现图7到11的表面的情况下,发现所需的总的存储空间缩小4.126倍。考虑到压缩是无损的(S卩,完全恢复原始数据),压缩比值根据要呈现的数据而明显变化。1788个数据的测试示出了最小压缩比值为1.148:1和最大压缩比值8:1,平均是1.866:1
[0103]
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1