专利名称:图形场景动画信号,相应的方法和装置的制作方法
技术领域:
本发明涉及图形场景恢复领域,例如在多媒体终端里的图形场景恢复。更准确地说,本发明涉及动画场景,或者这种场景元素的传输。
图形场景指的是在时间和空间上组织起来的一组图形对象、图片和/或视频信号。这些图形场景可以是二维的,也可以是三维的,还可以包括各种图形参数。
本发明特别适用于需要紧凑、有效地表述图形场景动画的所有情形。也就是以下情形-在游戏中,或者其它的多用户网络应用里,例如协作工作,其中需要例如交换对象的新的位置信息;-利用二维或者三维图形对象的多媒体咨询业务。
图形场景的描述格式不是什么新鲜概念。例如,标准ISO/IEC DIS14772-1描述了VRML 2.0格式。标准的MPEG(运动图像专家组)-4组也定义了一种场景描述格式,叫做BIFS(场景的二进制格式),其基础是VRML 2.0.“MPEG-4系统验证模型”(ISO/IEC JTC1,SC29/WG11-N1693,MPEG 97,1997年4月)特别介绍了BIFS格式。
这一场景描述格式的目的是描述一个场景中各种图形对象的时空关系。它通过定义一定数量的节点或对象,用来表示需要表示的所有图形图元,从而达到这一目的。每一个这样的节点都有一个预定的字段,用来表示它的特征。换句话说,BIFS格式使得用参数描述形式,或者脚本,来传送场景结构成为可能。
已经做出一些努力将某种场景做成动画。例如,MPEG-4标准化的SNHC组定义了一种面部动画格式(“MPEG-4 SNHC验证模型”,ISO/TEC1/SC29/WG11 N 1693,MPEG 97,1997年4月)。但这一格式只能用于给定应用,即可视电话,而不能用于其它情况。
VRML语言还定义了传输图形场景动画的两种方法-基于线性插值的第一种方法,通过描述场景参数的部分线性变化而工作。这种机制采用“ROUTE”指令和“Interpolator”类型的节点。“ROUTES”是用来定义字段之间的连接的事件机制,定义了这种链接以后,当第一个字段的值发生改变时,通过“ROUTE”与之相联系的第二个字段的值也跟着变成同样的值;-采用脚本描述动画的第二种方法,也就是利用数学函数来计算场景镜头之间新字段值的功能。
这些方法至少有两个缺点。
首先,它们需要重新计算一个值,从而使获得动画所需要的运算次数大为增加;这要求终端的计算能力足够强。
其次,这些方法假定动画参数是已知的。当动画用于例如通信时情况显然不是这样。
本发明的目的就是要克服现有技术里的这些缺点。
更准确地说,本发明的一个目的是要提供一种动画数据传输结构和方法,并提供相关的装置,这种装置使动画的实现非常简单,而且对于所有类型的动画场景,特别是那些事先不知道它们将如何变化的动画场景,这种装置不需要很多的传输资源。
换句话说,本发明的目的是为图形场景动画提供一种技术,这种技术至少能满足以下准则-编辑和解释数据简单;-占用很少的存储资源和/或传输资源;-能够为所有类型的对象和图形场景制作动画;-可以用任意方式为对象或节点制作动画,也就是不用预先限定的方式;本发明的另一个目的是提供这种技术,它能在价格低廉的简单多媒体终端的控制下工作,也就是说不需要主要的计算装置或主要的数据储存装置。
本发明还有一个目的是提供这种技术,它能在网络中实现,而它需要的传输速率却很低。
本发明再一个目的是提供这种技术,它跟VRMLS和MPEG-4标准相兼容。
本发明的这些目的,以及下面将更加清楚的其它目的,是通过使用为图像构造装置设计的可以同时在一个以上的屏幕上显示的图形场景数据动画信号来达到的,要为之制作动画的这一图形场景已经事先载入所述图像构造装置,作为一组对象,其中至少有一部分有它们自己的标识符,所述信号包括
-一个动画掩码(animation mask),事先分配给所述动画,并为所述对象中的至少一个分配一个基本掩码,它包括-所述对象的识别符,它是在制作动画的所述图形场景中定义的;和-所述对象至少一个动态特性字段的描述,用来描述可以修改的所述对象的特性;-动画帧,按照所述掩码所规定的顺序,包括更新所述对象的所述动态特性字段以允许对它们进行修改的数据,所述构造装置对所述动画掩码的数据解码,利用该掩码初始化动画,并按照所述动画帧更新所述场景。
这样一来,为场景制作动画变得特别简单,效率特别高。要传输的数据非常少,而且终端也不需要关键的处理装置。利用预定掩码简化并减少了帧。
另外,还可以在事先不知道场景要如何变化的情况下为它们制作动画。这就使得例如各种交互式应用成为可能。
每一个基本掩码包括-所述对象的识别符(ID);-一个描述块(二进制掩码,bin mask),它说明在动画期间可以修改的活动的动态字段,以及在动画期间不可改变的动态字段;-可能还包括能用于每一个活动动态字段的量化数据定义块(Qpi)。
至少某些活动的动态字段可以是构成一个矢量的多个字段。在这种情况下,所述基本掩码包括一个数据项,说明是所有的字段一起还是其中的某些构成所述矢量,据此修改所述定义块。
在一个优选实施方案里,利用预测编码至少对某些动画帧的部分动态字段编码。因此每一个动画帧都将每一个动态字段跟一个数据项相关联,说明该字段使用的是预测编码还是绝对模式。
每一个动画帧最好包括-一个定义区,为所有对象说明其动画参数是否是在动画帧里传送的;-一个动画数据区,用来传送使定义区列出的对象动画化所必需的信息,。
在一个实施方案里,所述动画数据区所在的那一组至少可以包括以下数据-编码类型(isIntra);-一个同步字(Sync);-一个同步基准或“时间码”(Iparam);-所关心对象动画帧的频率值(Iparam);-一个N帧的间隔,在这一期间里,不传送数据项(Iparam);-量化参数值的变化指示(hasQP);-新的量化参数值(QPi);-动态字段的编码值(Ivaluei,或者Pvaluei)。
所述动态字段所在的那一组可以包括以下字段-定义所述对象方面的字段;-定义所述对象位置的字段;-定义所述对象运动方式的字段;-定义所述对象形状的字段;-定义所述对象照明效果的字段;本发明还涉及传输图形场景动画数据的过程,这些动画至少要在一个屏幕上显示,包括-一个动画初始化级,其中的传输采用以下方式-作为所述动画的报头传输的一个动画掩码,至少为一个对象分配一个基本掩码,包括-在要制作动画的图形场景里定义的所述对象的识别符;和-所述对象至少一个动态特征字段的描述,代表可以修改的所述对象的一个特征;-一个动画级,其中的传输采用动态帧方式,按照所述掩码规定的顺序包括,更新所述对象的动态特征字段从而允许对它们进行修改的数据。
最后,本发明还涉及图形场景的一种动画装置,设计该图形场景的目的是要在至少一个屏幕上显示,包括-构造初始动画的装置,利用的是-一个动画掩码,事先分配给所述动画,而且至少为一个对象分配一个基本掩码,包括
-所述对象的识别符,就象要制作动画的图形场景所规定的那样;和-所述对象至少一个动态特征字段的描述,代表要修改的所述对象的一个特征;-利用动画帧的所述场景动态动画装置,按照所述掩码的顺序包括,所述对象的动态特征字段的更新数据,以便修改它们。
下文将更加详细地介绍本发明的其它特征和优点。其中介绍的是一个优选实施方案,作为一个非限制性实例。介绍时参考了以下附图-
图1说明本发明中为图形场景制作动画的一般原理;-图2和图3说明本发明的原理的两个应用,分别是多用户应用和事先计算出动画流的应用;-图4是本发明中动画方法的总框图;-图5是本发明中动画掩码的总结构;-图6说明图5中基本掩码的结构;-图7说明图6中基本掩码在其中的字段有多个值的情况下的详细结构;-图8是对按照本发明传送的参数进行编码的示意图;-图9说明如何对图8中的编码参数解码;-图10是本发明中动画帧的一个框图。
图1是一个终端的框图,例如它跟标准的MPEG-4兼容,用于集成本发明中的动画信号或动画流。
这一终端有一个装置11,利用BIFS或动画掩码格式的数据流12产生最初的场景。换句话说,该终端能够载入用对象或节点来描述的图形场景。
要记住场景描述格式的目的是要说明场景图形对象的时空关系。为此,BIFS格式规定一定数量的“节点”,代表要显示的所有图形图元。每一个节点都有一个预定字段描述其特征。例如,圆的图元字段是一个浮点型“半径”,而“视频对象”图元的参数则是视频信号的开始和终止时刻。
根据本发明,可以将这些节点中的一部分声明为可修改,从而允许将来对其进行修改。这可以用VRML标准中的“DEF”机制以及MPEG-4系统中的类似机制来表述。
不管是根据用户请求(交互模式),还是自动进行的(被动模式,也叫做“推模式(push mode)”),该场景一旦载入,就载入动画流“BIFSAnim”13,并修改这一场景的参数。
修改或者动画制作是由解码器14来进行的。对于动画节点的每一个新字段值,解码器修改相应的字段,并将这些新值用在下一个场景镜头循环里。在这一场景镜头循环里,对于场景的每一个节点,图形处理器都调用图形指令,以便画出合适的图元。
这样就得到了动画图像15,可以将它呈现(16)给用户。需要的时候,用户可以用合适的接口对它进行干预(17)。
使用音频或视频流18时,采用同样的机制19。
这一技术可以在很多应用中使用。例如,图2说明一个多用户游戏。用户21和22载入描述游戏的初始场景。然后服务器23告诉用户21它将收到用户22的连续位置24参数。这些位置参数是由用户22传送(25)给服务器23的,然后服务器再转发给用户21。所有的动画配置数据和动画参数(这里是用户22的位置)构成一个“BIFS-Anim”流13。这种传输是对称的。用户21用同样的方式将它的位置数据传送给用户22。
图3说明应用动画流的另一个实例,在该实例中动画流是事先计算出来的。首先(例如从CD-ROM 33)载入描述最初场景的文件31并由场景解码器32解码。显示出最初的场景,然后动画流解码器38读出动画参数35,显示出一个同步的人物动画36和地球仪37。
图4一级一级地说明本发明的一般原理。有连续的两级,即41级和动画级42,在41级里利用动画掩码构造最初的场景或初始化级,在42级里用动画帧不断地更新这一场景。
动画格式的一般原理包括传送以下参数首先是动画的配置参数,也叫做动画掩码,它描述要传送的字段,如果需要就说明它们的量化和压缩参数。这些参数可以从场景中声明为可以修改的eventIn或者exposedFields类型(在VRML标准里有定义)的节点字段里选择。动画掩码分成说明这些参数的几个基本掩码。
其次是作为一组动画帧传送的动画数据。一个动画帧包括给定时刻动画参数的所有新值。这些参数可以用两种模式传送-“Intra”模式。在这种模式里传输的是绝对参数。在Intra模式里可以为量化重新定义新参数。
-“Predictive”模式,其中传送的是这一参数和根据前面的取样所作的预测之间的差。
这些动画参数可以用于前面已经声明了能够为其制作动画的场景的所有节点的所有字段。我们将把VRML规范里的Transform节点作为一个实例来说明这一点。这一节点的规范为<pre listing-type="program-listing"><![CDATA[Transform{evendIn MFNode addChildrenevendIn MFNode removeChildrenexposedField SFVec3f center 0 0 0exposedField MFNode children[]exposedField SFRotation rotation 0 0 1 0exposedField SFVec3f scale 1 1 1exposedField SFRotation scaleOrientation 0 0 1 0exposedField SFVec3f translation 0 0 0field SFVec3f bboxCenter 0 0 0field SFVec3f bboxSize -1 -1 -1 }]]></pre>在这一实例里,应当能够看出,字段-rotation,-scale,-scaleOrientation,-translation,都是动画里感兴趣的典型参数。因此有必要声明可以制作动画的所有节点,以便随后能够指定专用的动画字段。然后就可以说这些字段是“动态”的了。在我们的系统里必需事先指定动态字段,以便使用最紧凑的动画格式。
在动画中只能修改标量值。例如,参考VRML标准2.0,以下类型的参数是可以修改的
-SFInt32,-SFFloat,-SFDouble,-SFRotation,-SFColor。
前面所有列表类型的值也都可以修改。对于列表类型的值,不仅可以修改整个字段,还可以修改某些明确选定的值。
下面更详细地介绍本发明中使用的信号。
动画掩码表示要传送的字段和它们的量化参数。对于要修改的每一个节点和值,使用一种掩码结构,下面给出它的语法。掩码的原理是指定想为之制作动画的动态字段。然后可以为每一参数给出量化参数。
动画参数配置的结构可以用图5来说明。
这些参数的含义如下-基本掩码51要为之制作动画的这一节点的动态字段的定义,以及相应的量化参数。
-如果在同一流内要为其它的节点制作动画,就将Continuous 52位置于1。
图6说明一个基本掩码。它的含义如下-ID 61要修改的节点的唯一识别符。这一识别符是从最初的场景中获得的。
-Bin mask 62长度等于动画节点类型动态字段个数的二进制掩码。如果不为该动态字段制作动画,就传送0,否则就传送1。
在多字段情况下,还有必要指定要修改的字段的下标。有多个下标字段要修改时,可以决定是要修改整个字段还是该矢量的一部分。图7给出这一消息的语法。
-Qpi 63动态字段i的量化参数。量化参数跟二进制掩码里声明为活动的动态字段一样多。特别是,当量化不需要任何特别的参数时,这些字段可以是空字段。传送这一动画流的服务器事先知道这些字段的语法和语义。
图7说明多值字段二进制掩码的语法细节。其含义如下-isTotal 71如果将这一掩码设置为1,那么就要修改所有的字段值。否则就选择矢量的某些元素来修改。
-index 72要修改的矢量字段的下标。
-Continue 73如果将这一标志置1,就意味着要修改矢量的其它元素。
有利的是,至少在某些情况下,采用一种预测编码方法来减少信息帧中要传送的数据项的个数。
可以用DPCM类型的压缩协议压缩参数参数值既可以用“Predictive”模式(P)也可以用“Intra”模式(I)编码-在P模式里,对于要传送的每一个新值,被编码的是跟前一个值的差。将差量化,然后用可变长度的熵编码作最佳表示。
-在I模式里,采用一个简单的量化方法对动态字段值直接编码,然后用可变长度的码表示。
图8是该压缩算法的框图。从源数据82中减去(81)预测装置84传过来的估计数据83。将得到的误差信号85量化(86),然后进行熵编码87。将量化信号88输入预测装置84。
图9中的相应过程用于解码。将收到91的数据进行熵解码92,然后将预测装置96的预测信号95加(94)到解码信号93上去。接着对这一信号进行量化过程的逆过程(97)。
于是动画数据流的结构就象图10所示一样。
每一动画帧都以值构成的组掩码(“Gmask”)101开始。这一掩码101包括一系列的二进制元素“0”和“1”,用来说明每一个节点的状况,其顺序是动画掩码规定的顺序,而不管后面有没有动画参数。
然后用标志102“isIntras”说明是不是使用了预测编码。如果这一标志的值是例如“1”,就用绝对(“Intra”)模式对值进行编码。如果这一标志的值是“0”,就采用预测模式。
如果采用“Intra”模式,就提供一个同步字103,对流中的操作重新计时。
于是对于每一个动画节点,传送以下数据-在“Intra”模式里,可以选择传输与传输有关的参数104(“Iparam”),例如-所关心的“Intra”帧的同步基准或“时间码”;-动画节点的动画帧频率的新值;
-可能还有一个帧间隔说明有更多的数据将在N帧期间传送;-按照字段顺序的一组参数,随后是-对于“Intra”编码,标志105“has QP”说明是为随后的值重新定义量化参数值(例如,“has QP”=1)还是不这样做(例如,“hasQP”=0);-如果“has QF”=1,就是量化参数“Qpi”的新值106;-值107“Ivaluei”或者108“Pvaluei”,它是所选模式(intra或者predictive)里动态字段i的编码值。
其中的动态数据编码器可以使用所有类型的量化或熵编码协议,因此,可以采用各种类型的标量或矢量量化,以及不会带来损伤的任意流减少协议或熵编码方法。
为了在动画流的开始和停止时发出交互命令,本发明提供了一种新的BIFS或VRML格式节点。用VRML术语来说,这一AnimationStream节点就是“依赖于时间的节点”。这一节点的语法可以表述为<pre listing-type="program-listing"><![CDATA[AnimationStream{ exposedField SFBool loop FALSE exposedField SFFloat speed 1 exposedField SFTIME startTime 0 exposedField SFTIME stopTime 0 eventOut SFBool isActive}]]></pre>这一节点将在VRML BIFS动画流中传递。下面给出使用这一节点的一个实例。在这一实例中,显示一个立方体。当用户用鼠标点击时,颜色、位置和X尺寸分量就可以变化。这一实例是用ASCII格式给出来的,但可以改写成BIFS的二进制形式。最初的场景为<pre listing-type="program-listing"><![CDATA[DEFT Transform { Translation 00-5 Children[ DEF TOUCH TouchSensor{} Shape{ appearance Appearance{ material DEF M Material{diffuseColor 111 } geometry DEF Cube{ size 111 } } ] } DEF ANIMATION Animationstream{ loop TRUE url“Scene.anim” } ROUTE TOUCH.touchTime TO ANIMATION.set_starTime]]></pre>当用户在立方体上点击鼠标时,就初始化识别符“ANIMATION”的动画流。动画或者流或者文件“Scene.anim”包括以下信息T变换识别符0001 只修改变换字段1为整个位置矢量字段编制动画00405108 位置在(0,0,4)和(0,5,10)这两个点确定的平行六面体内改变,而且在Intra模式里在Ox轴上使用256个球进行量化0-2-50376相对位置在(0,0,4)和(0,0,10)这两个点确定的立方体的内改变,而且在P模式里在Ox轴上使用64=26-1个三维冠进行量化1继续M该对象的颜色将改变010001 该对象的颜色和透明度将改变102408 模式I的8位颜色在10和240之间改变-558 模式P的8位颜色在10和240之间改变102408 跟I模式的透明度一样-558 跟P模式的透明度一样1继续C将修改立方体的尺寸1修改它的尺寸0只修改尺寸矢量的某些细节0只修改Ox轴上的立方体尺寸25.55Intra模式里的5位值在0和5.5之间改变-334 P模式里的4位相对值在-3和3之间改变0动画掩码结束
权利要求
1.为图像构造装置设计的图形场景的动画数据信号,该图像可以在至少一个屏幕上显示,要为之编制动画的图形场景作为一组对象已经事先载入所述图像构造装置,所述对象中间至少一部分有自己的识别符,其特征在于所述信号包括;-一个动画掩码,事先分配给所述动画,并且至少为所述对象中的一个分配一个基本掩码,该基本掩码包括-在要为之编制动画的所述场景中定义的所述对象的识别符;和-所述对象至少一个动态特征字段的描述,代表可以修改的所述对象的一个特征;-动画帧,按照所述掩码规定的顺序包括更新所述对象动态特征字段,例如允许修改它们的数据,所述构造装置对所述动画掩码的数据解码,利用该掩码初始化动画,并根据所述动画帧更新所述场景。
2.权利要求1的信号,其特征在于所述基本掩码中的每一个都包括-所述对象的识别符(ID);-一个描述块(bin mask),说明动画期间可以修改的活动动态字段,和动画期间不能修改的动态字段;-可能还包括可以用于每一个活动动态字段的量化数据的定义块(Qpi)。
3.权利要求1的信号,其特征在于所述活动动态字段中至少有一些是构成矢量的多个字段,其特征还在于所述基本掩码包括一个数据项,说明构成所述矢量的所有字段还是只有其中的一些是活动的,据此修改所述定义块。
4.权利要求1~3中任意一个的信号,其特征在于至少在一些所述动画帧中,利用预测编码,至少对所述动态字段中的一些编码,其特征还在于每一个动画帧、每一个动态字段都跟一个数据项有关,该数据项说明该动态字段是预测编码字段还是绝对模式字段。
5.权利要求1~4中任意一个的信号,其特征在于所述动画帧包括-一个定义区,为每一个所述对象说明它的动画参数是否是在所述动画帧里传送的;-一个动画数据区,用来传递为所述定义区里列出来的对象编制动画所必需的数据。
6.权利要求5的信号,其特征在于所述数据动画区至少包括一组里的一些数据,该组数据包括-编码类型(isIntra);-一个同步字(Sync);-一个同步基准(Iparam);-所关心对象的动画帧的一个频率值(Iparam);-在其间不传送数据项的一个N帧的间隔(Iparam);-对量化参数值的改变的一个标志(hasQP);-一个新的量化参数值(Qpi);-一个动态字段的一个编码值(Ivaluei,或者Pvaluei)。
7.权利要求1~6中任意一个的信号,其特征在于所述动态字段属于一个组,该组包括-定义所述对象方面的字段;-定义所述对象位置的字段;-定义所述对象运动方式的字段;-定义所述对象形状的字段;-定义所述对象照明效果的字段。
8.用来传送图形场景动画数据的方法,该图形场景被设计成至少在一个屏幕上显示,其特征在于它包括-一个动画初始化级,其中的传输方式是-作为报头分配给所述动画的一个动画掩码,并给至少一个所述对象分配一个基本掩码,该基本掩码包括-在要为之制作动画的所述图形场景中定义的所述对象的识别符;和-所述对象至少一个动态特征字段的描述,代表可以修改的所述对象的一个特征;-一个动画级,其中传输的是动画帧,这些动画帧按照所述掩码规定的顺序,包括更新所述对象的动态特征字段,从而允许对它们进行修改的数据。
9.图形场景的动画装置,这些图形场景被设计成要在至少一个屏幕上显示,该动画装置的特征在于它包括-构造初始动画的装置,它使用-一个动画掩码,事先分配给所述动画,并为至少一个所述对象分配一个基本掩码,该基本掩码包括-在要为之制作动画的所述图形场景中定义的所述对象的识别符;和-所述对象至少一个动态特征字段的描述,代表要修改的所述对象的一个特征;-利用动画帧的所述场景的动态动画装置,按照所述掩码规定的顺序,包括所述对象动态特征字的更新数据以便修改它们。
全文摘要
本发明涉及一种图形场景动画数据信号,该信号是为构造图像的装置设计的,构造的图像能够在至少一个屏幕上显示,所述图形场景可能已经以一组对象的形式载入所述图像构造装置,所述对象中至少有一些有它自己的特殊识别符,所述信号包括:作为报头分配给所述动画的一个动画掩码,并为至少一个所述对象分配一个基本掩码,包括:要为之制作动画的所述图形场景里定义的所述对象识别符;以及指定所述对象的至少一个动态特征字段,说明能够修改的所述对象的一个特征;动画帧,按照所述掩码规定的顺序包括更新所述对象动态特征字段以便修改它们的数据,所述构造装置对所述动画掩码数据解码,据此对动画初始化,并根据所述动画字段更新场景。
文档编号H04N7/24GK1263670SQ9880709
公开日2000年8月16日 申请日期1998年7月10日 优先权日1997年7月11日
发明者J·斯格尼斯 申请人:法国电讯公司, 法国长程无线电广播有限公司