统计动态建模方法及设备的制作方法

文档序号:6419738阅读:196来源:国知局
专利名称:统计动态建模方法及设备的制作方法
背景技术
本发明涉及计算机图形学领域,尤其涉及制作动画计算机生成的角色动画的方法和设备。本发明涉及计算机图形学领域。很多计算机图形图像是通过对从一个给定的观察点处的三维场景内的光的交互作用数学建模来生成的。这一被称之为渲染的过程产生来自观察点处的场景的一个二维图像,这类似于在真实世界中拍一张照片。通过渲染一个场景图像序列,就如同场景在随时间逐渐地变化,可以制作出动画序列。人们投入了很多精力致力于制作逼真的绘制图片和动画。
动画,不论是手绘的还是计算机生成的,不光是一门科学,也是一门艺术。动画制作人不仅要让一个场景看上去逼真,还要传达适当的情节发展和故事所要求的心理影响。在制作角色动画的时候尤其如此。角色推动着故事情节的发展,并且和观众建立心理联系(建立共鸣?)。
为了创建出具有艺术效果的角色动画,动画制作人经常创建一个粗略的场景,然后微调角色动画以创建出一个期望的剧作和最终场景的表现形式。这类似于一个电影导演和演员一起排演,以求抓住完美地符合某个场景的情绪。因为动画制作人对角色动画的表现力负责,因此允许动画制作人有效地微调角色动画,并且精确地预览该动画的最终形式的动画工具就显得很重要。
在计算机生成动画中,一个角色的外观是由一个三维计算机模型来定义的。为了显得逼真,角色的计算机模型往往很复杂,具有数以百万计的表面和数以十万计的属性。由于制作如此复杂的模型动画的复杂性,动画工具往往依赖甲胄和动画变量来定义角色动画。甲胄是一种“棒状图”,用于表示角色的造型或者形体姿势。通过移动甲胄段,也就是“棒状图”的“棒”,可以操纵甲胄使之处于一个期望的姿势。当动画制作人为甲胄设定造型时,动画工具修改角色模型以使得角色的形体姿势大致地反映出甲胄的形体姿势。
动画变量是另一种用来定义复杂角色模型的角色动画的方法。动画变量是由一个函数所使用的用于修改角色模型的参数。动画变量及与其相关的函数被用于把对于一个角色模型的复杂的修改抽象为相对简单的控制。例如,动画变量可以定义角色的嘴展开的程度。在此例中,动画变量的值被用来确定使角色的嘴展开到期望的程度所需的角色甲胄的很多不同部件的位置。动画工具然后根据最终已设定造型的甲胄来修改角色模型以创建一个张着嘴的角色模型。
有很多不同的用于由一个甲胄来创建一个最终已设定造型的角色模型的方法。一种现有方法是将角色模型上的点与一个或多个甲胄段相关联。当甲胄被移动至一个新的姿势时,与每个甲胄段相关联的点基于与其相关联的已设定造型的甲胄段的位置被运动地变换变换到一个新的位置。由于这种运动变换变换可以迅速的进行,动画制作人可以互动地对他们的动画进行实时的或近乎实时的预览和微调。然而,这种由运动变换变换所得到的动画往往显得僵硬,“像木偶”。
此外,很多角色,像人和动物,是可形变的柔软物体。运动变换对于“柔软物体”的表现特别地差,因为它们不能精确地模拟角色的形变。这使得角色不能按照它们所设定的造型那样逼真地弯曲和凸起。另外,当对柔软物体应用运动变换时,在角色接合处的模型表面,经常会产生裂口和裂缝。可以加入额外的甲胄段以模拟弯曲和凸起的表面,并且平滑接合处的模型表面;然而,创建这些额外的甲胄段很耗时,并且最终已设定造型的角色经常需要大量的手工微调以使得弯曲和凸起看上去逼真。
作为采用运动变换来制作软体角色动画的一种备选方案,软体角色动画可以采用物理模拟的方法来制作。在物理模拟方法中,通过一个材料物理模拟来处理角色模型以创建一个物理上逼真的软体对象。该方法的建立很耗时,往往要求建模者不仅要定义角色的外形,例如皮肤,还要定义内部的肌肉和骨骼。另外,处理由动画制作人为每个姿势创建的角色模型是相当耗费计算量的,经常为了得到一小段动画序列,需要数小时甚至数天来计算角色的模型的形变。
由于动画处理的耗时性,动画制作人经常不得不创建使用简化的“stand-in”模型的场景,然后等着看产生的带有最终角色模型的动画。因为动画制作人不能立刻看到他们的动画的最终结果,对角色的表现力进行微调很困难,也缺乏效率。采用这种技术,动画制作人实质上是盲从于工作的,并且只能猜测最终的结果。
动画角色也经常在一个场景中与其它物体或角色相碰撞或者互动。为了使碰撞看上去更加真实,动画角色需要围绕着被碰撞物体发生形变。响应碰撞所产生的逼真的角色形变在制作碰撞动画中是必不可少的,特别是当角色是软体物体的时候。现有的角色造型技术,比如运动变换,不能逼真地使角色模型响应碰撞产生形变。动画制作人因而必须手工地使角色模型的外形发生形变。物理模拟技术可以用于使角色模型响应碰撞发生形变;然而,如上所讨论的,物理模拟技术的建立和计算很耗时。因为物理模拟技术对时间的要求太高,动画制作人难以微调碰撞动画以传达出适当的剧情效果。
期望有一种制作软体角色的动画的方法和系统,它能够1)逼真地使软体角色形变以响应甲胄姿势;2)便于动画制作人操纵;3)可以迅速地被评估以使得动画制作人可以有效地微调动画;及4)允许动画制作人预览角色模型的最终形象。还进一步期望软体角色可以由于其与自己或者外部物体的碰撞而逼真地形变。
发明概要一种制作软体角色的方法,具有第一角色准备阶段和紧随其后的第二角色动画阶段。在角色准备阶段,为基底姿势组中的每一个造型确定角色模型的皮肤形变。角色形变阶段也在一些皮肤接触点处确定角色模型响应冲击碰撞的皮肤形变。在本发明的一个实施例中,由于设定造型所造成的皮肤形变,被称作皮肤模式响应,和由于冲击碰撞造成的皮肤形变,被称作皮肤冲激响应,采用该基底造型组而被简洁地表示。
在角色动画阶段,该基底造型组,皮肤模式响应,和皮肤冲激响应,被用作创建最终的已设定造型的角色。不论所期望的角色姿势如何,角色动画阶段使用同一组基底姿势,皮肤模式响应,和皮肤冲激响应。所以,对于一个角色模型,基底姿势,皮肤模式响应,和皮肤冲激响应只需要被确定一次。
在一个实施例中,一种制作角色模型的方法包括由确定一组角色动作来确定一个基底组,及对应于该基底组来确定一组该角色模型的皮肤响应。期望的角色姿势被映射到基底组上以确定一组基本权重。该基本权重被应用于一组皮肤响应以创建已设定造型的角色模型。在另一个实施例中,映射角色姿势,应用一组基本权重,和映射一组皮肤响应的步骤为了第二个期望的姿势而被重复以创建第二个已设定造型的角色模型。
在一个实施例中,该组角色姿势包括来自训练组的姿势。在另一个实施例中,改组角色姿势包括随即创建的姿势。在又一个实施例中,甲胄被用来像定义角色姿势组以及期望的角色姿势。在又一个实施例中,动画变量定义至少一部分期望的姿势。
在一个实施例中,确定皮肤响应包括将一组源自基底组中的姿势的位移应用到角色模型的一部分上,并且最小化对于整体角色模型的位移函数。在一个实施例中,该函数是一弹性能量函数。在另一个实施例中,函数在一组与角色模型相关联的采样点被最小化。
该方法的一个实施例将角色姿势变换为一组与角色模型相关联的参考帧。对应每个参考帧,角色模型的一个皮肤姿势响应被创建出来以响应角色姿势。此实施例由每一参考帧的皮肤姿势响应构建角色模型的复合皮肤响应。
另一个实施例通过将第一参考帧的一部分皮肤响应与第二参考帧的一部分皮肤响应相结合来构建复合皮肤响应。第一参考帧的一部分皮肤响应与第二参考帧的一部分皮肤响应可对应于角色模型的两个至少部分交迭的区域。或者,第一参考帧的皮肤响应的一部分与第二参考帧的皮肤响应的一部分对应角色模型的两个不同区域。
另一个实施例根据一组定义第一和第二参考帧的皮肤响应对复合皮肤响应的影响力的一组帧权重将第一参考帧的皮肤响应的一部分和第二参考帧的皮肤响应的一部分相结合。又一个实施例通过使原始的一组帧权重值在角色模型中扩散来确定一组帧权。
附图的简要描述将参考以下附图来描述本发明,其中

图1示出一个可以实施本发明的一个实施例的计算机系统的例子;图2A和图2B示出一个示例角色和一个用于给示例角色设定造型的示例甲胄;图3是说明根据本发明的实施例制作角色动画的两个阶段的方块图;图4是根据本发明的一个实施例用于制作角色动画的角色准备阶段的方框图;图5示出根据本发明的一个实施例的一种用于确定角色的皮肤模式响应的方法的方框图;图6A,6B,6C,6D和6D示出根据本发明的一个实施例在一个示例姿势中的示例角色的皮肤模式响应的确定;图7示出根据本发明的一个实施例的相对于一组座标参考帧给角色模型加权的方法的方框图;图8A,8B和8C示出根据本发明的一个实施例的对一示例角色模型的一组座标参考帧权的确定;图9示出根据本发明的一个实施例的用于构建一个已设定造型的角色模型的角色动画阶段的方框图;图10A,10B,10C和10D示出根据本发明的一个实施例的利用示例甲胄进行的一个已设定造型的角色模型的构建,和一个示例角色模型;图11示出根据本发明的一个实施例的用于确定角色模型的皮肤冲激响应的方法的方框图;图12A,12B和12C示出根据本发明的一个实施例的对示例角色模型的一部分的皮肤冲激响应的确定;图13示出根据本发明的一个实施例的确定对角色模型的碰撞响应的方法;图14A,14B,14C,14D,14E和14F示出根据本发明的一个实施例对角色模型的一部分的皮肤碰撞响应的确定;图15示出根据本发明的另一个的实施例的用于构建已设定造型的角色模型的角色动画阶段的方框图。
需要指出的是,尽管为了清楚,这些附图在二维情况下示出了本发明,但是本发明通常可以应用于三维计算机模型的操作。
本发明的详细描述图1示出一个可以实施本发明的一个实施例的示例计算机系统100。计算机系统100通常包括一个监视器110,计算机120,一个键盘130,一个用户输入装置,和一个网络接口150。用户输入装置140包括一个计算机鼠标,一个轨迹球,一个轨迹垫,绘图板,触摸屏,和/或其它允许用户创建或者选中出现在监视器110上的图形、物体、图标、和/或文本的有线或无线输入装置。网络接口150的实施例通常提供与一个诸如局域网、例如因特网的广域网、和/或例如虚拟私有网络(VPN)的虚拟网络的电子通信网络的有线或无线连接。
计算机120通常包括一些元件,诸如一个或多个通用功能处理器160及诸如随机访问存储器(RAM)170,磁盘驱动器180的记忆存储装置,及连接上述元件的系统总线190。RAM170和磁盘驱动器180是用于存储数据、音频/视频文件、计算机程序、applet解释器或者编译器、虚拟机的有形媒体例子,这里描述的本发明的实施例包括几何场景数据、目标数据文件、光照模型描述符、一个渲染引擎、输出图像文件、纹理映射、和位移映射。计算机120的另一个实施例可以包括用于处理和输出音频和图像数据的专门的音频和视频子系统。其它有形媒体包括软盘;移动硬盘;诸如DVD-ROM、CD-ROM和条形码的光存储媒介;诸如闪存的不挥发存储装置;只读存储器(ROMS);电池供电的挥发存储器;和网络化存储装置。
图2A和2B示出一个示例角色用于为该示例角色设定造型的示例甲胄。角色205是一个软体物体的三维计算机模型,为了清楚以二维显示。虽然角色205以人形来显示,它可以采用任何物体的形式,包括植物、动物、和具有真实的或者拟人属性的静物。角色205可以采取任何用于创建三维计算机模型的方法来创建,包括采用三维模型软件手工构建、程序化物体创建、及对实物的三维扫描。角色205可以包括一组多边形;体素;高次曲面,例如贝赛尔(Bezier)曲面或者非统一有理B一样条(NURBS);构成立体几何;和/或其它用于展示三维物体的技术。另外,角色205可以包括定义物体外部形态的属性,包括颜色、纹理、材料属性、透明度、反射率、光照和阴影属性、位移映射、和凸起映射。
角色205通过甲胄210来制作成动画。甲胄210包括一个或多个甲胄段。甲胄段可以是连接的或分开的,如图2A中所示。动画制作人操纵甲胄210的段的位置和方向以定义角色的一个造型。一个造型是一组定义角色205的形体姿态的甲胄位置和方向。甲胄段可以由尺寸、位置、或者方向来约束,或者可以由动画制作人自由地操纵。甲胄段的数目可以根据角色的复杂度而变化,一个典型的角色可以有一个有数以十万计的段的甲胄。在某些情况下,甲胄段的数目和位置与角色的“骨架”类似,然而,甲胄段也可以定义面部表情和其它不一定和骨头或者其它解剖学特征相关联的细节。此外,尽管图2A的甲胄210中的甲胄段由一组点组成,在本发明的备选实施例中,甲胄段可以由一组表面和/或一组体积所组成。当甲胄210被动画制作人已设定造型后,角色205的形体特征粗略地反映出甲胄210的形体特征。
角色205的动画通过创建一序列帧、或者静止的图片来制作,其中角色205逐渐地从一个造型变换到另一个造型。角色205也可以在帧之间被转化、旋转、同比缩放、或者作为一个整体被操纵。动画制作人可以手工地为序列中的每个帧创建角色的造型,或者为两个或更多关键帧创建造型,这些帧随后由动画软件插入进去从而为每个帧创建造型。造型也可以通过使用函数、程序、或者算法来自动创建。动画变量可以被用作一个或更多定义造型的函数的参数。角色205及与其相关联的甲胄210按照静止造型,或者角色的预设形体姿态而被显示。在一个实施例中,角色的静止造型由角色模型和甲胄的初始配置所确定。
图2B示出一个被动画制作人操纵为一个造型后的角色220。在此例中,动画制作人移动了甲胄225的手臂段。作为响应,角色220呈现一个抬起手臂的造型。通过操纵另外的甲胄段,可以创建出更复杂的造型。
创建一个甲胄造型后,处理角色以使其反映甲胄的形体姿态。为了虑及互动帧速率和逼真地为软体角色设定造型,本发明将动画处理分为两个阶段。
图3是说明根据本发明的实施例的一种制作角色动画的方法的两个阶段的方框图。第一阶段305是角色准备阶段。角色准备阶段相对地消耗计算量,并且在所有动画制作之前完成。角色准备阶段305为角色创建一组定义角色向众多造型变换的模式数据。
角色准备阶段305完成以后,动画制作人在角色动画阶段310制作角色动画。在角色动画阶段310,动画制作人通过定义一帧中的角色的甲胄造型为角色创建动画序列。最终设定造型的角色是由被动画制作人定义的造型和预先创建于角色准备阶段305中的模式数据组所创建的。本发明的一个实施例由一个甲胄造型和实时的,允许动画制作人预览结果的模式数据组来创建最终已设定造型的角色。不管期望的角色造型是什么,角色动画阶段使用相同的模式数据组来创建最终已设定造型的角色。因此,对于一个角色,只需要完成一次角色准备阶段305。重复地进行角色动画阶段310从而为动画序列中的每个甲胄造型创建最终已设定造型的角色。
图4是根据本发明的实施例用于制作角色动画的角色准备阶段的方框图400。步骤405由一组采样甲胄位置来创建一个基。在这一步中,为一个与角色相关联的甲胄创建了一组采样甲胄位置。在一个实施例中,该组采样甲胄位置包括来自一个定义角色的典型动作的训练组的造型。例如,该组采样甲胄位置可包括与诸如走、跑、抓、跳、以及爬相关联的甲胄造型。在一个备选实施例中,该组采样甲胄位置是程序化创建的。可以通过选择一个或多个甲胄段并操纵这些段以给其新的位置和方向来程序化地生成采样甲胄位置。例如,每个甲胄段被依次被选中,并且在给定的维度上被移动一个单元以创建一个采样甲胄位置。在此例中,采样甲胄位置的数量将达甲胄段的三倍。在另一个实施例中,在创建每个采样甲胄位置时,靠近被选中的甲胄段的甲胄段也根据一个弹性模型被重新定位。在又一个实施例中,一个采样甲胄位置考虑对甲胄段的限制。例如,甲胄段的运动范围有限制。
每个采样甲胄位置由一个定义甲胄段的位置的向量来描述。在一个实施例中,向量定义甲胄段的位置对比它们的静止或者初始位置的相对位置。所有采样甲胄位置的向量被结合以形成一个包含甲胄的采样甲胄位置组的矩阵。对矩阵进行一次单值分解计算以找出一组甲胄的基函数(或模式)。在备选实施例中,可以使用其它的计算一组基函数的方法,比如经典的相关。基函数组紧致地定义了一个“造型空间”,其中任何造型都可近似地由一个或多个基函数的加权总和构成。在另一个实施例中,如果得到的基函数组不是正交组,则该基函数组被正交化以使得每个基函数的值为1并且与每一其它基函数正交。
在步骤405中创建基函数组之后,在步骤410中为每个采样甲胄位置基函数确定皮肤模式响应。皮肤模式响应是角色的表面响应甲胄从其静止造型向一采样甲胄位置的运动的形变。
图5示出根据本发明的一个实施例的,如步骤410所要求的用于确定角色的皮肤模式响应的方法的方框图。在步骤505,角色模型和其甲胄被离散以创建一组采样点。在一个实施例中,角色模型被离散化为三维的格子。在此实施例中,角色模型中的,或靠近甲胄的格点是一组采样点。在备选实施例中,角色模型被离散为一组四面体单元。在此实施例中,一组四面体被置于角色模型内部,及其甲胄周围。这些四面体的顶部就是采样点组。这些实施例是用来作为例子的,任何其它类型的离散化均可以被步骤505使用,包括有限元法、有限体积法、和sum-of-spheres离散化。
在步骤505的示例应用中,图6A示出一角色模型603和与之相关联的甲胄605,它们用三维网格607离散。角色模型603和其甲胄处于静止位置。尽管以二维显示,网格607是三维网格。此外,示于图6A中的网格607的密度,也就是单位体积中立方格的数量,只是出于说明的目的。取决于角色模型603的尺度和相对比例,一个典型的网格形成一个围绕角色周围的,大约120立方格高、50立方格宽、70立方格深的边界框。这些尺度会根据角色模型603的高、宽和深而变换。
在另一个实施例中,网格的密度随着角色603的部位不同而变化以确保角色的较复杂部位,例如角色的脸和手的精度。值得注意的是,网格607不仅仅围绕着角色模型603周围,也填充角色模型603的内部。在另一个实施例中,完全位于角色模型603以外的网格元素被忽略,而部分地或者全部地位于角色模型内的网格元素被保留以用于确定皮肤模式响应。这降低了确定皮肤模式响应对处理量和存储器的要求。
图6B示出了与用于示例甲胄625,及与其相关联的角色模型623的基函数相关联的一个采样甲胄位置。在此例中,甲胄段627和629被置于新的位置。位移向量631和633分别定义甲胄段627和629自静止造型的位移。轮廓635描绘角色模型623受甲胄从静止位置到采样甲胄位置的位移的影响的那一部分。
在步骤510,自采样甲胄位置的位移向量被赋给靠近甲胄段的采样点。
在步骤510的示例应用中,图6C示出位移向量给靠近甲胄段的采样点的赋值。图6C示出角色模型的一部分640、与其相关联的甲胄642、及围围其的网格641。甲胄段643和645被示于其静止造型中。甲胄位移向量,647和649,分别与甲胄段643和645相关联。
每个靠近甲胄位移向量647的采样点被赋予一个位移向量,如位移向量组651所示。位移向量的值被计算以使得网格位移向量651的加权和等于甲胄位移向量647。相似地,一组位移向量653被赋给靠近甲胄位移向量649的采样点。对所有靠近任何甲胄段的任何部分的采样点都进行了位移向量计算。如果仅为一个甲胄段的末端点定义甲胄位移向量,则甲胄位移向量沿着甲胄段的长度被插入。被插入的甲胄位移向量然后被用作为靠近甲胄的每一部分的采样点创建一组位移值。
在一个网格641是三维笛卡尔网格的实施例中,每个甲胄位移向量都有8个邻近的位移向量。在一个使用四面体离散的备选实施例中,每个甲胄位移向量有4个邻近的位移向量。
值得指出的是,甲胄位移向量和赋给图6C中的采样点的位移并没有按实际比例显示。另外,假设位移向量的幅度无穷小。因此,采样点实际上并没有被从它们的初始位置移开。而是说,被赋值的位移向量表示与它们相关联的采样点的“虚拟位移”。
在步骤515,通过使用在步骤510中赋值的作为初始输入值的位移向量来计算表示角色模型的皮肤的形变的皮肤模式响应。在一个实施例中皮肤模式响应是通过弹性能量函数对应确定角色体内每个采样点皮肤模式响应的值来计算的。一个示例的弹性能量函数是E2=V|∂qx∂x+∂qy∂y+∂qz∂z|2+S[(∂qx∂y+∂qy∂x)2+(∂qx∂z+∂qz∂x)2+(∂qy∂z+∂qz∂y)2]]]>在此示例弹性能量函数中,qxyz(x,y,z)是采样点从其静止位置(x,y,z)的位置。V是表示模型对体积改变的抗力的参数,而S是表示内部剪切的抗力的参数。可以改变V和S的值以改变角色的形变特性。非常软或者“易压扁”的角色的V值和S值较低,而相对而言较刚性的角色具有较高的V值和S值。
通常可以通过一个汉密尔顿动态系统来表示材料行为,任何种类的汉密尔顿函数均可用作步骤515中的能量函数。在另一个实施例中,能量函数包括局部项,其改变系统的能量以响应局部形变,如以上例子中所示,和附加的全局项,其改变系统的能量以响应角色模型整体上的变化,如全局体积保留项。
通过使用赋给邻近甲胄段的,作为采样点组的“籽”值的位移值,一个联立方程组被创建以表示整个角色模型的弹性能量。该联立方程组在一组采样点上被最小化。弹性能量函数的最小化可以通过使用一数值求解算子来为每个采样点找出qxyz的值和位置偏移量来进行。在一个实施例中,使用了一个椭圆数字解算器来最小化能量函数。备选的实施例可以使用共轭梯度多栅或者亚克比求解算子。皮肤模式是靠近模型的皮肤的位置偏移量组。
在步骤515的示例应用中,图6D为一基函数示出角色模型的一部分皮肤模式响应的例子。角色模型的一部分660被详细地显示。位移向量组663描述一部分角色的皮肤的形变。在此例中,皮肤在角色的“膝盖骨”周围向外凸起。类似的,位移向量组665描述角色在“膝盖“后面的一部分皮肤的形变。在此例中,膝盖后面的皮肤向内皱,而膝盖上方和下方的皮肤向外凸起。尽管为了清楚而作了省略,但所有邻近角色模型的皮肤的采样点都进行了位移向量的计算。在另一个实施例中,在给定函数中表示在一个皮肤点处的非常小的形变的,其值为零的或者很小的网格位移向量被截去。
图6E示出构建成模型皮肤的图6D的皮肤模式响应。该图用于说明图6D的皮肤模式响应在角色模型上的效果。以下将讨论,本发明的一个实施例将皮肤模式响应映射到基函数组上以创建一个更紧凑的表示法。在图6E中的例子中,角色模型的一部分680被详细地显示。基函数创建的位移使皮肤685向外和向内凸起。在本例中,皮肤模式响应呈现角色的膝盖弯曲时其大腿的形变的逼真表示。
与现有身体模拟技术需要在角色的皮肤以下构建复杂的骨骼和肌肉以创建一个逼真的“凸起”效果不同,本发明直接由甲胄基函数所引入的位移直接地确定真实的皮肤模式响应。也不同于动态变换技术,不需要明确地使皮肤点与一个或多个甲胄段相关联。真实的皮肤形变自动地产生自底层的甲胄的位移。相比于现有技术,这降低了创建角色模型的时间和精力。
为于现有技术作个比较,同样示出了由甲胄造型经动态变换所得的角色表面的轮廓690。与本例的皮肤模式响应相比,动态变换的模型皮肤显得生硬和机械。
在步骤520,为每个基函数重复确定皮肤模式响应的过程以为基函数组创建一组皮肤模式响应。在步骤525,皮肤模式响应被映射到基函数组上以创建皮肤模式组的紧凑的表达。
在步骤525的实施例中,在每个皮肤模式的计算之后,邻近甲胄段的采样点的位置偏移量被与原始值相比较。这么做是由于形变的角色模型“推回”在甲胄段上的效应以及分开的甲胄段互相推入的效应。如果邻近甲胄段的采样点被改变,则由修改的采样点组计算新的基函数。新的基函数替换基函数组中与其对应的原始基函数。修改的基函数组被正交化,然后皮肤模式被映射到修改的、正交化的基函数组上以被存储。在为基函数组确定皮肤模式响应后,未使用的位置偏移量,也就是不邻近角色模型的皮肤的位置偏移量,被丢弃。
步骤410,其导致用于甲胄基函数组的皮肤模式组的确定,在其完成后,步骤415为角色模式皮肤确定帧权重组。如以下将详细讨论的,帧权重组被用于角色动画阶段以修正由角色模型的大幅转动引入的非期望的剪切效应。
图7示出根据本发明的一个实施例的参考一组座标参考帧给角色模型加权的方法的方框图。在步骤705,一组座标参考帧被附在甲胄的段上。座标参考帧为甲胄段和角色模型的邻近部分定义一个局部并列系统。在一个实施例中,一个座标参考帧被连接到每个甲胄段上。在一个备选实施例中,一些甲胄段共享相同的座标参考帧。在一个实施例中,一个座标参考帧由四个向量组成用于定义座标参考帧的原始位置的第一向量,和三个用于定义并列参考向量的并列轴的向量。
图8A示出步骤705所要求的将座标参考帧附在一个示例甲胄上。在图8A中,甲胄802与一些座标参考帧相关联,包括座标参考帧804、806和808。每个参考帧被附在、或者置于一个甲胄段附近。在一个实施例中,座标参考帧被置于甲胄段的末端或者接合处。
在图8A的例子中,座标参考帧804被置于角色甲胄的头部中心附近。座标参考帧806被置于甲胄802的肩膀接合处。座标参考帧808被置于甲胄802的膝盖接合处。
在步骤710,甲胄和角色模型被离散以创建一组采样点。类似于如上所讨论的为了确定皮肤模式响应进行的离散化,一个实施例由一个三维网格创建一组采样点。一个备选的实施例使用一组四边形单元来离散角色模型和甲胄。
在步骤715,一组初使帧权重被赋给邻近每个座标参考帧的采样点。一个帧权重定义了一个座标参考帧对一个采样点的影响。如以下将详细讨论的,每个采样点可以被不止一个并列采样帧所影响,因此可以有不止一个帧权重。在步骤715,邻近参考帧的采样点被值为1的帧权初始化。其它不与任何参考帧邻近的采样点的帧权在这一阶段不作定义。
图8B示出在一示例角色模型的一部分中的初使帧权重的分配的例子。图8B示出角色模型810的一部分和由一个三维网格所创建的采样点组812的一部分。在此例中,座标参考帧814和816被置于甲胄段上。对于每个座标参考帧,邻近的采样点被赋予帧权1。例如,采样点818相对座标参考帧814被赋予帧权1,而采样点820相对座标参考帧816被赋予帧权1。
在步骤720,周围采样点的帧权由初使帧权确定。在一个实施例中,一个空间扩散函数被用于计算采样点的帧权重。在此实施例中,初使帧权重值从它们的初使采样点向外扩散到周围的采样点。随着帧权重扩散到远处的采样点,帧权重的值逐渐地减少。一个空间扩散函数的例子是∂2ω∂t=D▿2ω]]>在此例中,函数wxyz(x,y,z)是与一个与采样点相关联的,相对一个给定的座标参考帧的帧权。D是一个定义扩散速率的扩散系数。在一个实施例中,D是各向异性的。在一个备选实施例中,D根据扩散的方向而变化。在该备选实施例中,可变扩散系数可用于定义在一个甲胄接合处的参考帧之间的突变。在另一个实施例中,扩散系数被选为与角色模型中的剪切压力的扩散相一致。
通过使用初使帧权作为采样点组的籽值,创建一个联立方程组以表示帧权在整个角色模型中的扩散。将该联立方程组对采样点组求解以为每个采样点找出一个或多个帧权,wxyz。如果一个采样点被多个座标参考帧所影响,则采样点将有一个对应的用于定义来自于之相关联的座标参考帧的影响的程度的帧权重组。每个采样点的帧权重组将被归一化以使得一个采样点的帧权重的和为1。
在一个步骤715和步骤720的备选实施例中,通过使用考虑了旋转效应的完全非线性模型,确定了一组优化的帧权。在该实施例中,为甲胄基函数组中的每个函数都确定了角色模型的皮肤模式响应的非线性方案。与在步骤415中计算的线性方案不同,非线性方案不假设位移向量是无穷小的。每个非线性方案的皮肤模式被与相应的如步骤415中所确定的一个甲胄基函数的线性皮肤模式响应相比较。从这些非线性皮肤模式响应与相应的线性皮肤模式响应的比较中,为每个采样点确定一个优选的帧权重组。
在另一个实施例中,在步骤715和720中所确定的帧权重,比如来自空间扩散处理或者来自非线性模型,被手动调节为审美角度上的最佳结果。例如,靠近角色模型的接合处的采样点的帧权重可以被微调,以使得皮肤点的形变看上去比较舒服。
图8C示出为一部分靠近模型皮肤的采样点所确定的一组帧权重的例子。图8C示出角色模型822的一部分。也显示了座标参考帧824和826。为邻近模型皮肤的采样点所确定的一部分帧权重组用空心圆在图8C中突出显示。每个采样点有一个或多个帧权重。例如,采样点828可以有一个对于座标参考帧826的帧权重0.9,和一个对于座标参考帧824的帧权重0.1。采样点830可以有一个对于座标参考帧826的帧权重0.1,和一个对于座标参考帧824的帧权重0.9。采样点832可以有一个对于座标参考帧826的帧权重0.999,和一个对于座标参考帧824的帧权重0.001。
在步骤725,参考帧组和它们的关联帧权重被存储以备在角色动画阶段使用。步骤415和角色准备阶段到此完成。角色准备阶段完成后,角色可供动画制作人在角色动画阶段使用。角色动画阶段使用基函数组、相关联的皮肤模式组、和由方法400所确定的帧权重组来创建最终设定好造型的角色。
图9示出根据本发明的一个实施例的用于构建一个已设定造型的角色模型的角色动画阶段的方框图。在步骤905中,已设定造型的角色甲胄定义期待的最终设定造型的角色的形体姿势。如上所讨论的,已设定造型的甲胄可以由通过在关键帧之间插入,或者程式化地使用一个或多个动画变量、函数、程序、或者算法,由动画制作人手动创建。已造型的甲胄被与处于静止位置的甲胄进行比较以确定一个定义处于设定态和静止态的甲胄段的位置与方向上的不同的造型向量。另外,附在甲胄上的座标参考帧组跟着与它们相关联的甲胄段从静止位置到设定位置。一组定义座标参考帧的位置和方向的向量也在步骤905中被确定。
在步骤910,造型向量被变换到各个由位于造型位置的座标参考帧组所定义的并列空间中。对于每个座标参考帧,被传送的造型向量被映射到甲胄基函数上。通过将造型向量映射到基函数组,造型向量被变换为一组基函数权。基函数权重将造型向量重新定义为基函数组的加权和。由变换的造型向量为每个座标参考帧创建一组基函数权。
在步骤915,在步骤910中确定的基函数权重组被应用于每个座标参考帧的皮肤模式。如上所讨论的,在角色准备阶段为每个基函数预先创建一皮肤模式。在步骤915中,与每个座标参考帧相关联的基函数权被应用到基函数的皮肤模式。所产生的分别被与其关联的基函数权重所加权的皮肤模式被相加以创建一个皮肤响应。皮肤造型响应是角色模型响应于已设定甲胄的形变。如果基函数组形成造型空间的完整要素,则可以为任何可能的角色造型确定皮肤造型响应,而不管期望的造型是否明确地属于原始造型组中的一部分。
在步骤915,为每个座标参考帧创建一个分离皮肤模式响应。在另一个实施例中,在角色皮肤的某些其帧权重为0或者可以忽略的部分的参考帧中,步骤920省略了皮肤模式响应的确定。
如上所讨论的,皮肤响应采取表现为空间外形偏移量的形式的模式来表示。在角色动画阶段,模型的一部分可以被转离它们原来的方向。如果这样的旋转对于角色模型的邻近部分而言相对较大,那么可以引入所不期望的剪切效果。为了修正该剪切效果,为每个座标参考帧分别地确定皮肤造型响应。
在步骤920,在每个参考帧中所确定的皮肤造型响应被结合以创建一个不含任何剪切效应的单个合成皮肤造型响应。在步骤920,皮肤造型响应组由与其相关联的座标参考帧变换为全局参考帧。一旦所有皮肤造型响应在同一并列系统内,皮肤造型响应根据在角色准备阶段所预先确定的帧权重组相累加。每个皮肤点是皮肤造型响应以及与该皮肤点相关联的相应帧权的加权和。在一个实施例中,这些皮肤响应以其基底映射的形式相累加。其结果是一个复合皮肤响应。
在步骤920之后,复合皮肤响应由基底映射形式构建回物理形式。在步骤925,复合皮肤响应的加权和以及基函数组创建最终的已设定造型角色。
为角色的每个造型重复方法900的步骤以制作一个动画序列。由于皮肤模式响应和皮肤冲激响应是在角色准备阶段计算的,角色动画阶段可以实时或者近乎实时地进行。这使得动画制作人可以有效地微调动画。另外,由于角色模型的结合皮肤响应真实地形变以响应甲胄造型,动画制作人在动画处理时就可看到角色模型的最终外形,而不需要等待。
图10A,10B,10C和10D示出根据图9中描述的方法的实施例的利用示例甲胄进行的一个已设定造型的角色模型的构建,和一个示例角色模型。图10A示出一个示例已设定造型的甲胄1005。在此例中,已设定造型的甲胄1005定义处于奔跑位置的角色的形体姿势。如上所讨论的,已设定的甲胄1005可以由动画制作者通过在关键帧间插入,或者程序化地使用一个或多个动画变量、函数、程序、或者算法而手工地创建。
图10B示出示例已设定造型的甲胄1010及与其相关联的座标参考帧组。在图10B中,每个座标参考帧由一个阴影矩形所表示。每个矩形的位置和方向表示在已设定造型位置处的相关联的座标参考帧的位置和方向。每个矩形的大小表示受到相关联的座标参考帧所影响的角色模型的大致部分。
例如,座标参考帧1015与已设定造型的甲胄1010的大腿上甲胄段相关联。座标参考帧1015影响角色模型在大腿上甲胄段周围的部分。类似地,座标参考帧1020影响角色模型在已设定造型角色1010的手臂上甲胄段周围的部分。虽然在图B中没有显示,两个或更多参考帧可以对角色模型的相同部分产生影响。
图10C示出两个为座标参考帧所确定的皮肤造型响应的例子。皮肤造型响应1025与座标参考帧1035相关联。皮肤造型响应1030与座标参考帧1040相关联。如上所讨论,但未显示于图10C中,为每个与设定造型的甲胄相关联的座标参考帧确定一个皮肤造型响应。
皮肤造型响应1025从座标参考帧1035的角度示出角色模型响应已设定甲胄的形变。皮肤造型响应1025在座标参考帧1035中的部分被正确地形变以响应已设定造型的甲胄。然而,由于剪切效应,处在座标参考帧1035之外的皮肤造型响应1025的其它部分高度地失真。例如,在皮肤造型响应1025中,座标参考帧1035内的角色模型的大腿上部根据已设定甲胄被正确的形变,而角色模型的手臂1042和1044则由于剪切效应而失真。
类似的,皮肤造型响应1030从座标参考帧1040的角度表示角色模型响应于已设定造型的甲胄所产生的形变。在座标参考帧1040内的皮肤造型响应1030的手臂部分正确地被形变以响应于已设定造型的盔甲。然而,皮肤造型响应1030的处在座标参考帧之外的的其它部分,比如角色模型的腿部,由于剪切作用而严重变形了。
采用如上所讨论的图9中的方法,通过使用帧权重组,从各个参考帧所确定的分离的皮肤造型响应被结合为一个没有剪切效应的复合皮肤造型响应。
图10D描述由一组与不同的参考帧相关联的分离皮肤造型响应所创建的复合皮肤造型响应1050。例如,复合皮肤造型响应1050的大腿部分1060主要由图10C中所示的皮肤造型响应1025所创建。类似的,复合皮肤造型响应1050的手臂部分1065主要由皮肤造型响应1030所创建。帧权重组确定每个皮肤造型响应对于复合皮肤造型响应的给定部分的贡献。如上所讨论的,由于一个皮肤点可以通过一些相应的帧权重值与几个座标参考帧相关联,所以复合皮肤造型响应可包括来自几个皮肤造型响应的贡献。
通过使用上述的实施例,动画制作人可以实时创建具有逼真的突起和弯曲的角色模型。在本发明的另一个实施例中,角色模型或者其它柔软的物体响应与其它物体的碰撞而被实时地逼真地形变。角色的皮肤可以由于其与一个外在物体,比如与另一个角色或者刚性的物体的碰撞而形变。角色的皮肤也可以由于自我碰撞而形变,也就是角色模型的一部分与其另一部分的碰撞而形变。一个自我碰撞的例子可以发生于角色的手臂在肘部弯曲从而使得其上臂和下臂互相接触时。
创建逼真的角色模型形变以响应于碰撞是一具有两个阶段的过程,其类似于图3中所讨论的。第一阶段是碰撞准备阶段。碰撞准备阶段相对而言很耗费计算量,其在所有动画制作之前进行。碰撞准备阶段创建用于定义角色对于一组测试碰撞的形变的一组皮肤冲激响应。每个角色皮肤冲激响应是角色的表面响应在一单一点的单一碰撞的形变。在一个实施例中,皮肤冲激响应定义碰撞点周围的点的位移以响应一次碰撞。
在完成碰撞准备阶段之后,在碰撞动画阶段通过放置与角色相接触的物体以创建碰撞。在本发明的一个实施例中,动画制作人在动画序列的每个帧中定义角色模型的位置和发生碰撞的物体,其被称之为碰撞体。角色模型的任何与碰撞体交迭或者接触的部分被视为碰撞的一部分。碰撞动画阶段使用皮肤冲激响应组为每个帧确定皮肤碰撞响应,该皮肤碰撞响应是角色模型响应于碰撞体与角色模型的碰撞的形变。
无论碰撞体的形状或角色模型和碰撞体之间碰撞的数量如何,碰撞动画阶段使用相同的皮肤冲激响应组以确定碰撞皮肤响应。所以,对于每个角色模型只需要进行一次碰撞准备阶段,而碰撞动画阶段被重复以为动画序列中的每个帧创建皮肤碰撞响应。
在碰撞准备阶段,本发明的一个实施例为一个角色模型确定一个皮肤冲激响应组。图11示出根据本发明的一个实施例用于确定角色的皮肤冲激响应的方法的方框图1100。在步骤1105,角色模型被离散化以创建一组采样点。在一个实施例中,角色模型被离散化成三维网格。在一个备选实施例中,角色模型被离散化为一组四边形单元。
在步骤1110,一个碰撞点被选中。一个碰撞点可以是角色模型的表面上的任何点,或者,在另一个实施例中,可以是角色模型内部的任何点。例如,内部碰撞点,即处于角色模型内部的碰撞点,可以被用于使角色模型的皮肤形变以响应与内部“肌肉”物体的碰撞。然而,皮肤和肌肉实际上经常被一层脂肪分开。为了接近这一解剖学特征,可以选择角色模型的内部点作为碰撞点以创建一个“碰撞屏蔽”。
步骤1110将一组位移应用于碰撞点。每一个位移表示在碰撞点处的角色模型在不同方向的碰撞。在一个实施例中,一个位移在迪卡尔空间的三个方向被应用到碰撞点上。在另一个实施例中,每个位移是适当方向的一个单位位移。以一种类似于步骤410中所述的方式,邻近碰撞点的采样点基于在碰撞点处的位移而被赋予位移向量。
在步骤1115,使用在步骤1110中所赋的移位值作为初始输入值的位移值为每个位移计算皮肤冲激响应。在一个实施例中,通过确定弹性能量函数在角色体内的每个采样点处的值来计算皮肤模式响应,其所采用的方式类似于用于找出皮肤模式响应的方式。通过最小化弹性能量函数在整个离散空间的值,为每个采样点计算qxyz的值,即位置偏量。对于一个给定皮肤位移的皮肤冲激响应是在邻近模型的皮肤的采样点处的一组位置偏离。
在步骤1120,步骤1110和1115被重复以为被应用到一些碰撞点上的位移创建皮肤一组冲激响应。在一个实施例中,其中皮肤包括一个或多个由控制点所定义的表面,每个控制点被选为碰撞点,然后皮肤冲激响应组被创建。在另一个实施例中,用于角色模型的相对刚性的部分控制点被排除出该碰撞点组。
在步骤1125,由皮肤冲激响应确定一个基函数组。在一个实施例中,采用单值分解以计算来自皮肤冲激响应的基函数组。在备选实施例中,可以采用其它计算基函数组的方法,比如经典相关。在另一个实施例中,如果得到的基函数组不是正交基,则该基函数组被正交化以使得每个基函数的模为1并且与其它基函数正交。
步骤1125将冲激响应组映射到基函数组上以创建皮肤冲激响应组的紧致表达。在另一个实施例中,单值分解的次有效项被省略以减少基函数的数量。这在冲激响应组被映射到被简化的基底组上时产生平滑效应。在备选实施例中,皮肤响应组作为一定义周围的点响应一个碰撞点的位移所产生的位移的向量稀疏组而被储存。该备选实施例表明,较之基函数的表示,皮肤冲激响应仅能更为有效地影响少量的点。
图12A、12B和12C描述的是根据本发明的实施例的确定一个示例角色的皮肤冲激响应。图12A描述了应用于角色模型1025的位移。在该例中,角色模型1205已用三维网格1215离散化。位移1220被应用于模型皮肤1210上的碰撞点上。位移值组1225被赋予邻近碰撞点的采样点。
图12B描述位移向量组1230,其被包括在产生自皮肤位移1235的皮肤冲激响应内作成为其中的一部分。该位移向量组1230是出于解释的目的而提供的,皮肤冲激响应可包括任何数量的,分散于全部或者部分的模型皮肤中的位移向量。从格子位移向量组1230的模和方向可以看出,模型皮肤在靠近碰撞点处向内凸出,并在围绕碰撞点的区域向外凸出。
图12C示出图12B中的被映射到模型皮肤上的示例皮肤冲激响应。展示该图是为了对说明图12C的皮肤冲激响应对角色模型的外观的影响加以说明。如上所述的,本发明的一个实施例将皮肤冲激响应映射到一组基函数上以创建一个更为紧凑的表达。在图12C的例子中,作为由皮肤冲激响应所创建的位移的结果,模型皮肤1260向外和向内弯曲。在此例中,皮肤冲激响应显示了由于和一个物体的碰撞所致的角色的形变的逼真展示。处于静止态的模型皮肤1250被示出以供比较。
在碰撞准备阶段中确定了皮肤冲激响应组之后,碰撞动画阶段确定角色皮肤的形变以响应由动画制作人定义的碰撞。图13描述了根据本发明的一个实施例的一种用于确定角色模型的碰撞响应的方法1300的方框图。方法1300将参考图14A-14F在此之后讨论,其根据本发明的实施例对来自示例碰撞的皮肤碰撞响应的确定进行了描述。
在步骤1305,碰撞点组被识别。碰撞点是与碰撞体接触或者在碰撞体内的皮肤点。图14A示出与一个与碰撞体1402相碰撞的模型皮肤1404的一部分。该模型皮肤1404包括一些皮肤点。这些皮肤点中的一部分处于碰撞体1402内。这些皮肤点,1406、1408、1410、和1412,是位于该示例碰撞中的碰撞点组。在另一个实施例中,对那些并非与碰撞体接触或者位于其内部的皮肤点而言,当其靠近碰撞体的表面或者靠近碰撞体内部的一个碰撞点时,它们被选为附加碰撞点。这为当来自碰撞的角色皮肤形变导致额外的皮肤点与碰撞体接触时的情况提供了一个安全裕度。
在步骤1310,一个第一碰撞点被选中,并被移到一个潜在静止位置,即是对一个碰撞点的最终静止位置的第一次近似。在一个实施例中,第一碰撞点被随机选中。在一个实施例中,潜在静止位置是位于碰撞体表面的最靠近第一碰撞点的位置。在一个备选实施例中,潜在静止位置是位于第一碰撞点和最近的碰撞体表面点之间的一个位置。在另一个实施例中,一个比例因子被用于确定最近的碰撞体表面点和潜在静止位置之间的距离。
图14B描述一个从其初始位置1416被移动到一个潜在静止位置的示例第一碰撞点。在此例中,潜在静止位置是其初始位置1416和碰撞体1418的最近的表面点之间的距离的80%。在此例中,比例因子被选择为使方法1300的效果得到优化。尽管为了说明,第一碰撞点1414被示为沿着严格水平的方向被移动,但是应该指出的是碰撞点可以沿着任何方向被移动到一个潜在静止位置上。
在步骤1315,一个初始碰撞响应被应用于其它未移动的碰撞点。通过将第一碰撞点的位移从其初始位置到潜在静止位置的位移映射到此前由冲激响应组所创建的基函数组上,以确定该初始碰撞响应。基函数组的位移的映射创建一组在基底空间内定义位移的权重。
权重组然后被应用于与第一碰撞点相关联的冲激响应上。这为第一碰撞点产生一个初始碰撞响应。初始碰撞响应定义第一碰撞点周围的皮肤点的位移以响应第一碰撞点从其初始位置到潜在静止位置的位移。
初始碰撞响应被应用到周围的碰撞点以将这些碰撞点从其初始位置移开。应该指出的是,初始碰撞响应只被应用于这些碰撞点,就是说,只有与碰撞体接触或在其内部的点,即使与第一碰撞点相关联的皮肤冲激响应可以为附加的点定义位移也不行。
图14C示出了将示例的初始碰撞响应应用于一组周围的碰撞点。在此例中,以轮廓着重表示的第一碰撞点1420被从其初始位置1421移动到一个潜在位置,其结果就是将一个初始碰撞响应应用于周围碰撞点组。该初始碰撞响应是应用于由第一碰撞点1420所产生的周围碰撞点1422、1424、和1426的位移。该初始碰撞响应将碰撞点1422、1424、和1426从它们各自的初始位置移到图中所示的新的的潜在静止位置。如上所讨论的,处于碰撞体外部的皮肤点,即非碰撞皮肤点,在碰撞动画阶段的这一步中不被移动。
在步骤1320,周围碰撞点组被进一步地移动到各自的潜在静止位置。与步骤1310类似,每个周围碰撞点被从步骤1315所设定的位置移动到一个新的潜在静止位置。在一个实施例中,位于碰撞体的表面的最接近于每个周围碰撞点的位置是各自的潜在静止位置。在一个备选实施例中,潜在静止位置是一个处于一个碰撞点和最近的碰撞体表面点之间的位置。在另一个实施例中,一个比例因子被用于确定最近的碰撞体表面点和潜在静止位置之间的距离。在一个例子当中,一个周围碰撞点的潜在静止位置是在步骤1315中确定的周围碰撞点新位置和碰撞体的最近的表面点之间的距离的80%。
在周围碰撞点位移到它们各自的潜在静止位置后,在步骤1325为周围碰撞响应组确定碰撞响应组。类似于步骤1315,每个周围碰撞点从其初始位置到其各自的潜在静止位置的位移被映射到此前由冲激响应组所创建的基函数组上。每个位移映射创建一个与周围碰撞点中的一个相关联的基权重组。
一个周围碰撞点的基底权重被应用到相应的与周围碰撞点相关联的冲激响应上以创建一个第二碰撞响应。对每个周围碰撞点重复该过程以创建第二碰撞响应组。每个第二碰撞响应定义靠近周围碰撞点处的皮肤点的位移以响应周围碰撞点从其初始位置到其各自的潜在静止位置的位移。
第二碰撞响应被应用于所有碰撞点,包括在步骤1310中选中的第一碰撞点,以将这些碰撞点从它们的潜在静止位置移开。又一次地,第二碰撞响应只被应用于碰撞点,而非碰撞点在碰撞动画阶段的该步骤中不被移动。
将第二碰撞响应应用于碰撞点组之后,碰撞点组中的每个碰撞点将有新的位置。步骤1325为每个碰撞点确定从它们的初始位置的位移,并按照类似于如前所讨论过的方式创建新的碰撞响应组。新的碰撞响应组被应用于进一步位移碰撞点组。重复这一创建碰撞响应组并将该碰撞响应组应用于碰撞点组的过程,直到碰撞点组收敛于一个最终位移组。
图14D示出将第二碰撞响应组应用于碰撞点组。一组碰撞点,1428、1430、1432、和1434,具有表示作为第二碰撞响应组的结果的,自其潜在静止位置的位移的向量。每个向量表示由其它碰撞点的第二碰撞响应所产生的位移的和。例如,碰撞点1428的位移是来自碰撞点1430、1432、和1434的第二碰撞响应的和。
在步骤1330,最终碰撞响应被应用于非碰撞点。在步骤1325中确定的最终位移组是每个碰撞点从其初始位置到其最终位置的位移。步骤1330把每个位移从最终位移组映射到基函数组上以创建与每个碰撞点相关的基权重。每个碰撞点的基底权被应用于与之相关联的冲激响应从而为非碰撞点确定一个位移组。产生于每个碰撞点的位移被累加到一起以创建一个定义非碰撞点的位移的最终碰撞响应以响应碰撞。
图14E示出为碰撞点确定最终碰撞响应。以轮廓着重表示的碰撞点1436、1438、1440、和1442,被从它们的初始位置移动它们的最终位置,如虚线轮廓所示。基于碰撞点组的位移,非碰撞点1444、1446、1448、和1450按它们各自的向量所示地被从它们的初始位置移走。每个向量表示由碰撞点组1436、1438、1440、和1442所贡献的位移的和。
在本发明的一个实施例中,所有的碰撞响应在基底空间内被确定和累加。这改善了方法1300的效果。在该实施例中,在步骤1335中,最终碰撞响应从基底映射形式被构建回物理形式。来自碰撞的皮肤形变由最终碰撞响应的加权和以及基函数组来确定。
在一个备选实施例中,表示碰撞点的冲激响应的稀疏向量被用于确定最终碰撞响应。在另一个实施例中,碰撞体和碰撞点之间的关联可以由它们处在静止造型时的位置所确定。该实施例可用于不希望皮肤响应被移动太多以响应碰撞,例如,皮肤(或者内部碰撞屏蔽)和肌肉的碰撞的情况。
图14F示出在模型皮肤上构建的最终碰撞响应。在图14F的例子中,皮肤1452作为最终碰撞响应的结果而向内及围绕碰撞体1454凸起,表现出响应碰撞的逼真的形变。作为对比,也示出了初始的未形变角色表面的轮廓1456。
如上所讨论的,在碰撞动画阶段,直至确定最终碰撞响应,只有碰撞点被移动。这大大地限制了在确定碰撞响应时所需要被计算的点的数量,而且允许碰撞动画阶段实时地进行。这使动画制作人得以微调角色与其周围环境的互动。
在本发明的另一个实施例中,使角色形变以响应已设定造型的甲胄的方法可以与使其形变响应碰撞的方法结合起来。在此结合的实施例中,角色模型响应已设定造型的甲胄和碰撞而逼真地形变。在此实施例中,动画处理被分成两个阶段一个结合的准备阶段和一个结合的动画阶段。与其它实施例类似,在此实施例中,结合的准备阶段为一个角色模型进行一次。在结合的准备阶段,一个甲胄基组、一个相应的皮肤模式组、和一个帧权重组如方法400所述地被确定。另外,结合的准备阶段如方法1100所描述地确定皮肤冲激响应组和一个相关联的冲激基组。
结合的动画阶段使用甲胄基底组、皮肤模式组、帧权重组、皮肤冲激响应组、和冲激基组以创建一个根据来自动画制作人的规定而设定造型和形变的角色模型。图15示出根据本发明的一个实施例的用于制作结合的动画阶段中的角色的动画的方法的方框图。在步骤1505中,一个已设定的甲胄定义期望的最终已设定造型的角色的形体姿态。如上所讨论的,已设定造型的甲胄可以由动画制作人通过在关键帧间内插,或者程序化地使用一个或多个动画变量、函数、过程、或者算法从而手工地得到。另外,由于附在甲胄上的座标参考帧组跟着与它们相关的甲胄段从静止位置到已设定造型位置,所以定义座标参考帧组的位置和方向的向量组也在步骤1505中确定。
在步骤1510,为座标参考帧确定皮肤造型响应组。每个皮肤造型响应以类似于方法900中所描述的方式而被确定。通常,造型向量和基函数组在座标参考帧的已设定造型位置被变换到由座标参考帧所定义的并列空间中。变换后的造型向量被映射到已变换的甲胄基函数组上以创建基函数权组。该基函数权重组被应用于各个座标参考帧中的皮肤模式以为座标参考帧确定一个皮肤造型响应。为每个座标参考帧重复该过程以创建皮肤造型响应组。
在步骤1515,由皮肤造型响应组所确定的复合皮肤造型响应被确定。类似于之前讨论的方法900,来自每个座标参考帧的皮肤造型响应根据相关联的帧权重被结合以纠正非期望的剪切效应。通常,皮肤造型响应组被从与它们相关的座标参考帧变换为全局参考帧并且根据帧权重组被累加。该步骤的结果是一个复合皮肤响应。
在步骤1520,点约束被识别。点约束是由于角色模型与其自己或者外部物体的碰撞所造成的移动的点。动画制作者可以采用在每个帧内放置物体使之与角色模型相接触的方法创建碰撞,其可以是手动的也可以是由一组关键帧或一个或多个动画变量所定义的动作的结果。点约束也可以产生自动画制作人将角色模型的一个点附到另一个物体上,或者通过手动地迫使一个皮肤点进入一个新的位置。在一个实施例中,步骤1520通过在角色模型的皮肤上的每个点周围定义一个半径来识别潜在碰撞点。在一个备选实施例中,一个边界框被用于识别潜在碰撞点。步骤1520识别被用于确定来自一个碰撞的角色模型的形变碰撞点组。
在步骤1525,碰撞点组被评估以确定皮肤碰撞响应。步骤1525的一个实施例根据如上所讨论的方法1300评估碰撞点组。通常,为一个第一碰撞点确定一个第一位移。第一位移被映射到冲激基函数组上以确定来自皮肤冲激响应的初始碰撞响应。该初始碰撞响应移动周围的碰撞点。周围碰撞点的位移被应用于它们各自的皮肤冲激响应以进一步移动碰撞点组。碰撞点组的进一步位移创建后续的碰撞响应,其被反复地进行直至碰撞点收敛到它们的最终位置。碰撞点组的最终位置定义一个皮肤碰撞响应,该皮肤碰撞响应随后被应用于非碰撞点组。
在步骤1530,角色模型由复合皮肤造型响应和皮肤碰撞响应来构建。在一个实施例中,复合皮肤造型响应和皮肤碰撞响应均被以它们的基映射形式来存储和处理。在此实施例中,复合皮肤响应的加权和及甲胄基函数被加至皮肤碰撞响应的加权和及刺激基函数组。结果是一个响应于甲胄造型和碰撞而形变的角色模型。
为每个帧重复方法1500的步骤以产生一个动画序列。由于皮肤模式响应和皮肤冲激响应在结合的准备阶段被预计算,结合的动画阶段可以实时地或者近乎实时地进行。这使得动画制作人可以有效地微调动画并最大化动画的戏剧效果。另外,由于角色模型的结合的皮肤响应逼真地形变以响应甲胄造型和碰撞,动画制作人在动画处理过程中看到角色模型的最终外形,而不必等着看动画的最终效果。
此外,本发明确定一种逼真的,直接来自己设定的造型的角色形变,其不需要创建物理模拟技术所要求的基本的骨骼和肌肉结构,或运动变换技术所用的复杂的甲胄权。相比现有的动画技术,这减少了创建角色模型所需的时间和精力。
应该指出的是一旦使用一个或多个上述的实施例创建了已设定造型的或者变形的模型,任何渲染技术,例如射线轨迹或者行扫描渲染,可以结合光线、阴影、像素映射、以及任何其它图像处理信息,由该模型创建最终的图片或者帧。
在阅读了所附的文档后,另一个实施例对于相关技术领域内的普通技术人员是可以被想像的。在其它实施例中,以上所揭示的发明可以方便地进行结合或者亚结合。流程图的结构的方框图是按照便于理解的原则来分类的。然而,可以理解的是,在本发明的备选实施例中,方框的结合、新方框的加入、方框的重新安排、以及类似的情况是可以预期的。
因此,说明书和附图应该被视为一种描述而并非是限制意义的。显然地,可以在不背离本发明在权利要求中所提出的更广范围的精神及范围的前提下做各种修改和变化。
权利要求
1.一种创建已设定造型的角色模型的方法,该方法包括从一组采样角色位置来确定基组;为角色模型确定皮肤响应组,其中每个皮肤响应与基组中的一个基相对应;将第一角色造型映射到基组以确定在第一参考帧中的基权重组;将基权重组应用于皮肤响应组上以创建第一皮肤造型响应;和从第一皮肤造型响应和基组来构建已设定造型的角色模型。
2.如权利要求1所述的方法,其特征在于,还包括为第二参考帧重复映射角色造型以及应用基权重组的步骤以创建第二皮肤造型响应;和从第一皮肤造型响应、第二皮肤造型响应、和基组来构建已设定造型的角色模型。
3.如权利要求2所述的方法,其特征在于,所述构建包括根据一组与第一和第二参考帧相关联的帧权重组来结合第一和第二皮肤造型响应。
4.如权利要求3所述的方法,其特征在于,还包括通过将初始帧权重值组在角色模型内扩散以确定帧权重组。
5.如权利要求3所述的方法,其特征在于,还包括通过将皮肤响应组与相应的非线性解组相比较以确定帧权重组。
6.如权利要求3所述的方法,其特征在于,还包括把帧权重组的至少一部分设置为接收自用户的值。
7.如权利要求1所述的方法,其特征在于,还包括为第二角色造型重复映射角色造型、应用基权重组以及映射皮肤响应组的步骤以创建第二已设定造型角色模型。
8.如权利要求1所述的方法,其特征在于,其中采样角色位置组包括角色造型的训练组。
9.如权利要求1所述的方法,其特征在于,其中采样角色位置组包括至少一个动态创建的造型。
10.如权利要求1所述的方法,其特征在于,其中甲胄被用于定义采样角色位置组和第一角色造型。
11.如权利要求1所述的方法,其特征在于,第一角色造型是至少部分地根据动画变量所定义的。
12.如权利要求1所述的方法,其特征在于,其中确定皮肤响应组包括对基组的每个基应用一组从基组中基到角色模型的一部分的位移,和在整个角色模型上最小化位移的函数。
13.如权利要求12所述的方法,其特征在于,其中所述函数是一材料能量函数。
14.如权利要求12所述的方法,其特征在于,还包括将角色模型离散化成采样点的三维域、将一组位移应用到采样点的一部分、以及在每个与角色模型相关联的采样点上使函数最小化。
15.如权利要求14所述的方法,其特征在于,其中所述域是迪卡尔网格。
16.如权利要求14所述的方法,其特征在于,其中所述域是一组四边形元素的顶点。
17.如权利要求1所述的方法,其特征在于,其中皮肤响应组的每一个响应都被定义为基组的元素的线性组合。
18.一种用于创建已设定造型的角色模型的方法,包括将角色造型变换为与角色模型相关联的参考帧组;为每个参考帧创建角色模型的皮肤造型响应以响应角色造型;和从每个参考帧的皮肤造型响应构建角色模型的复合皮肤响应。
19.如权利要求18所述的方法,其特征在于,其中所述构建复合皮肤响应包括将第一参考帧的皮肤响应的一部分与第二参考帧的皮肤响应的一部分相结合。
20.如权利要求19所述的方法,其特征在于,其中第一参考帧的皮肤响应的一部分和第二参考帧的皮肤响应的一部分与角色模型的两个至少部分地交迭的区域相对应。
21.如权利要求20所述的方法,其特征在于,其中第一参考帧的皮肤响应的一部分和第二参考帧的皮肤响应的一部分与角色模型的两个相同区域相对应。
22.如权利要求19所述的方法,其特征在于,其中第一参考帧的皮肤响应的一部分和第二参考帧的皮肤响应的一部分与角色模型的两个不同区域相对应。
23.如权利要求19所述的方法,其特征在于,其中第一参考帧的皮肤响应的一部分和第二参考帧的皮肤响应的一部分根据定义第一和第二参考帧的响应对复合皮肤响应的影响的帧权重组而被结合。
24.如权利要求18所述的方法,其特征在于,还包括确定与参考帧组相关联的帧权重组,该帧权重组定义了每个参考帧对复合皮肤响应的影响。
25.如权利要求24所述的方法,其特征在于,其中所述确定帧权重组包括使初始帧权重值组在角色模型中扩散。
26.如权利要求25所述的方法,其特征在于,其中所述扩散包括将角色模型离散化成三维采样点域;将初始帧权重值赋给邻近每个参考帧的原点的采样点;和从初始帧权重值的扩散确定多个采样点组的帧权重值组。
27.如权利要求24所述的方法,其特征在于,还包括通过将皮肤响应组和相应的非线性解相比较以确定帧权重组。
28.如权利要求24所述的方法,其特征在于,还包括把帧权重组的至少一部分设置为接收自用户的值。。
29.一种具有多个适用于指挥信息处理装置执行一种操作的指令的信息存储介质,其中所述操作包括以下步骤从一组采样角色位置确定基组;为角色模型确定皮肤响应组,其中每个皮肤响应与基组中的一个相对应;将第一角色造型映射到基组以确定在第一参考帧内的基权重组;将基权重组应用于皮肤响应组以创建第一皮肤造型响应;从第一皮肤造型响应和基组构建已设定造型的角色模型。
30.如权利要求29所述的信息存储介质,其特征在于,还包括为第二参考帧重复映射角色造型和应用基权重组的步骤以创建第二皮肤造型响应;和由第一皮肤造型响应、第二皮肤造型响应、和基组来构建已设定造型的角色模型。
31.如权利要求29所述的信息存储介质,其特征在于,所述第一角色造型是至少部分地根据动画变量而被定义。
32.如权利要求29所述的信息存储介质,其特征在于,其中确定皮肤响应组包括为基组的每个基应用一组从基组中的基到角色模型的一部分的位移,以及在整个角色模型上最小化位移的函数。
33.一种具有多个适用于指挥信息处理装置执行一种操作的指令的信息存储介质,其中所述操作包括以下步骤将角色造型变换为与角色模型相关联的参考帧组;对每个参考帧创建角色模型的皮肤造型响应以响应角色造型;和从每个参考帧的皮肤造型响应构建复合皮肤响应。
34.如权利要求33所述的信息存储介质,其特征在于,所述构建复合皮肤响应包括将第一参考帧的皮肤响应的一部分和第二参考帧的皮肤响应的一部分相结合。
35.如权利要求34所述的信息存储介质,其特征在于,所述第一参考帧的皮肤响应的一部分和第二参考帧的皮肤响应的一部分根据定义第一和第二参考帧的响应对复合皮肤响应的影响的帧权重组而被结合。
36.如权利要求35所述的信息存储介质,其特征在于,所述操作还包括确定与参考帧组相关联的帧权重组的步骤,该帧权重组定义了每个参考帧对复合皮肤响应的影响。
37.一种包括具有处于第一造型的角色模型的第一图形和具有处于第二造型的角色模型的后续图形的有形媒体,其中处于第二造型的角色模型的外观独立于处于第一造型的角色模型的外观,并且处于第一和第二造型的角色是根据如权利要求1所述的方法所创建的。
38.一种包括具有处于第一造型的角色模型的第一图形和具有处于第二造型的角色模型的后续图形的有形媒体,其中处于第二造型的角色模型的外观独立于处于第一造型的角色模型的外观,并且处于第一和第二造型的角色是根据如权利要求18所述的方法所创建的。
全文摘要
一种用于制作软体角色(图9)的动画的方法,具有处在动画阶段(310)之前的准备阶段(305)。在准备阶段,对一组基造型确定角色模型的皮肤形变。来自设定造型所致的皮肤形变借助一组基造型被紧凑地表达。在动画阶段,基造型组和皮肤模式响应组被用于创建最终已设定造型的角色。期望的角色造型被映射到一组基上以确定基权重组。基权重组被应用于皮肤响应组以创建皮肤造型响应,该皮肤造型响应被映射到基组上以创建已设定的角色模型。
文档编号G06T15/70GK1788282SQ03826436
公开日2006年6月14日 申请日期2003年8月22日 优先权日2003年5月14日
发明者J·安德森, A·伍德巴瑞 申请人:皮克萨公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1