发明内容
本发明的目的是提供一种计算机动画编辑方法,其可以使创造人员从繁重的手工绘制画稿工作中解脱出来,并将中后期制作阶段有机地融合在一起,从而大幅度提高了动画制作过程的工作效率。
本发明的上述目的通过以下技术方案实现:
一种计算机动画编辑方法,包含以下步骤:
在存储单元内预先存储一组场景对象的数据,每个所述场景对象的数据包含至少描述该场景对象的几何形状、坐标位置、光学或声音属性其中之一的数据项,并且每个所述场景对象与至少一种数据操作类型对应;
计算处理单元从所述存储单元中调用场景对象的数据并根据属性设定值对相应的数据项进行处理以生成关键帧;
用户通过输入单元设定场景对象在两个相邻关键帧之间的操作类型和参数设定值;
根据作用于两个相邻所述关键帧之间所述场景对象的操作类型和参数设定值,计算处理单元对所述关键帧进行相应的数据操作以生成中间帧。
比较好的是,在上述计算机动画编辑方法中,进一步包含下列步骤:
用户通过输入单元输入欲修改的所述中间帧内所述场景对象的属性值和/或作用于所述场景对象的操作类型和参数;
计算处理单元根据用户输入的修改值对所述场景对象相应的数据项进行处理和/或根据修改值对所述中间帧进行相应的数据操作以形成新的中间帧。
比较好的是,在上述计算机动画编辑方法中,通过下列方式指令计算处理单元调用相应的场景对象:
在显示单元的特定区域内显示用于标识所述场景对象的符号;
用户通过鼠标将选定的符号从所述特定区域内拖放至所述关键帧编辑区域所需的位置。
比较好的是,在上述计算机动画编辑方法中,所述设定值由用户按照下列方式输入:通过鼠标拖放设定场景对象在两个相邻关键帧之间的操作类型和参数的设定值。
比较好的是,在上述计算机动画编辑方法中,计算处理单元通过调用三维图形库OpenGL或Direct3D的函数来实现所述数据操作。
本发明的上述目的还通过以下技术方案实现:
一种计算机动画编辑方法,包含以下步骤:
在存储单元内预先存储一组场景对象的数据,每个所述场景对象的数据包含至少描述该场景对象的几何形状、坐标位置、光学或声音属性其中之一的数据项,并且每个所述场景对象与至少一种数据操作类型对应;
在所述存储单元存储场景脚本文件,所述场景脚本文件包含关键帧内所包含场景对象的种类及其属性值、关键帧之间所述场景对象的操作类型和参数的设定值;
计算处理单元根据所述场景脚本文件从存储单元中调用场景对象的数据并根据属性设定值对相应的数据项进行处理以生成关键帧,并且根据作用于两个相邻所述关键帧之间所述场景对象的操作类型和参数的设定值,对所述关键帧进行相应的数据操作以生成中间帧。
比较好的是,在上述计算机动画编辑方法中,所述场景脚本文件的编写格式遵循一组预先定义的语法规则。
比较好的是,在上述计算机动画编辑方法中,进一步包含下列步骤:
用户通过输入单元输入欲修改的所述中间帧内所述场景对象的属性值和/或作用于所述场景对象的操作类型和参数;
计算处理单元根据用户输入的修改值对所述场景对象相应的数据项进行处理和/或根据修改值对所述中间帧进行相应的数据操作以形成新的中间帧。
比较好的是,在上述计算机动画编辑方法中,计算处理单元通过调用三维图形库OpenGL或Direct3D的函数来实现所述数据操作。
与传统的动画制作方法不同,在本发明的方法中,将场景视为由一组具有不同属性和操作类型的元素组成的图像帧,用户只需调用预先已经定义好的场景对象即可生成场景,减轻了场景设计的工作量。一方面,当这种调用采用所见即所得的用户界面时,用户可利用鼠标拖放操作等方式在场景中任意加入人物、道具、背景等场景对象以生成关键帧,并定义场景对象的运动路径和方式以自动生成中间帧,从而大大提高了动画制作的效率。另一方面,当采用类似“编程”方式生成场景脚本文件时,由于计算处理单元可以自动地一次性生成中间帧,因此大大提高了动画制作的效率。
具体实施方式
一般而言,每个动画场景都可以分解为一组属于一个有限集合并且相互独立的元素,以下将这些构成动画场景的元素统称为场景对象,它们例如包括但不限于三维物体(人物、动物、诸如桌子、气球之类的三维布景等)、二维图片(作为背景、中景和前景)、声效、灯光、摄像机等。不同的场景对象具有各自独特的属性和操作类型,例如桌子的属性包括表面的几何尺寸、颜色、图案、在场景中的坐标位置、视角等,操作类型例如可包括平移、旋转运动之类的图像数据变换处理等,但由于其为刚性物体,因此不包括变形,又如声效,其属性包括音量、音调、声音起始图像帧、声音结束图像帧,其操作类型例如可以包括两种声效的混和处理。
为了能够在动画编辑设备上处理这些场景对象,可以采用一定的数据结构来存储每个场景对象的数据,数据结构的中的每个数据项描述了该场景对象的一个属性,一个场景对象可以包含一个或若干称为属性的数据项,这些属性具有初始或缺省值并且可以进行修改。此外,当操作类型是对象的空间位置或形状变化时,可以利用三维图形库OpenGL或Direct3D中提供的函数来实现相应的操作。
场景对象集合的构建包括两方面的含义,一方面是元素种类的确定,另一方面是每个元素属性和操作类型的确定,由于具体的构建过程取决于实际动画制作的需求,因此此处不作赘述。显然,当完成场景对象集合的构建后,动画编辑设备的计算处理单元只需根据用户指令或场景脚本文件从集合内调用场景对象的数据并为对象的属性赋值(也即对相应的数据项进行处理),然后将具有一定属性的场景对象的数据写入显示单元的显示内存或以文件形式写入存储单元内即可完成任一场景画面的创建。
第一实施例
当创建场景画面时,比较好的是采用所见即所得编辑方式来实现场景对象的调用和属性赋值,具体而言,可将标识场景对象的符号以工具箱的形式显示在显示器屏幕的特定区域内供用户通过鼠标点击、拖放操作来选用。对于关键帧的制作,用户可通过鼠标将选定的符号(也即选定的场景对象,例如人物、道具、背景等)从工具箱区域内拖放至场景编辑区域所需的位置,然后对每个对象的属性进行赋值(例如通过点击鼠标右键弹出的属性选择菜单),动画编辑设备的计算处理单元则自动从存储单元调用场景对象的数据并进行相应的数据处理以使场景对象具有一定的属性。而对于中间帧的制作,用户通过鼠标的拖放操作来直接设定两个相邻关键帧之间场景对象的操作类型和参数,而由计算处理单元自动计算和生成两个相邻关键帧之间的中间帧的数据,在这里,操作类型是该场景对象整体或部分在两个相邻关键帧间的变化方式,实质上是场景对象数据的变化方式,而参数就是这种变化方式的具体形式和幅度,例如如果场景对象为三维物体,则其操作类型包括变形和游走,参数可以是变形的幅度和游走的路径等,如果是灯光,则其操作类型包括明暗变化,参数可以是明暗延续的时间等。
上述所见即所得编辑方式完全可以采用二维CAD技术实现,由于这是一项在计算机图像或图形处理软件中广泛应用的技术,因此此处不作描述。
为了增强动画效果,可能需要对某些自动生成的中间帧独立地进行修改。在本发明中,由于场景被分解为一系列的场景元素,因此这种修改也非常方便。例如,当中间帧的数据按照场景对象的形式写入存储单元时,可以将需要修改的中间帧调取并在显示单元上显示,用户可以通过鼠标点击场景对象显示区域来选定需要修改的场景对象,然后对该对象的属性进行赋值(例如通过点击鼠标右键弹出的属性选择菜单)。
以下借助第一实施例描述基于所见即所得方式的一个动画编辑方法示例。
如图1所示,在步骤11中,在动画编辑设备的存储单元内预先存储一组采用特定数据结构描述属性的场景对象,并且为每个场景对象定义可施加的操作类型,比较好的是通过函数或子程序调用来实现每种操作类型。
接着,在步骤12中,动画编辑设备的计算处理单元从存储单元中调取场景脚本文件。所谓场景脚本文件,实际上就是一种描述场景内各要素(时间、地点、环境、人物、事件等)如何有机地组成场景的文本,为此,其应按照一定的格式描述场景内每个关键帧内对象的种类和各个对象的属性。
随后,在步骤13a中,计算处理单元按照预先定义的格式读取场景脚本文件以确定需要调用的场景对象以及相应的属性赋值。接着,在步骤13b中,计算处理单元根据步骤13a的读取结果从存储单元中调用相应的场景对象的数据并进行适当的变换处理以完成对其属性的赋值。随后,在步骤13c中,计算处理单元将具有一定属性的场景对象的数据一方面以文件的形式写入存储单元加以保存,另一方面输出至显示单元予以显示。至此,该场景的关键帧即告生成。
随后进入步骤14a中,依次选择待生成中间帧的两个相邻关键帧并在显示单元上显示。接着在步骤14b中,用户通过鼠标拖放控制直接设定场景对象整体或部分在两个相邻关键帧间的变化过程或路径。接着,在步骤14c中,由计算处理单元自动计算和生成这两个相邻关键帧之间的若干中间帧的数据,中间帧的数量可以由用户预先设定。
随后,在步骤15中,判断用户是否需要修改生成的中间帧,如果需要,则进入步骤16a,提取用户选定的中间帧编号并将该帧显示于显示单元并进入步骤16b,否则进入步骤17。在步骤16b中,用户通过鼠标点击场景对象显示区域来选定需要修改的场景对象,然后对该对象的属性进行赋值(例如通过点击鼠标右键弹出的属性选择菜单)并将该中间帧的数据以文件形式保存在存储单元内,该步骤完成之后进入步骤17。
在步骤17中,判断是否完成所有相邻关键帧之间中间帧的生成过程,如果尚有未完成生成的中间帧,则返回步骤14a,否则结束该场景的计算机动画绘制过程。
值得指出的是,在本实施例的步骤13a~13c中,计算处理单元按照预先定义的格式读取场景脚本文件并由此生成关键帧,但是实际上也完全可以由用户通过鼠标拖放、键盘设定输入值等方式完成场景对象及其属性的选择操作,由计算处理单元调用场景对象的数据并且在进行适当的数据变换处理后显示于显示单元上从而完成关键帧的生成。
如背景技术部分所述,在现有的动画制作方法中,上色、配音和特效都在后期制作阶段完成。但是在本实施例的动画编辑方法中,由于可以将颜色、声音、特效等都作为场景对象来处理,因此在中期制作阶段即可完成上色、配音和特效等工作,从而改进了工作流程,提高了生产率。
第二实施例
在上述第一实施例中,利用本发明的动画编辑方法可以实现所见即所得方式的动画编辑过程。以下借助图2描述根据场景脚本文件自动生成场景的动画编辑方法的一个示例。
如图2所示,在步骤21中,在动画编辑设备的存储单元内预先存储一组采用特定数据结构描述属性的场景对象,并且为每个场景对象定义可施加的操作类型,比较好的是通过函数或子程序调用来实现每种操作类型。在本实施例中,假设场景对象为一个行走的人体模型,对于一个人体模型的行走过程,其特征可以分为外部行为特征和内部行为特征两类,前者包括人体模型直线行走或转动时整体坐标位置的改变和整体行进方向的改变等特性,它们可以用人体模型这一场景对象的属性(例如场景中的坐标位置属性)来刻画,以下将这类涉及人体模型整体位置变化的属性称为路径;人体行走过程或转动过程除了上述路径变化以外还伴随着四肢的摆动,在不同的场景帧中即表现为腿、手臂等四肢的相对位置变化,人体模型作出笑、哭等面部表情时,在不同的场景帧中即表现为眼睛、鼻子和嘴巴等器官的相对位置变化,这类人体模型各组成部分在场景帧之间的相对变化方式即内部行为特征,它们可以用上述场景对象的操作类型来刻画,其具体形式和幅度可用相应的参数来表征,以下将刻画这类内部行为特征的操作类型称为动作,例如刻画人体行走过程的操作类型可称为“走”动作,刻画作出笑的面部表情的操作类型称为“笑”动作等。
接着,在步骤22中,计算处理单元在存储单元内生成场景脚本文件。在上述场景对象、属性和操作类型定义的基础上,通过定义一组语法规则,场景脚本文件即可由动画编辑人员以一种类似于编写计算机程序语言的方式来编写,具体而言,编辑人员可通过输入设备键入遵循一组语法规则的代码段(类似于计算机程序中的“源代码”),该段代码定义了一系列关键帧场景内所包含的场景对象类型及其属性、两个相邻关键帧之间的操作类型及其参数等。
以两个关键帧之间行走的人体模型为例(为简单起见假设关键帧内仅包含人体模型一个对象并且该对象仅包含行走路径一个属性),将场景内的对象定义为一个小男孩的人体模型,将该人体模型在两个关键帧内的位置变化赋值给路径属性并且定义该两个关键帧之间中间帧生成函数的参数,生成函数Invoke可以具有下列形式:
Invoke(littleboy,walk,FA,FB,path,N)
这里的参数“littleboy”为小男孩人体模型的名称,参数“walk”表示该人体模型的操作类型为走的动作,参数“FA”和“FB”关键帧的编号,参数“path”为该人体模型在这两个关键帧内的位置变化量,参数“N”为两个关键帧之间中间帧的数量。
按照同样的方式,可以定义其它关键帧内的对象种类和属性,依此类推,由此完成整个场景脚本文件的编写。
随后,在步骤23中,动画编辑设备判断场景脚本文件中是否有需要生成中间帧的关键帧,如果有,则进入步骤24a,否则,转入步骤26。
随后,在步骤24a中,计算处理单元读取场景脚本文件内容,例如按照顺序首先读取最前面的两个关键帧,从而提取出该关键帧场景需要调用的场景对象以及相应的属性赋值。接着,在步骤24b中,计算处理单元根据步骤24a的读取结果从存储单元中调用相应的场景对象并对其属性进行赋值。随后,在步骤24c中,计算处理单元将具有一定属性的场景对象的数据写入场景文件从而完成这两个相邻关键帧的生成。
随后,在步骤25a中,计算处理单元读取场景脚本文件以确定步骤24a~24c所处理的两个相邻关键帧之间每个场景对象的操作类型及其参数。接着,在步骤25b中,计算处理单元将步骤25a读取的参数传递给生成函数以生成一系列的中间帧。随后,在步骤25c中,计算处理单元将这些中间帧具有一定属性的场景对象输出至显示单元或写入场景文件。至此,场景脚本文件最前面的两个关键帧及其中间帧即告生成,如果将场景脚本文件的代码类比作计算机程序语言中的源代码,则这里生成的场景文件中的关键帧和中间帧则可类比作目标代码,而根据这里所述方式从场景脚本文件自动生成场景文件的处理过程即可类比作编译。
值得指出的是,本实施例是按照第一对相邻关键帧、第一对相邻关键帧之间的中间帧、第二对相邻关键帧、第二对相邻关键帧之间的中间帧……的顺序来“编译”生成场景文件的,但是也可以按照下列顺序来编译生成场景文件:首先生成所有的关键帧,然后在生成每对相邻关键帧之间的中间帧。对于本发明而言,这两种方式都是可行的。
在本实施例中,为了提供更好的交互性,在步骤26中,动画编辑设备判断用户是否需要对中间帧进行交互式修改,如果不需要,则结束整个场景文件的生成过程,否则,转入步骤27a。
随后,在步骤27a中,提取用户选定的中间帧编号并将该帧显示于显示单元并进入步骤27b。在步骤27b中,用户通过鼠标点击场景对象显示区域来选定需要修改的场景对象,然后对该对象的属性进行赋值(例如通过点击鼠标右键弹出的属性选择菜单)并将该中间帧以文件形式保存在存储单元内,该步骤完成之后进入步骤26。
与现有的动画制作方法相比,本实施例的动画编辑方法由于可以将颜色、声音、特效等都作为场景对象来处理,因此在中期制作阶段即可完成上色、配音和特效等工作,从而改进了工作流程,提高了生产率。而且与第一实施例相比,本实施例的动画编辑方法在生产效率上更加出色,比较适合于对场景画面质量要求不是很高的情形。
以上借助实例对本发明作了详细描述,但是应该理解的是,上述描述仅具有示意性质,不应理解为对本发明范围和精神的限定,对于本领域内的普通技术人员来说,在上述实例的基础上,无需经过创造性的劳动即可提出各种修改或改动,因此本发明的范围和精神由权利要求予以限定。