法律状态公告日
法律状态信息
法律状态
2017-01-18
未缴年费专利权终止 IPC(主分类):G06F9/44 授权公告日:20060816 终止日期:20151205 申请日:20031205
专利权的终止
2006-08-16
授权
授权
2004-09-29
实质审查的生效
实质审查的生效
2004-07-21
公开
公开
技术领域
本发明涉及图形数据写(writing),特别地涉及一种使用有关图形数据压缩的元语言产生输入文件的方法和系统。
背景技术
一种传统可扩展MPEG-4文本格式技术(下文称为‘XMT’)能够表示MPEG-4基本要素,例如,二维(2D)或三维(3D)图形、音频和视频,从而编辑者能够方便地处理它们。此外,已经设计了一种内容编辑框架,以便允许由编辑者制作的数据在不同的应用中再使用,并且使数据具有兼容性和可移植性。数据的再使用和数据的兼容性和可移植性是能够实现的,因为在传统的XMT中定义与MPEG-4基本元素相关的可扩展标记语言(XML)语法。
可是,由于传统的XMT并不处理3D数据的压缩,因此很难去压缩与编辑者制作的3D内容相关的动画数据和表示(representtation)数据。
发明内容
本发明提供一种使用有关图形数据压缩的元语言产生输入文件的方法和装置,从而在编辑阶段能够容易地压缩图形数据。
本发明也提供一种使用有关图形数据压缩的元语言产生输入文件的方法和系统,所述方法和系统使用XMT定义由MPEG-4AFX所建议的压缩数据表示,从而在编辑阶段很容易地压缩图形数据。
根据本发明的一个方面,提供一种使用有关图形数据压缩的元语言产生输入文件的方法,所述方法包括产生可扩展标记语言(XML)模式,上述模式定义至少一个描述被压缩的对象数据的压缩节点,以及用于数据压缩的参数;基于XML模式,产生样式表,该样式表支持从输入XML文件向将被输入到数据压缩编码器的文件的转换;以及基于XML模式和样式表分析输入XML文件,以产生将被输入到数据压缩译码器的文件。较佳地,XML模式还包括指定文件位置的EncodingHints,其中所述文件存储将被压缩的对象数据。较佳地,所述参数至少包括下列参数之一:与对象的顶点坐标、对象的旋转信息、将被压缩的对象的位置信息相关的基于关键帧的动画数据的参数以及用于将被压缩的对象的三维(3D)网格信息的参数。
对象的顶点坐标是坐标内插器的数据,该坐标内插器的数据使用基于关键帧的图形动画中的x,y,z分量组成的顶点的坐标来表示对象位置。对象的旋转信息是基于关键帧的图形动画中的方向内插器的数据。对象的位置信息是基于关键帧的图形动画中的位置内插器的数据。根据本发明的另一个方面,提供一种使用有关图形数据压缩的元语言产生输入文件的方法,该方法包括:产生XMT模式,该模式定义一种定义被压缩对象数据的压缩节点,用于数据压缩的参数,以及至少指定存储被压缩对象数据的文件位置的BitWrapperEncodingHints;基于XMT模式,产生XMT2BIFS样式表和XMT2MUX样式表,其中XMT2BIFS样式表支持从XMT输入文件向场景文件的转换,XMT2MUX样式表支持从XMT输入文件到复用(mux)文件的转换;以及通过使用XMT模式以及XMT2BIFS和XMT2MUX样式表分析输入XMT文件以产生场景文件和复用文件。较佳地,压缩节点包括包含有将被压缩的对象数据的节点字段;不与url字段同时使用的缓冲字段,其中该缓冲字段使用带内场景(in-band scenario)而存储在压缩节点中定义的比特流;以及不与缓冲字段同时使用的url字段,其使用带外场景(out-bandscenario)链接有关压缩节点中定义的比特流的信息。较佳地,压缩节点还包括指定节点压缩模式的类型的类型字段。较佳地,所述参数至少包括用于与对象的顶点坐标、对象的旋转信息、被压缩对象的位置信息相关的基于关键帧的动画数据的参数,和用于将被压缩的对象的3D网格信息的参数之一。
较佳地,BitWrapperEncodingHints还指定:与压缩节点的URL ID相同的对象描述符ID,存储压缩比特流的文件的名字,以及流格式的类型,和在复用文件中所描述的文件名。优选地,分析输入XMT文件还包括接收描述定义原始数据的压缩节点、压缩参数以及缓冲器的输入XMT文件;并且通过使用XMT模式以及XMT2BIFS和XMT2MUX样式表分析输入XMT文件以产生场景文件和复用文件,其中场景文件包括原始数据、压缩参数以及暂存由原始数据压缩所获得的比特流的缓冲器,以及复用文件描述使用BIFS编码器编码场景文件所获得的文件名和和流格式。优选地,分析输入XMT文件还包括接收输入XMT文件,所述输入XMT文件定义含有能够暂存压缩对象数据的缓冲器的压缩节点;并且使用XMT模式以及XMT2BIFS和XMT2MUX样式表分析输入XMT文件以产生场景文件和复用文件,其中场景文件包含暂存比特流的缓冲器,该比特流表示压缩对象数据,以及复用文件说明了通过使用BIFS编码器来编码场景文件而获得的文件的名字和流格式。优选地,分析输入XMT文件包括:接收输入XMT文件,所述输入XMT文件描述定义原始数据、压缩参数以及url信息的压缩节点,以及定义与压缩节点的url ID相同的对象描述符ID和表示压缩对象数据的比特流的位置的BitWrapperEncodingHints;以及使用XMT模式以及XMT2BIFS和XMT2MUX样式表分析输入XMT文件以产生场景文件和复用文件,其中场景文件包括原始数据、压缩参数以及与链接有关原始数据的压缩所获得的比特流的信息的url信息,以及复用文件用于指定表示被压缩对象数据的比特流的位置和在BitWrapperEncodingHints中所定义的流格式。较佳地,输入XMT文件还包括ObjectDescriptorUpdate和从输入XMT文件的分析中所产生的复用文件的名字,所述ObjectDescriptorUpdate定义与BitWrapperEncodingHints中所指定的对象描述符ID相同的对象描述符ID,其中场景文件还指定与在BitWrapperEncodingHints中所说明的对象描述符ID相同的对象描述符ID以及复用文件的名字。
较佳地,分析输入XMT文件还包括接收输入XMT文件,所述输入XMT文件描述指定压缩节点的BitWrapperEncodingHints,该压缩节点定义链接关于已压缩对象数据的信息的url,所述输入XMT文件还描述与url ID相同的对象描述符ID以及表示压缩对象数据的比特流的位置;通过使用XMT模式以及XMT2BIFS和XMT2MUX样式表分析输入XMT文件以产生场景文件和复用文件,其中场景文件包含URL,该URL链接有关由原始数据的压缩所获得的比特流的信息,并且URL的ID与在压缩节点中所指定的对象描述符的ID相同,以及复用文件指定,表示BitWrapperEncodingHints中所定义的压缩对象数据的比特流的位置和流格式。同样,较佳地,输入XMT文件还包括ObjectDescriptorUpdate,其指定与BitWrapperEncodingHints中所定义的对象描述符ID相同的对象描述符ID,和通过输入XMT文件的分析而获得的复用文件的名字,其中场景文件还指定与BitWrapperEncodingHints中所定义的描述符ID相同的对象描述符ID和复用文件的名字。
根据本发明的又一方面,提供一种使用有关图形数据压缩的元语言来产生输入文件的系统,该系统包括:XML模式,XML模式定义至少包含有关被压缩对象数据的信息的压缩节点和用于数据压缩的参数;基于XML模式,支持输入XML文件到将被输入到预定数据压缩编码器的文件的转换的样式表;以及XML分析器,其基于XML模式和样式表来分析输入XML文件以产生输入到预定数据压缩编码器的文件。优选地,参数至少包括用于有关于对象顶点坐标的基于关键帧的动画数据的参数,用于对象的旋转信息的参数,用于被压缩的对象的位置信息的参数,以及用于被压缩的3D网格信息的参数之一。
根据本发明的又一方面,提供一种使用有关图形数据压缩的元语言来产生输入文件的系统,该系统包括:XML模式,XML模式定义用于指定被压缩的对象数据的压缩节点,和用于数据压缩的参数,以及BitWrapperEncodingHints,所述的BitWrapperEncodingHints至少说明在存储被压缩对象数据的文件的位置;XMT2BIFS样式表,其基于XMT模式而支持从输入XMT文件到场景文件的转换;XMT2MUX样式表,其基于XMT模式而支持从输入XMT文件到复用文件的转换;以及XMT文件,其使用XMT模式以及XMT2BIFS和XMT2MUX样式表分析输入XMT文件以产生场景和复用文件。
较佳地,压缩节点包括:用于说明被压缩对象数据的节点字段;缓冲字段,其不url字段同时使用,并且使用带内场景(in-band scenario)传输表示压缩对象数据的比特流,所述比特流在压缩节点中指定;以及url字段,其不与缓冲字段同时使用,并且使用带外场景(out-band scenario)传输表示被压缩的对象数据的比特流,该比特流在压缩节点中指定。较佳地,参数至少包括用于有关于对象顶点坐标的基于关键帧的动画数据的参数,用于对象的旋转信息的参数,用于被压缩的对象的位置信息的参数,以及用于被压缩的3D网格信息的参数之一。
较佳地,BitWrapperEncodingHints还包括:与压缩节点中所定义的URLID相同的对象描述符ID,存储有包含在复用文件中的比特流的文件的名字,以及流格式的类型。
根据本发明的又一方面,提供一种记录有在计算机中执行上述方法的程序的计算机可读记录介质。
附图说明
通过参考附图而详细地描述其中的优选实施例,本发明的上述和其他方面和优点将变得更加明显,其中:
图1是根据本发明的优选实施例,使用有关图象数据压缩的元语言的输入文件生成系统的结构图;
图2是根据本发明的另一优选实施例,使用有关图象数据压缩的元语言的输入文件生成系统的结构图;
图3说明使用文本语法的MPEG-4情景描述的XMT框架;
图4说明使用参数将有关对象A的三维(3D)数据压缩成比特流,并且使用″BufferWithEP.m3d″缓冲器传输该比特流;
图5说明使用已压缩比特流和缓冲器来传输3D数据;
图6说明使用参数将有关对象A的三维(3D)数据压缩成比特流,并且使用在″BitWrapper″节点中所定义的统一资源定位器(URL)来传输该比特流;
图7说明使用在″BitWrapper″中所定义的URL来传输有关使用已压缩比特流的对象A的3D数据。
具体实施方式
现在通过参照附图将更加详细地描述使用有关图形数据压缩的元语言的一种输入文件生成系统。
对于编辑者来说需要一种能够调整编辑、表示、处理以及压缩三维(3D)内容所必须的要素的方法,以便能够很容易地处理被压缩的3D数据。可以通过使用XMT来调整上述要素。XMT是用于编辑诸如音频、视频、两维(2D)内容以及三维(3D)内容之类的MPEG-4内容的框架(framework)。同样,XMT是一个使用文本语法表示MPEG-4情景描述的框架。该框架将在图3中进行说明。XMT允许内容编辑者、工具(tools)以及服务提供者再使用由另一内容编辑者所制作的内容,并且还能够使其与可扩展3D(X3D)和同步多媒体集成语言(SMIL)共同使用。
如图3所示,XMT格式能够在SMIL播放器、虚拟现实建模语言(VRML)播放器和MPEG-4播放器之间互换,并且通过这些播放器播放。更准确地说,参考图3,在预处理X3D内容之后,可以通过SMIL播放器来分析和播放XMT格式,或通过VRML播放器播放XMT格式,或在编译MPEG-4(mp4)格式的表示之后由MPEG-4播放器来播放XMT格式。
在XMT-A格式和XMT-Ω的双结构中给出XMT格式。XMT-A格式是一种MPEG-4内容的基于XML的版本(version),并且包括可扩展的3D图形(X3D),所述MPEG-4内容表示音频、视频、2D或3D图形数据,或它们的压缩。XMT-A格式还包括作为XMT-A格式的扩展的X3D,以表示MPEG-4的特征。在XMT-A格式中,文本格式和二进制格式以1∶1的比率映射。
XMT-Ω格式是基于SMIL的MPEG-4特征的高级表示。即使内容的编辑者不熟悉从Ω到A的机制,XMT也能够从XMT-Ω格式默认地映射为XMT-A格式。XMT-Ω格式提供一种能够使用户方便地编辑内容的界面提示功能。通常,MPEG-4数据以XMT-A格式表示、处理和压缩。
因此,一种调整编辑、表示、处理和压缩3D数据所必须的要素的压缩技术必须在XMT-A格式中定义,以便对于编辑者来说能够去压缩3D数据。
换句话说,因为在XMT格式中定义由MPEG-4 AFX所建议的压缩数据的表示,因此可能压缩与编辑者制作的3D内容相关的动画数据和表示数据。从而,编辑者能够基于该定义压缩3D数据,并且发送所压缩的数据。也就是说,压缩诸如动画数据和表示数据之类的3D数据所需要的要素与参数一起在XMT格式中定义。根据本发明,通过使用表示3D数据的压缩的节点,在XMT-A模式中定义用于3D数据压缩的要素定义。
在本发明中,提供一种使用元语言表示3D数据压缩的要素的方法并且基于上述方法压缩3D数据。
图1是使用有关图象数据压缩的元语言的输入文件生成系统的结构图。图1的系统包括XML分析器110、XML模式(schema)120以及样式表(stylesheet)130。XML模式120定义包含有关将被压缩的对象数据的信息的压缩节点,和数据压缩参数。样式表130基于XML模式120,支持从XML输入文件向输出到数据压缩编码器140的文件的转换。XML110使用XMT模式120和样式表130来分析XML输入文件100,并且产生被输入到数据压缩编码器140的文件。
图2是图1中使用有关图形数据压缩的一种元语言的输入文件生成系统的另一实施例的结构图。详细地,图2的系统使用元语言在XMT格式中定义由MPEG-4 AFX所提议的压缩数据的表示,所以能够进行图形数据的压缩。
图2的系统包括XMT分析器210、XMT2MUX样式表220、XMT2BIFS样式表230和XMT模式240。XMT模式240定义包含有关被压缩的对象数据的信息的压缩节点,数据压缩参数,以及包含有指定压缩对象数据的位置的信息的BitWrapperEncondingHints。XMT2BIFS样式表230基于XMT模式240,支持XMT输入文件向场景文件的转换。XMT2MUX样式表220基于XMT模式240,支持XMT输入文件200到复用(MUX)文件的转换。XMT分析器210使用XMT模式240、XMT2BIFS样式表230和XMT2MUX样式表220来分析XMT输入文件200并且产生场景文件和复用文件。
压缩节点与包含有将被压缩的对象数据的节点字段、缓冲字段,URL字段不兼容,缓冲字段与统一资源定位器字段不兼容并且使用带内场景(in-band scenario)传输在节点中所定义的比特流,以及URL字段与缓冲字段不兼容并且使用带外场景(out-band scenario)传输包含在节点中的压缩比特流。数据压缩参数可以至少包括下列参数之一:用于有关于对象的顶点坐标的基于关键帧(keyframe-based)的动画数据的参数,用于对象的旋转信息的参数,用于被压缩对象的位置信息的参数以及用于被压缩的3D网格信息的参数。BitWrapperEncondingHints还包含以下信息,有关诸如压缩节点的URL ID之类的对象描述符ID,存储被压缩比特流的文件的名字,包含在MUX文件中的文件,以及流格式的类型。
现在将更加详细地描述图2的系统。首先,描述包含有将被压缩的3D数据的压缩节点,和使用有关压缩节点的参数的XMT-A的数据压缩方法。
由于缺少有关3D数据压缩的XMT-A模式的定义,因此现有的XMT技术不能分析有关3D数据压缩的输入XMT文件。可是,根据本发明,如图2所示,XMT-A模式240包含了有关3D数据压缩的压缩节点和相关参数的定义。所以,XMT分析器能够基于XMT-A模式240中的定义、XMT2MUX样式表220和XMT2BIFS样式表230,来分析通过使用压缩节点而定义3D数据压缩的输入XMT文件200,并且产生输入到MPEG-4编码器的文件。MPEG-4编码器包括BIFS编码器250和MP4编码器260。当所产生的文件输入到BIFS编码器250和MP4编码器260时,产生.mp4比特流,由MPEG-4播放器(未示出)可视化并且显示在显示器上。
当使用压缩节点和有关3D数据的基于元语言的参数时,也就是使用定义3D压缩节点和参数的XMT-A模式,编辑者能够判定在编辑处理期间,3D数据是否将被压缩。如果判定3D数据将被压缩,则必须使用元语言给出参数。
如果编辑者判定需要压缩3D数据,则在调整参数的同时,通过使用随后两种方法之一来传输3D数据,所述两种方法为(i)将3D数据压缩为比特流并且传输该比特流;以及(ii)使用已压缩比特流来传输3D数据。
上述两种方法可以细分为四种方法:(i)使用参数将原始数据压缩为比特流并且使用缓冲器传输比特流;(ii)通过缓冲器使用已压缩比特流来传输原始数据;(iii)使用参数将原始数据压缩为比特流并且使用URL传输比特流;以及(iv)使用URL传输已压缩的比特流。编辑者可以使用上述四种方法之一来传输3D数据。
接下来,将描述一种在XMT格式中使用元语言表示用于压缩3D数据的因素的方法。在该方法中,通过使用元语言表示有关3D数据压缩的压缩节点和参数。在该发明中,将通过3D数据压缩所需要的″BitWrapper″节点和参数来描述该方法。
1.有关BitWrapper节点的XMT-A模式
1.1有关BitWrapper节点的BIFS语法
BitWrapper{#%NDT=SF2Dnode,SF3Dnode,SFGeometryNode
field SFWorldNode node NULL
field SFlnt32 type 0
field MFUrl url []
field SFString buffer ″″
}
简言之,″BitWrapper″节点定义从包含在节点字段中的数据到比特流的压缩和使用带内场景或带外场景对比特流的传输。″url″字段将数据的传输定义为带外比特流,以及″buffer″字段将数据的传输定义为诸如BIFS比特流的带内比特流。
如果编辑者压缩并且传输在″BitWrapper″节点中所定义的数据,那么程序设计者必须调整用于产生比特流的参数。可以使用XMT-A模式语法来进行参数的调整。然而,由于参数除了与特殊的编码语法相关外还与译码语法相关,因此在数据压缩期间可以调整参数。″BitWrapper″节点通过使用七种压缩工具而支持被压缩比特流的传输。
接下来,将要描述有关用于″BitWrapper″节点和有关3D关键帧动画数据的三个″坐标内插器(coordinate interpolator)″,″方向内插器(orientationinterpolator)″和″位置内插器(position interpolator)″节点,以及表示3D网格信息的″IndexedFaceSet″节点的参数的XMT-A模式。
1.2有关″BitWrapper″节点的XMT-A模式
1.2.1语法
<?xml version=″1.0″encoding=″UFT-8″?><schema xmlns=″http://www.w3.org/2001/XML Schema″xmlns:xmta=″urn:mpeg:mpeg4:xmta:schema:2002″targetNamespace=″urn:mpeg:mpeg4:xmta:schema:2002″elementFormDefault=″qualified″><element name=″BitWrapper″><complex Type><element name=″node″minOccurs=″0″form=″qualified″><complex Type> <group ref=″xmta:SFWorldNodes Type″minOccurs=″0″></complex Type></element><choice> <element name=″coordinateInterpolatorEncodingParameter″minOccurs=″0″maxOccurs=″1″> <complex Type><attributename=″keyQbits″type=″xmta:numOfKeyQBits″use=″optional″default=″8″/> <attribute name=″keyValueQbits″type=″xmta:numOfKeyQBits″use=″option al″default=″16″/><attribute name=″transpose″type=″xmta:transpose Type″<!-- SIPO <DP n="9"> --><dp n="d9"/>use=″optional″ default=″&quot;ON&quot;″/><attribute name=″linearKeycoder″type=″xmta:linearKeycoder Type″use=″optional″default=″&quot;LINEAR&quot;″/></complex Type></element><element name=″indexedFaceSetEncodingParameter″minOccurs=″0″maxOccurs=″1 ″><complex Type> <attribute name=″coordQBits″type=″xmta:numOfCoordQBits″use=″optional″default=″10″/> <attribute name=″normalQBits″type=″xmta:numOfCoordQBits″use=″optional″default=″9″/> <attribute name=″colorQBits″type=″xmta:numOfCoordQBits″use=″optional″default=″6″/> <attribute name=″texCoordQBits″type=″xmta:numOfCoordQBits″use=″optional″default=″10″/> <attribute name=″coordPredMode″type=″xmta:coordPredType″use=″optional″default=″2″/> <attribute name=″normalPredMode″type=″xmta:normalPredType″use=″optional″default=″0″/> <attribute name=″colorPredMode″type=″xmta:colorPredType″use=″optional″default=″0″/> <attribute name=″texCoordPredMode″type=″xmta:texCoordPredType″use=″optional″default=″0″/> <attribute name=″errorResilience″type=″xmta:errorResilience Type″use=″optional″default=″&quot;OFF&quot;″/> <attribute name=″bitsPerPacket″type=″xmta:SFInt32″use=″optional″default=″360″/> <attribute name=″boundaryPrediction″type=″xmta:boundPredictionType″use=″optional″default=″0″/><!-- SIPO <DP n="10"> --><dp n="d10"/></complexType></element><element name=″OrientationInterpolatorEncodingParameter″minOccurs=″0″maxOccurs=″1″> <complexType><attribute name=″keyQbits″type=″xmta:numOfKeyQBits″use=″optional″default=″8″/> <attribute name=″keyValueQbits″type=″xmta:numOfKeyQBits″use=″optional″default=″16″/><attribute name=″preservingMode″type= ″xmta:preservingType″use=″optional″default=″&quot;KEY&quot;″/><attribute name=″dpcmMode″type=″xmta:orientationDpcmType″use=″optional″default=″0″/> <attribute name=″aacMode_X″type=″xmta:aacType″use=″optional″default=″&quot;BINARY&quot;″/> <attribute name=″aacMode_Y″type=″xmta:aacType″use=″optional″default=″&quot;BINARY&quot;″/> <attribute name=″aacMode_Z″type=″xmta:aacType″use=″optional″default=″&quot;BINARY&quot;″/> <attribute name=″linearKeycoder″type=″xmta:linearKeycoderType″use=″optional″default=″&quot;LINEAR&quot;″/> </complex Type> </element> <element name=″PositionInterpolatorEncodingParameter″minOccurs=″0″maxOccours=″1″> <complex Type> <attribute name=″keyQBits″type=″xmta:numOfKeyQBits″use=″optional″default=″8″/> <attribute name=″keyValueQBits″type=″xmta:numOfKeyQBits″use=″optional″default=″16″/><attribute name=″preservingMode″type=″xmta:preserving<!-- SIPO <DP n="11"> --><dp n="d11"/>Type″use=″optional″default=″&quot;KEY&quot;″/><attribute name=″dpcmMode_X″type=″xmta:positionDpcmType″use=″optional″default=″0″/> <attribute name=″dpcmMode_Y″type=″xmta:positionDpcmType″use=″optional″default=″0″/> <attribute name=″dpcmMode_Z″type=″xmta:positionDpcmType″use=″optional″default=″0″/> <attribute name=″aacMode_X″type=″xmta:aacType″use=″optional″default=″&quot;BINARY&quot;″/> <attribute name=″aacMode_Y″type=″xmta:aacType″use=″optional″default=″&quot;BINARY&quot;″/> <attribute name=″aacMode_Z″type=″xmta:aacType″use=″optional″default=″&quot;BINARY&quot;″/> <attribute name=″linearKeycoder″type=″xmta:linearKeycoderType″use=″optional″default=″&quot;LINEAR&quot;″/> <attribute name=″intra_X″type=″xmta:intraType″use=″optional″default=″0″/> <attribute name=″intra_Y″type=″xmta:intraType″use=″optional″default=″0″/> <attribute name=″intra_Z″type=″xmta:intraType″use=″optional″default=″0″/> </complex Type> </element> <element name=″WaveSubdivisionSurfaceEncodingParameter″> </element> <element name=″MeshGridEncodingParameter″> </element> </choice> <attribute name=″type″type=″xmta:SFInt32″use=″optional″default=″0″/> <attribute name=″buffer″type=″xmta:SFString″ se=″optional″/><!-- SIPO <DP n="12"> --><dp n="d12"/><attribute name=″url″type=″xmta:MFUrl″use=″optional″/><attribute Group ref=″xmta:DefUseGroup″/><complex Type></element></schema>
1.2.2语义
″BitWrapper″是一种用于节点压缩的专用模式。在BIFS流或外部分离流中传输被压缩数据的表示。当在BIFS更新内传输流时,″缓冲器″字段包含被压缩数据的表示。如果在BIFS更新之外的分离流中传输流时,″url″字段包含一个流的URL。
作为替代,″缓冲器″字段和″url″字段相互之间不兼容。也就是说,在″缓冲器″字段的使用期间不使用″url″字段,反之亦然。″节点″字段包括一个表示被压缩数据的节点。″BitWrapper″节点能够在″节点″上使用。″type″字段指示用于节点压缩所使用的模式。″type″字段的默认值为0。在考虑到为同一节点而开发另用于节点压缩的模式的可能性,来指定″type″字段的值。另一个可能的模式定义为默认的模式。
″CoordinateInterpolatorEncodingParameter″定义参数,该参数用于在基于关键帧的动画数据,也就是,坐标内插器节点数据中的一个对象的顶点坐标的压缩。在该情况下,″节点″字段是″CoordinateInterpolator″节点。
″IndexedFaceSetEncodingParameter″定义参数,该参数用于3D网格信息,也就是IndexedFaceSet节点数据的压缩。在该情况中,″节点″字段是一个″IndexedFaceSet″节点。
″OrientationInterpolatorEncodingParameter″定义参数,该参数用于基于关键帧的动画数据中,也就是,方向内插器节点数据中的一个对象的旋转信息的压缩。在该情况下,″节点″字段是″OrientationInterpolator″节点。
″PositionInterpolatorEncodingParameter″定义参数,该参数用于基于关键帧的动画数据中,也就是,位置内插器节点数据中的一个对象的位置信息的压缩。在该情况下,″节点″字段是″PositionInterpolator″节点。
在数据压缩期间不使用参数的情况中,文件不包含参数的描述。当使用参数压缩数据时,每一参数字段必须独占使用,因为一个″节点″字段恰好对应一个被压缩的节点数据类型,并且通过″<choice>″元素来分组参数字段。稍后描述每一参数字段的″属性(attribute)″。
当压缩的数据的表示包含在分离流中并被传输时,在预定的帧中必须给出节点译码器。
在对象描述符流中,考虑到″streamType 0x03″和″objectTypeIndication0x05″而必须将节点译码器定义在DecoderConfig描述符。该译码器配置有一个AFXConfig描述符。
1.3 numOfKeyQBits
1.3.1语法
<simple Type name=″numOfKeyQBits″>
<restriction base=″int″>
<minInclusive value=″0″/>
<maxInclusive value=″31″/>
</restriction>
</simple Type>
1.3.2语义
numOfKeyQBits指示一个表明关键数据(key data)的量化比特大小的整数值。numOfKeyQBits的最小和最大值分别是0和31。
1.4 numOfKeyValueQBits
1.4.1语法
<simpleType name=″numOfKeyValueQBits″>
<restriction base=″int″>
<minInclusive value=″0″/>
<maxInclusive value=″31″/>
</restriction>
</simple Type>
1.4.2语义
numOfKeyValueQBits指示一个表明键值(KeyValue)数据的量化比特大小的整数值。numOfKeyValueQBits的最小和最大值分别是0和31。
1.5 linearKeycoderType
1.5.1语法
<simpleType name=″linearKeycoderType″>
<restriction base=″string″>
<enumeration value=″";LINEAR";″/>
<enumeration value=″";NOLINEAR";″/>
</restriction>
</simple Type>
1.5.2语义
linearKeycoderType是一个字符串类型并且指示是否使用线性关键编码器。
1.6 preservingType
1.6.1语法
<simpleType name=″preservingType″>
<restriction base=″string″>
<enumeration value=″";KEY";″/>
<enumeration value=″";PATH";″/>
</restriction>
</simple Type>
1.6.2语义
preservingType是一个字符串类型并且指示当前模式是关键字保持模式(key preserving mode)还是路径保持模式(path preserving mode)。
1.7 accType
1.7.1语法
<simpleType name=″accType″>
<restriction base=″string″>
<enumeration value=″";BINARY";″/>
<enumeration value=″";UNARY";″/>
</restriction>
</simple Type>
1.7.2语义
accType是一个字符串类型并且考虑键值分量(X,Y,Z)而指示当前是二进制AAC模式还是一元AAC模式。
1.8 orientationDpcmType
1.8.1语法
<simpleType name=″orientationDpcmType″>
<restriction base=″int″>
<enumeration value=″1″/>
<enumeration value=″2″/>
</restriction>
</simple Type>
1.8.2语义
orientationDpcmType考虑不同键值分量(X,Y,Z)而指示一个表明所使用的DPCM的顺序的一个整数值。如果DPCM的等级(degree)是1,则标记将被设置为0。如果DPCM的等级是2,则标记被设置为1。
1.9 positionDpcmType
1.9.1语法
<simpleType name=″positionDpcmType″>
<restriction base=″int″>
<enumeration value=″0″/>
<enumeration value=″1″/>
<enumeration value=″2″/>
</restriction>
</simple Type>
1.9.2语义
positionDpcmType考虑不同键值分量(X,Y,Z)而指示一个表明所使用的DPCM的等级的一个整数值。如果DPCM的等级是1,则标记将被设置为0。如果DPCM的等级是2,则标记被设置为1。当使用SAD时,标记被设置为2。
1.10 intraType
1.10.1语法
<simpleType name=″intraType″>
<restriction base=″int″>
<enumeration value=″0″/>
<enumeration value=″1″/>
</restriction>
</simple Type>
1.10.2语义
intraType用于位置内插器压缩。IntraType考虑不同的键值分量(X,Y,Z)而指示是否使用内(intra)编码模式。
1.11 transposeType
1.11.1语法
<simpleType name=″transposeType″>
<restriction base=″string″>
<enumeration value=″";ON";″/>
<enumeration value=″";OFF";″/>
</restriction>
</simple Type>
1.11.2语义
transposeType指示用于转置模式或顶点模式的标记。如果值被设置为″ON″,则使用转置模式。否则,使用顶点模式。
1.12 numOfCoordQBits
1.12.1语法
<simpleType name=″numOfCoordQBits″>
<restriction base=″int″>
<minInclusive value=″1″/>
<maxInclusive value=″24″/>
</restriction>
</simple Type>
1.12.2语义
numOfCoordQBits指示用于几何结构的量化级。NumOfCoordQBits的最小和最大值分别是1和24。
1.13 numOfNormalQBits
1.13.1语法
<simpleType name=″numOfNormalQBits″>
<restriction base=″int″>
<minInclusive value=″3″/>
<maxInclusive value=″31″/>
</restriction>
</simple Type>
1.13.2语义
numOtNormalQBits指示一个标准量化级。NumOfNormalQBits的最小和最大值分别是3和31。
1.14 numOfColorQBits
1.14.1语法
<simpleType name=″numOfColorQBits″>
<restriction base=″int″>
<minInclusive value=″1″/>
<maxInclusive value=″16″/>
</restriction>
</simple Type>
1.14.2语义
numOfColorQBits指示用于颜色的量化级。NumOfColorQBits的最小和最大值分别是1和16。
1.15 numOfTexCoordQBits
1.15.1语法
<simpleType name=″numOfTexCoordQBits″>
<restriction base=″int″>
<minInclusive value=″1″/>
<maxInclusive value=″16″/>
</restriction>
</simple Type>
1.15.2语义
numOftexCoordQBits指示用于结构坐标(texture coordinates)的量化级。NumOftexCoordQBits的最小和最大值分别是1和16。
1.16coordPredType
1.16.1语法
<simpleType name=″coordPredType″>
<restriction base=″int″>
<enumeration value=″0″/>
<enumeration value=″2″/>
</restriction>
</simple Type>
1.16.2语义
coordPredType指示用于重构网格的顶点坐标的预测值的类型。当使用no_prediction(无_预测)值时,coordPredType被设置为1。当使用parallelogram_prediction(平行四边形_预测)时,coordPredType被设置为2。
1.17 normalPredType
1.17.1语法
<simpleType name=″normalPredType″>
<resftiction base=″int″>
<enumeration value=″0″/>
<enumeration value=″1″/>
<enumeration value=″2″/>
</restriction>
</simple Type>
1.17.2语义
normalPredType描述正常值的预测。当选择no_prediction时,normalPredType被设置为0。当选择tree_prediction(树_预测)时,coordPredType被设置为1。当选择parallelogram_prediction时,NormalPredType设置为2。
1.18 colorPredType
1.18.1语法
<simpleType name=″colorPredType″>
<restriction base=″int″>
<enumeration value=″0″/>
<enumeration value=″1″/>
<enumeration value=″2″/>
</restriction>
</simple Type>
1.18.2语义
colorPredType描述怎样预测颜色。当选择no_prediction时,colorPredType被设置为0。当时选择tree_prediction时,colorPredType被设置为1。当选择parallelogram_prediction时,colorPredType设置为2。
1.19texCoordPredType
1.19.1语法
<simpleType name=″texCoordPredType″>
<restriction base=″int″>
<enumeration value=″0″/>
<enumeration value=″2″/>
</restriction>
</simple Type>
1.19.2语义
texCoordPredType描述颜色的预测。如果选择了no_prediction,那么texCoordPredType被设置为0。当使用parallelogram_prediction时,texCoordPredType被设置为2。
1.20 errorResilienceType
1.20.1语法
<simpleType name=″errorResilienceType″>
<restriction base=″string″>
<enumeration value=″";ON";″/>
<enumeration value=″";OFF";″/>
</restriction>
</simple Type>
1.20.2语义
errorResilienceType是一个指示是否使用容错(Error Resilience)模式的值。如果不使用容错模式,则该值被设置为″OFF″。如果使用容错模式,则该值被设置为″ON″。只有当该值设置为″ON″时,boundaryPredictionType和bitsPerPacket才是有效的。
1.21 boundaryPredictionType
1.21.1语法
<simpleType name=″boundaryPredictionType″>
<restriction base=″int″>
<enumeration value=″0″/>
<enumeration value=″1″/>
</restriction>
</simple Type>
1.21.2语义
BoundaryPredictionType指示一个表明边界预测类型的值。如果该值为0,则使用受限制的预测,并且如果该值为1,则使用扩展的预测。
1.22 bitsPerPacket
1.22.1语法
″bitsPerPacket″的语法与SFIint32的类型相同。
<simpleType name=″SFIint32″>
<restriction base=″int″>
</simple Type>
1.22.2语义
BitsPerPacket指示一个表明容错比特流的包大小的值。根据该值来指定容错模式中每一部分的大小。BitsPerPacket的类型是SFInt32。默认值是360。
2.用于BitWrapperEncodingHints的XMT-A模式
2.1 BitWrapperEncodingHints
2.1.1.语法
″BitWrapperEncodingHints″的语法如下:
<!--声明BitWrapperEncodingHints--><element name=″StreamSource″><complex Type><choice minOccurs=″0″maxOccurs=″unbounde d″><element ref=″xmta:BitWrapperEncodingHints″/> </choice>...</complexType><!-- SIPO <DP n="21"> --><dp n="d21"/></element>...<!--声明BitWrapperEncodingHints--><element name=″BitWrapperEncodingHints″><complex Type><element name=″BitWrapper3DMCEncodingHints″><complex Type> <sequence> <element name=″sourceFormat″><complexType><sequence> <element ref=″xmta:apram″minOccurs=″0″maxOccurs=″unbounded″/></sequence></complex Type></element> <element name=″targetFormat″><complexType><sequence> <element ref=″xmta:apram″minOccurs=″0″maxOccurs=″unbounded″/> </sequence></complexType> </element> </sequence> </complexType></element> <element name=″BitWrapperICEncodingHints″> <complex Type><sequence><element name=″sourceFormat″><!-- SIPO <DP n="22"> --><dp n="d22"/> <complexType> <sequence> <element ref=″xmta:apram″minOccurs=″0″maxOccurs=″unbounded″/> </sequence></complex Type> </element><element name=″sourceFormat″> <complexType><sequence><element ref=″xmta:apram″minOccurs=″0″maxOccurs=″unbounded″/></sequence> </complex Type></element> </sequence></complexType></element> <element name=″OthersEncodingHints″>...</element></complexType> </element>
2.1.2语义
BitWrapperEncodingHints用于指定脚本(.mux)文件中的″MuxInfo″描述。在该情况中,BitWrapperEncodingHints的格式与二进制文本格式的相应格式相同。″BitWrapper″节点通过使用″BitWrapper″节点中的″url″字段,而被用于带外场景。BitWrapperEncodingHints定义″MuxInfo″描述的流格式类型。
3.修改XMT2MUX样式表中的BitWrapperEncodingHints
现在将描述在XMT2MUX样式表中对″MuxInfo″和″BitWrapperEncodingHints″的修改。
3.1语法
原始的″MuxInfo″和″BitWrapperEncodingHints″的语法如下:
<xsl:template match=″xmt:StreamSource″>muxInfo{filename<xsl:value-ofselect=″@url″/><xsl:text>
<!--为urls作什么?-->
<xsl:text>
<!-—如果没有给出编码提示,就假定流是BIFS格式,否则流格式应该在源格式或目标格式的参数元素中明确(相应于流格式的名称‘streamFormat’和值由BIFSEnc识别)-->
<xsl:if test=″not(xmt:EncodingHints)″>streamFormat BIFS<xsl:text>
</xsl:text></xsl:if>
<xsl:apply-templates
select=″xmt:EncodingHints″|xmt:BIFSEncodingHints|xmt:FBAEncodingHints″/>
}
</xsl:template>
对″MuxInfo″和″BitWrapperEncodingHints″语法的修改如下:
<xsl:template match=″xmt:StreamSource″>muxInfo MuxInfo{filename<xsl:value-of select=″@url″/><xsl:apply-templatesseIect=″xmt:EncodingHints|xmt:BIFSEncodingHints|xmt:FBAEncodingHints|xmt:BitWrapperEncodingHints″/><xsl:iftest=″not(xmt:EncodingHints|xmt:BitWrapperEncodingHints)″>streamFormat BIFS<xsl:text></xsl:text></xsl:if><xsl:iftest=″xmt:BitWrapperEncodingHints″><xsl:text></xsl:text></xsl:if><xsl:apply-templatesselect=″xmt:BitWrapper3DMCEncodingHints|xmt:<!-- SIPO <DP n="24"> --><dp n="d24"/>BitWrapperICEncodingHints|xmt:OthersEncodingHints″/>}<xsl:template match=″xmt:BitWrapperEncodingHints″><xsl:apply-templatesselect=″xmt:BitWrapper3DMCEncodingHints|xmt:BitWrapperICEncodingHints|xmt:OthersEncodingHints″/><xsl:apply-templates select=″xmt:sourceFormat|xmt:targetForrnat″/></xsl:template><xsl:template match=″xmt:BitWrapper3DMCEncodingHints″><xsl:apply-templates select=″xmt:sourceFormat|xmt:targetFormat″/>streamFormat3DMC<xsl:text></xsl:text></xsl:template><xsl:template match=″xmt:BitWrapperICEncodingHints″><xsl:apply-templates select=″xmt:sourceFormat|xmt:targetFormat″/>streamFormatInterpolatorCompression<xsl:text></xsl:text></xsl:template><xsl:template match=″xmt:OthersEncodingHints″><xsl:apply-templates select=″xmt:sourceFormat|xmt:targetFormat″/>streamFormatBIFS<xsl:text></xsl:text></xsl:template><xsl:template match=″xmt:sourceFormat″><xsl:apply-templates select=″xmt:param″/></xsl:template><xsl:template match=″xmt:targetFormat″><xsl:apply-templates select=″xmt:param″/></xsl:template></xsl:template>
3.2语义
在原始的语法中,XMT2MUX样式表不能充分地描述有关被传输到MP4编码器的比特流的MUX信息。例如,并没有定义比特流的名字和类型。同样,当在″BitWrapper″节点定义URL时,XMT2MUX样式表也不能指定有关经由URL传输的比特流的,诸如图6中″bunny-15000-tcp.m3d″文件和流格式的信息。作为代替,MT2MUX样式描述存储比特流的文件的名字和在″BitWrapper″节点定义的比特流的类型。更为详细地,在一个内插器压缩流格式中描述3D动画数据的压缩,以及在3DMC流格式中描述3D网格数据的压缩。
4.对ObjectDescriptorUpdate的修改
4.1语法
现在将描述在XMT2BIFS样式表中对″ObjectDescriptorUpdate″语法的修改。
原始的″ObjectDescriptorUpdate″的语法如下:
<xsl:template match=″xmt:ObjectDescriptorUpdate″>
UPDATE OD[
<xsl:apply-templates select=″xmt:OD″/>
]
</xsl:template>
修改过的″ObjectDescriptorUpdate″语法如下:
<xsl:template match=″xmt:ObjectDescriptorUpdate″>UPDATE OD[<xsl:apply-templates select=″xmt:OD″/>]</xsl:template><xsl:templates match=″xmt:OD″/><xsl:apply-templates select=″xmt:ObjectDescriptorBase″/></xsl:template><xsl:templates match=″xmt:ObjectDescriptorBase″><xsl:apply-templatesselect=″xmt:ObjectDescriptor|xmt:InitialObjectDescriptor″/></xsl:template><!-- SIPO <DP n="26"> --><dp n="d26"/><xsl:template match=″xmt:ObjectDescriptor″>ObjectDescriptor{<xsl:iftext=″@ObjectDescriptorID″>ObjectDescriptor ID<xsl:value-ofselect=″@ObjectDescriptorlD″/></xsl:if><xsl:text></xsl:text><xsl:apply-templates select=″xmt:URL″/>}</xsl:template></xsl:template match=″xmt:URL″><xsl:if test=″@URLstring″>muxScript<xsl:value-of select=″@URLsting″/></xsl:if><xsl:text></xsl:text></xsl:template>
4.2语义
在原始的″ObjectDescriptorUpdate″语法中,″Update OD″不含有描述。在修改过的″ObjectDescriptorUpdate″语法中,当编辑者将一个场景描述流(BIFS流)经由″url″字段链接到另一个元素流时,可以使用″Update OD″。同样,ObjectDescriptorID和脚本文件(script file)加到″Update OD″。″ObjectDescriptorUpdate″语法的格式与二进制文本格式的格式相同。
在下文中,将描述根据本发明,使用有关图形数据压缩的元语言的输入文件生成方法和系统。
首先,参考图2和4来描述根据本发明的优选实施例,使用编码参数将原始数据压缩为比特流和使用缓冲器传输比特流的方法。
图4说明以下情况:使用参数,将有关诸如杯子(cup)这样的对象A的3D数据,例如几何结构信息、连接信息和颜色信息压缩成比特流,并且使用缓冲器将比特流传输到″BufferWithEP.m3d″。如图2所示,当输入XMT文件输入到XMT分析器210时,XMT分析器210基于XMT-A模式,使用XMT2BIFS和XMT2MEX样式表将与场景数据一起的比特流插入到的″.scene″文件中,并且将″.scene″文件传输到BIFS编码器。在该情况中,″.mux″文件包含有一个对操作BIFS编码器的结果进行描述的″.bifs/.od″文件,该BIFS编码器是MPEG-4编码器。同样,当包含在″.mux″流中的信息和″.bif/.od″文件输入到MP4编码器时,产生″.mp4″文件。使用MPEG-4播放器可以再现″.mp4″文件(有关细节参见随后的实施例1)。
[实施例1]
XMT文件的例子如下,其中该文件定义通过使用″BitWrapper″节点和参数而将有关原始数据的3D网格信息压缩成比特流,并且通过使用缓冲器来传输比特流:
<Header>
<InitialObjectDescriptor objectDescriptorID=″1″binaryID=″1″>
<Descr>
<esDesct>
<ES_Descriptor ES_ID=″xyz’binaryID=″201″OCR_ES_ID=″xyz″>
...
<StreamSource>
<BIFSEncodingHints>
<sourceFromat>
<param value=″BufferWithEP.bif″></param>
</sourceFormat>
</BIFSEncodingHints>
</StreamSource>
</ES_Desciptor>
</esDescr>
</Descr>
</InitialObjectDescriptor>
</Header>
...
<BitWrapper type=″0″buffer=″MyIndexFaceSetv.m3d″>
<node>
<IndexedFaceSet ccw=″TRUE″solid=″TRUE″
coordIndex=″0,1,2,-1,3,4,5,-1,...″normalPerVertex=″TRUE″>
<coord DEF=″Box-COORD″></coord>
<Coordinate point=″012,023,401,154,512,265,...″></Coordinate>
<normal>
<Normal vector=″0.7859-0.341-0.5157,0.3812 0.801 0.4615,...″>
</Nornal></normal>
</IndexedFaceSet>
</node>
<IndexedFaceSetEncodingParameter coordQBits=″10’
normalQBits=″9″ coordPredMode
normalPredMode=″0″ errorResilience=″OFF″>
</IndexedFaceSetEncodingParameter>
</BitWrapper>
...
如果XMT分析器210接收到实施例1中的XMT文件,其中所述XMT文件使用″BitWrapper″节点和参数定义压缩的3D网格信息的表示,那么XMT分析器210使用在″BitWrapper″节点中定义的3D网格信息的压缩参数压缩XMT文件并且产生比特流。XMT文件的压缩和比特流的产生基于定义″BitWrapper″节点和参数的XMT-A模式。同样,使用″XMT2BIFS″和″XMT2MUX″样式表来产生XMT-A模式,和输入到MPEG-4编码器的″.scene″及″.mux″文件。结果,获得随后的文件:
-″BufferWithEP.scene″File
...
BitWrapper{
node indexedFaceSet{
ccw=″TRUE″
solid=″TRUE″
coordIndex″″0,1,2,-1,3,4,5,-1,...″
normalPerVertex=″TRUE″
coord DEF Box-COORD Coordinate{
point[]012,023,401,154,512,265,...]}
normal Normal{
Vector[0.7859,-0.341,-0.5157,0.3812,-0.801,0.4615,...]
}
}
IndexedFaceSetEncodingParameter{
coordQBits 10
NormalQBits 9
coordPredMode 2
normalPredMode 0
errorResilience OFF
}
type 0
buffer″MyIndexFaceSet.m3d″
}
...
-″BufferWithEP.mux″File
InitialObjectDescriptor{
...
muxInfo MuxInfo{
fileName″BufferWithEP.bif″
streamFormat BIFS
}
}
将上述的″.scene″和″.mux″文件输入到MPEG-4播放器并且通过BIFS编码器250产生″.bifs/.od″文件。然后,将″.bifs/od″文件和″.mux″文件输入到MP4编码器260,从而产生″.mp4″比特流。最后,在MPEG-4播放器的屏幕上可视化″.mp4″文件。
第二,参考图2和5来描述,通过使用一个缓冲器来传输使用了已压缩比特流的原始数据的方法。
参考图5,与使用有关在输入XMT文件中所指定的″BitWrapper″节点中定义的对象A的参数和3D数据将原始数据压缩成比特流并使用缓冲器来传输比特流的第一种情况相比,将有关诸如一个杯子的对象A的3D数据,例如几何结构信息、连接信息和颜色信息已经压缩成比特流,并且经缓冲器将比特流传输到″BufferWithEP.m3d″。
如图2所示,一接收到XMT文件200,XMT分析器210基于XMT-A模式240,使用XMT2MUX和XMT2BIFS样式表220和230,将已压缩的比特流和场景数据一起插入到″.scene″比特流,并且传输″.scene″比特流。在该情况中,″.mux″文件包含了一个通过BIFS编码器250也就是MPEG-4编码器所产生的″.bits/.od″文件。还,将″.mux″和″.bifs/.od″文件输入到MP4编码器260中,从而通过MPEG-4播放器产生和显现一个最终的″.mp4″文件。在实施例2中已经公开了通过一个缓冲器来传输使用已压缩的比特流的原始数据的方法的一个实例。
[实施例2]
如下是XMT文件的一个例子,其中该文件描述如在″BitWrapper″节点中定义的3D网格信息的已压缩比特流表示的传输。
...
<Header>
<InitialObjectDescriptor objectDescriptorID=″1″binaryID=″1″>
<Descr>
<esDescr>
<ES_DescriptorES_ID=″xyz″binaryID=″201″OCR ES_ID=″xyz″>
...
<StreamSource>
<BIFSEncodingHints>
<sourceFormat>
<param value=″BufferWithoutEP.bif″></param>
</sourceFormat>
</BIFSEncodingHints>
</StreamSource>
</ES_Descriptor>
</esDescr>
</Descr>
</InitialObjectDescriptor>
</Header>
<Body>
<Replace>
<Scene>
<Group>
<children>
<Shape>
<geometry DEF=″MY BOX″>
<BitWrapper type=″0″buffer=″MyIndexFaceSet.m3d″>
<node>
<IndexedFaceSet>
<coord DEF=″Box-COORD″></coord>
<Coordinate></Coordinate>
</node>
</BitWrapper>
</geometry>
</shape>
</children>
</Group>
</Scene>
</Replace>
</Body>
...
如实施例2所公开的,一接收到XMT文件,XMT分析器210就产生将使用在″BitWrapper″节点中定义的缓冲器传输的比特流,其中XMT文件定义使用在″BitWrapper″节点定义的缓冲器传输代表3D网格信息的已压缩比特流,该比特流表示被压缩的3D网格信息。该比特流是依据定义″BitWrapper″节点和参数的XMT-A模式而产生的。并且,如下所示,通过使用XMT-A模式以及XMT2BIFS和XMT2MUX样式表230和220,来产生将被输入到MPEG-4编码器中的″.scene″和″.mux″文件。
-BufferWithoutEP.scene File
...
BitWrapper{
Node IndexedFaceSet
{
coord DEF Box-COORD Coordinat{
}
}
type 0
buffer″MyIndexFaceSet.m3d″
}
...
-BufferWithoutEP.mux File
InitialObj ectDescriptor{
...
muxInfo MuxInfo{
fileName″BufferWithoutEP.bif″
streamFormat BIFS
}
}
将″.scene″和″.mux″文件输入到MPEG-4编码器并且通过BIFS编码器250产生″.bifs/.od″文件。将该″.bifs/.od″文件(或比特流)和″mux″文件输入到MP4编码器260,从而获得″.mp4″比特流。在MPEG-4播放器的屏幕上可视化该″mp4″文件。
第三,参考附图2和6将描述,通过使用参数而将原始数据压缩成比特流并且使用URL传输比特流的方法的实施例。
图6说明一种使用参数,将有关诸如杯子之类的对象A的3D数据(例如几何结构信息、连接信息和颜色信息)压缩成比特流并且经由″BitWrapper″节点所定义的URL来传输比特流的方法。该方法不同于将3D数据压缩成比特流并且通过缓冲器传输比特流的方法。更准确地说,在该方法中,在″BitWrapper″节点中定义例如12的url ID,具有诸如url ID的ObjectDescriptorID的″BitWrapperEncodingHints″能够指定有关对象A的3D数据的被压缩比特流表示的位置,也就是″bunny-15000-tcp.m3d″文件,并且基于″BitWrapperEncodingHints″字段传输被压缩的数据。接下来,有关3D数据的被压缩比特流表示的位置的信息包含在有关″.mux″文件的信息中。有关″.mux″文件的位置信息在″ObjectDescriptorUpdate″也就是″BitWrapper″节点的url ID中描述。有关″.mux″文件的位置信息链接到,有关对象A的3D数据的被压缩比特流表示的位置信息,也就是″bunny-15000-tcp.m3d″文件。有关3D数据的被压缩比特流表示的位置信息链接到3D数据的被压缩比特流表示。从而,经由URL来传输″bunny-15000-tcp.m3d″文件的比特流表示。
当在输入到XMT分析器210的图2的输入XMT文件200中说明图6的方法时,XMT分析器210基于XMT-A模式240,使用XMT2BIFS和XMT2MUX样式表230和220,将有关″.mux″文件的位置信息和场景数据一起插入到″.scene″文件,并且传输该″.scene″文件。所述的″.mux″文件包括一个通过包含在MPEG-4编码器中的BIFS编码器250所产生的″.bifs/.od″文件。同样,″.mux″文件包含有指定表示有关对象A的3D数据的比特流的位置的″bunny-15000-tcp.m3d″文件。
当有关3D数据的比特流表示的位置信息和″.bifs/.od″文件被输入到MP4编码器260时,在MPEG-4播放器的屏幕上产生并显示一个作为比特流文件的″.mp4″文件,其中在″.mux″文件中指定3D数据的比特流表示。
通过实施例3将更加详细地描述图6的方法。
[实施例3]
如下是XMT文件的一个实例,描述使用参数来压缩有关原始数据的3D网格信息并且通过″BitWrapper″节点中所定义的URL来传输比特流。
<Header>
...
<ObjectDescriptor objectDescriptorID=″12″binaryID=″12″>
<Descr>
<esDescr>
<ES_DescriptorES_ID=″PI″binaryID=″211 ″OCR_ES_ID=″PIC″>
...
<StreamSource>
<BitWrapperEncodingHints>
<BitWrapper3DMCEncodingHints>
<sourceFormat>
<param value=″bunny- 15000-tcp. m3d″></param>
</sourceFormat>
</BitWrapper3DMCEncodingHints>
</BitWrapperEncodingHints>
</StreamSource>
</ES_Descriptor>
</esDescr>
</Descr>
</ObjectDescriptor>
</Header>
<Body>
<Replace>
<Scene>
<Group>
<children>
<Shape>
<geometry DEF=″MY_BOX″>
<Box size=″69″></Box>
<BitWrapper type=″0″url=″12″> <node>
<IndexedFaceSet ccw=″TRUE″
solid=″TRUE″
coordIndex=″0,1,2,-1,3,4,5,-1...″
normalPerVertex=″TRUE″>
<coord DEF=″Box-COORD″></coord>
<Coordinatepoint=″012,023,401,154,512,265,... ″></Coordinate>
<normal>
<normal vector=″0.7859-0.341-0.5159,0.3821-0.801 0.4615,...″>
</Normal>
</normal>
</IndexedFaceSet>
<node>
</IndexedFaceSetEncodingParameter coordQBits=″10″
normalQBits=″9″
coordPreMode=″2″
normalPredMode=″0″
errorResilience=″OFF″></IndexedFaceSetEncodingParameter>
</BitWrapper>
</geometry>
</shape>
</children>
</Group>
</Scene>
</Replace>
<ObjectDescriptorUpdate>
<OD>
<ObjectDescriptorBase>
<ObjectDescriptor objectDescriptorID=″12″binaryID=″12″>
<URL URLstring=″UrlWithEP.mux″></URL>
</ObjectDescriptor>
</ObjectDescriptorBase>
</OD>
</ObjectDescriptorUpdate>
</Body>
在实施例3的方法中,一接收到XMT文件,XMT分析器210就使用″BitWrapper″节点中所定义的参数将3D网格信息压缩为比特流,其中XMT文件描述使用″BitWrapper″节点中所定义的参数来压缩3D网格信息。该比特流是基于定义″BitWrapper″节点和参数的XMT-A模式而产生。同样,如下所示,通过使用XMT-A模式以及″XMT2BIFS″和″XMT2MUX″样式表来产生可被输入到MPEG-4编码器的″.scene″和″.mux″文件。
-UrlWithEP.scene File
...
BitWrapper{
Node IndexedFaceSet{
ccw TRUE
coordIndex[0,1,2,-1,3,4,5,-1,...]
normalPerVertex TRUE
solid TRUE
coord DEF Box-COORD Coordinate{
point[012,023,401,154,512,265,...]
}
normal Normal{
vector[012,023,401,154,5 12,265,...]
}
}
IndexedFaceSetEncodingParameter{
Vector[0.7859,-0.341,-0.5159,0.3821,-0.801,0.4651,...]
}
}
IndexedFaceSetEncodingParameter{
coordQBits 10
normalQBits 9
coordPredMode 2
normalPredMode 0
errorResilience OFF
}
type 0
url 12
}
...
UPDATE OD[
ObjectDescriptor{
objectDescriptorID 12
muxScript UrlWithEP.mux
}
]
-″UrlWithEP.mux″File
...
ObjectDescriptor{
objectDescriptorID 12
esDescr[
ES_pescriptor{
ES_ID 211
...
muxInfo MuxInfo{
fileName″bunny-15000-tcp.m3d″
streamFormat 3DMC
}
]
}
当″.scene″和″.mux″文件被输入到MPEG-4编码器并且通过BIFS编码器250时,产生″.bifs/.od″文件。然后,″.bifs/.od″和″.mux″文件被输入到MP4编码器260,从而产生″.mp4″文件。所获得的″.mp4″文件在MPEG-4播放器上显示。
第四,将结合附图2和7来描述根据本发明的优选实施例,经由URL来传输使用已压缩比特流的原始数据的方法。
图7说明一种经由″BitWrapper″节点中所定义的URL,传输表示有关一个例如杯子的对象A的诸如几何结构信息、连接信息和颜色信息之类的3D数据的已压缩比特流的方法。相对于第三种方法,描述图7的方法与经由缓冲器传输比特流的方法之间的区别,其中第三种方法是通过使用参数来将原始数据压缩为比特流并且使用URL来传输比特流。同样,图7的方法不同于第三种方法,在于经由URL,使用作为3D数据表示的已压缩比特流来传输3D数据。因此,图2的输入XMT文件200除了描述原始数据和″BitWrapper″节点中的参数以外,仅描述urlID。
现在通过实施例4来更加详细地描述图7的方法。
[实施例4]
如下是XMT文件的一个例子,描述经由URL传输已压缩比特流,该已压缩比特流是″BitWrapper″节点中所定义的3D网格信息的表示。
<Header>
...
<ObjectDescriptor objectDescriptorID=″12″binaryID=″12″>
<Descr>
<esDescr>
<ES_DescriptorES_ID=″PI″binaryID=″211″OCR_ES_ID=″PIC″>
<StreamSource>
<BitWrapperEncodingHints>
<BitWrapper3DMCEncodingHints>
<sourceFormat>
<param value=″bunny-15000-tcp.m3d″></param>
</sourceFormat>
</BitWrapper3DMCEncodingHints>
</BitWrapperEncodingHints>
</StreamSource>
</ES_Descriptor>
</esDescr>
</Descr>
</ObjectDescriptor>
</Header>
<Body>
<Replace>
<Scene>
<Group>
<children>
<Shape>
<geometry DEF=″MY_BOX″>
<BitWrapper type=″0″ url=″ 12″>
<node>
<IndexedFaceSet>
<coord DEF=″Box-COORD″></coord>
<Coordinate></Coordinate>
</IndexedFaceSet> </node>
</BitWrapper>
</geometry> </Shape>
</children>
</Group>
</Scene>
</Replace>
</ObjectDescriptorUpdate>
</OD>
</ObjectDescriptorBase>
<ObjectDescriptor objectDescriptorID=″12″ binaryID=″ 12″>
<URL URLstring=″UrlWithoutEP. mux″>
</URL>
</ObjectDescriptor>
</ObjectDescriptorBase>
</OD>
</ObjectDescriptorUpdate>
</Body>
在实施例4的方法中,当使用″BitWrapper″节点中所定义的URL接收到描述传输表示3D网格信息的已压缩比特流的XMT文件,XMT分析器210就产生表示被压缩的3D信息的比特流,并使用″BitWrapper″节点中所指定的URL来传输该比特流。该比特流基于定义″BitWrapper″节点和参数的XMT-A模式产生。同样,如下所示,通过使用XMT-A模式以及XMT2BIFS和XMT2MUX样式表来产生可被输入到MPEG-4编码器的″.scene″和″.mux″文件。
-URLWithoutEP.scene File
...
BitWrapper{
node IndexedFaceSet{
coord DEF Box-COORD Coordinate{
}
type 0
url 12
}
...
UPDATE OD[
ObjectDescriptor{
objectDescriptorID 12
muxScript UrlWithoutEP.mux
}
]
-″URLWithoutEP.mux″File
...
ObjectDescriptor{
ObjectDescriptorID 12
EsDescr[
ES_Descriptor{
ES_ID 211
...
muxInfo MuxInfo{
fileName″bunny-15000-tcp.m3d″
streamFormat 3DMC
}
...
将上述的″.scene″和″.mux″文件输入到MPEG-4编码器。″.scene″文件输入到BIFS编码器250以产生″.bifs/.od″文件。将″.bifs/.od″和″.mux″文件输入到MP4编码器260以产生″.mp4″比特流文件。所述″.mp4″文件在MPEG-4播放器的屏幕上显示为3D数据。
根据本发明,一种使用有关图形数据压缩的元语言的输入文件生成方法和系统,在编辑3D内容期间,允许编辑者很容易地使用元语言来应用和压缩3D数据。特别地,根据本发明,编辑者能够选择一种压缩数据的方法并且能够控制数据压缩。通过元语言的表示来判定数据是否可以被压缩。同样,通过元语言的表示来判定数据压缩格式,例如,通过编码参数以及选择带内/带外场景(in-band/out-band scenario)来判定。
根据本发明,通过使用以XML为基础的MPEG-4基本要素而很容易去制作编辑工具。使用编辑工具的2D或3D内容作品可以在不同平台的应用重新使用。此外,由于本发明允许编辑者在编辑处理期间去压缩3D数据,因此能够即使在低的网络带宽时也能实时显现图形数据或动画数据。同样,编辑者能够制作出不同类型的3D图形数据。
本发明能够以计算机可读介质上的代码的形式实现,所述代码可以由计算机或信息处理装置来读取。在此,计算机可读介质可以是计算机可读的能够存储数据的任意记录装置,例如,只读存储器(ROM)、随机存取存储器(RAM)、光盘(CD)-ROM、磁带、软盘、光数据存储设备等等。
虽然已经参考了本发明中的优选实施例而特别地示出和描述本发明,但是本领域技术人员将能理解,在不脱离所附权利要求所限定的发明的精神和范围内,可以进行形式和细节上的不同变化。
机译: 使用关于图形数据压缩的元语言生成输入文件的方法和系统
机译: 使用关于图形数据压缩的元语言的输入文件的生成方法和系统
机译: 使用关于图形数据压缩的元语言生成输入文件的方法和系统