《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 一种卡通动画中人物头发运动生成技术研究
一种卡通动画中人物头发运动生成技术研究
2014年微型机与应用第22期
欧训勇
(琼州学院 电子信息工程学院,海南 三亚 572022)
摘要: 介绍了一种新的卡通动画中人物头发运动的混合技术,使动画师们能方便地创作出有吸引力和可控性的头发运动效果,而不需要手工对头发运动表现过程进行逐帧绘制,仅设置好所需的一些关键帧画面。该技术方法演示如何根据给出的手绘卡通人物角色动作配以相应的头发运动效果。这种方法的新颖之处是
Abstract:
Key words :

  摘  要: 介绍了一种新的卡通动画中人物头发运动的混合技术,使动画师们能方便地创作出有吸引力和可控性的头发运动效果,而不需要手工对头发运动表现过程进行逐帧绘制,仅设置好所需的一些关键帧画面。该技术方法演示如何根据给出的手绘卡通人物角色动作配以相应的头发运动效果。这种方法的新颖之处是,既不是简单地插入关键帧来获得头发运动效果,也不是通过物理模拟的方式来生成头发飘逸的动画,而是从动画师预先准备好的少量的作为关键帧草图的头发运动效果,建立物理模拟动画数据库,根据此数据库中头发的运动效果来创建出特定头发运动动画。此方法生成的头发动画分两个阶段完成,首先是在数据库中搜索对应的运动效果画面,然后顺利连接;其次数据库序列的关键帧之间的过渡帧由在动画中运用转移函数生成的插值补充,以实现流畅的头发飘逸动画。

  关键词手绘图;卡通动画;运动插值

0 引言

  在手绘角色动画中表现头发运动的画面往往存在着不一致性。例如,从图1的效果中不难看出,头发有可能在绺数上是不一致的。由此,头发的运动效果在手绘动画中是一项有难度的工作。事实上,卡通角色头发运动效果在计算机图形学中实现是很困难的。这是因为所有的头发的属性不可能与摄像机位置一致。尽管物理运动方程可以用来获得正确的身体运动,但它看起来并不总是运动着的。由于手绘卡通动画中头发的运动有时带有一定的作用,动画师可以寻找角色本身的形象去表现发型外观。这意味着相应关键帧中头发造型特征(如形状、数量等)实际上不可能有一致的形象。尽管动画各帧画面有一定差异,但其动画效果还是能令人接受的。利用计算机图形技术来创建卡通角色头发动画这是最难的部分,也是为什么一直以来卡通头发动画都是手绘效果。这需要投入大量的人力劳动。例如动画片幽灵公主中,有一段风中场景,5 min的头发飘逸动画,却需要动画师们花费一个月的时间来完成制作。

  本文提出一种混合技术方法,利用计算机来生成人物头发飘逸动画效果,减少动画师们对头发动画所耗费的时间,节约动画制作成本。

1 相关研究分析

  前人对卡通发型生成研究集中以表现发型,考虑发型构成的每一缕发丝的形状和动力学现象。参考文献[1]使用一个简化的悬臂梁模型的发型,并利用一维角动量射影表现发丝动画。参考文献[2]中使用稀疏的头发特征表现动画效果,以减少计算时间。参考文献[3]提出了一种巧妙的方法,用于创建多分辨率的头发模型(MHM)系统,该系统是根据相邻的头发缕数的观察角度,形成多层次的团簇。参考文献[4]提出了一种结合几何动力学的卡通头发生成方法。该方法使用对样本的非线性插值,避免了几何模型变换中出现不自然现象,使生成的头发运动更符合卡通特性;同时用户可以指定控制点和控制点的路径,使对头发可控性强,可以取得风格化的效果。

  上述的研究工作取得了一定的成果,但是没有在效率和效果上达到统一,这主要是由于卡通头发运动缺乏发丝柔顺的运动物理特性,同时运动过程也表现出不一致性。本文提出的方法是基于关键帧插值和物理仿真的混合技术,将手绘定型与物理动力学仿真相结合的方法实现了效率和效果的统一。利用输入一组手绘的发型造型关键帧草图,这些草图都描述表现卡通头发运动效果的最终形态,再通过计算插值和物理仿真来最终生成卡通头发运动的动画效果。

  该方法关键的步骤是事先创建一个用于描述头发运动的数据库。库中详尽地记录有卡通发型包含的股数和每股头发的运动节点数,所确定的头发股数和节点不可再分,这样,就建立了一个“指导型的头发运动数据库”,并且设定有头发冲击飘荡的运动力,可用于计算机计算生成一系列的匹配头发草图。即构建一个为每种头发运动自定义设计的头发动画数据库。

2 发型数据构造

001.jpg

  对头发动画仿真前需要准备各种发型数据,首先需要准备高质量的二维手绘卡通角色图像(如图1所示)和人物发型的草图(如图2所示)。这些图像都是由技术熟练的动画师们所绘制的,用于作为原始输入的图像。由技术熟练的动画师所绘制的图像仅是其中一步,同时还需要准备网线显示的三维人物的头部模型,通过对该网线模型赋予纹理贴图就得到一个三维头部图像。这一步骤由用户或动画师处理。

002.jpg

  2.1 设置头发缕数

  在动画师手工绘制的高质量二维图像中,通过手工方式确定坐标位置。再由坐标位置,做好图像调整以提取适于角色动画的头发模型,并创建一个三维稀疏的头发模型。该头发模型的边线构成头发的形状和中心线,以控制头发运动(如图3所示)。这些曲线由Catmull-Rom样条表示。中心线与边界线之间有约束虚位移。

003.jpg

  2.2 构造三维发型数据

  要构造一个为匹配动画角色的初状三维模型的头发,可以使用任意一款三维图形处理工具,将头部模型和毛发同时显示。3Dmax和maya都能胜任此事。此外把头发草图量化,并将这些数据和数据库中的头发运动数据进行匹配(如图4所示)。草图发丝上的点是为了头发的交互运动而绘制的。所绘制的数据最初是二维的。

004.jpg

3 创建头发动画

  利用从草图派生的角度和由投影来自数据库序列上的草图中定义的图像平面上的三维头发数据而获得的数据之间的相似度,通过应用变形功能的角度之间的差异获得有吸引力的头发造型。此外,插值补充各序列之间内容,以保持它们之间的平滑过渡。

  3.1 头发运动数据库设计

  在风吹或头部运动中产生的力作用于头发,设计好受力大小后,使用Featherstone多体链动力学算法进行模拟仿真得到发丝运动的动画效果,受力运动仅控制中心线[5-6]。应用该算法指明三维点的速度矢量,生成每一个过渡帧画面。

  编译数据库已成为处理文集或散乱数据的常用方法。本文还处理了发丝控制点数据作为数据库。此方法的一个突出点为:这个数据库是由动画师为特定目标动画而定制设计的。数据库序列中的一个单元大约在5帧长度。为减少数据库的大小,数据库中发丝运动数据都可以由动画师来设计,使头发目标运动效果得以提取。动画师甚至可以定义需要获得这不符合一般的物理规律运动的具体受力大小。该数据库的大小取决于速度和质量之间的折衷。在模拟中使用的数据库通常在5 MB以内(这取决于角色造型头发的数量)。作用的力由一个冲击函数产生。根据动画师的需求来设计勾勒接近头发的关键帧,设定草图头发运动的指标。例如,弯曲一根头发的力度,动画制作者应该只将力施加到发束的中间部分。为了使其中发尖移动,动画制作者应该定义力仅施加到尖端(如图5所示)的运动。

005.jpg

  3.2 匹配过程

  本文方法需要动画师用自己的直觉去决定从头发数据库序列粗糙的毛发三维位置点的摄像机位置,然后投射到他的草图图像平面,从而成为二维的。然后,匹配二维图像中平面的x轴和y轴,再比较发段之间的角度(如图6所示)。更具体地讲,测量取得的数据之间的角度差,从粗毛发的草图和从运动数据库毛发序列投影到图像平面的数据,然后,用式(1)比较这些数据。从发根到边缘。

006.jpg

  1.png

  其中,θ是草图数据发丝的角度,φ是从三维图形投影到草图表面数据所成的角,i是从发根开始累积发丝拐角个数变量。在式(1)中,各相减的结果必须小于给定阈值th。如果差值高,将不选择数据库中的数据。由此,从库中选取最大相似度的草图。

  3.3 角度变形函数

  对散乱插值采用径向基函数方法(即RBF),它的基本表达式为:

  2.png

007.jpg

  本插值公式是数据点距离的非线性函数的线性组合,使用于在匹配处理过程中数据库的帧序列的插值补充。为处理头发形状使它们更接近于毛发草图,本文使用了径向基函数插值方法。通常情况下,仅通过物理方程仿真模拟是不可能得到令人印象深刻和夸张的发型的。起初,在使用径向基函数插值补充由三维投影形成的发型顶点位置在草图图像平面上的差异。然而此做法却让毛发效果变得笨拙冗长,显示不自然,如图7(b)所示。最后,对径向基函数进行改良,从发丝角度上进行插值补充过渡差异[7]。使用的公式如下:

  3.png

  其中,i表示一缕发丝中链接的数量,N是链接的总数,k表示数据库中数据序列的数量,Wi的值是通过φ减去θ而得的(是个绝对值),为前一次从数据库序列中选择相应数据计算所得。此后Wi值将下一个发根到发梢末端重复此步骤计算,并调整数据库序列(如图8所示)。

  为了实现这个插值过程,可以保留头发的长度。一旦在匹配数据库序列中的第一帧和最后一帧中发丝角度差值得以计算出来,就执行该序列中的所有帧的插值。此做法被重复使用于所有头发的控制点,从而将所有发丝缕数插值补充完善,如图7(c)所示。此处理过程的第二个优点是,保留头发的长度并减少了从二维到一维计算的维数。

  3.4 头发运动过程插值

  在两个邻近的头发序列帧中进行插值补充以使头发运动效果流畅。由于使用驱动力来构建了头发运动数据库,动画效果在没有插值补充的情况下是不可能表现顺畅的。使用如下公式进行插值补充。

  4.png

  其中,c是一个可变参数,如果c值很大,插值过程近似于线性插值;如果c值很小,插值过程成为阶跃函数插值。t表示插值时间间隔,此值越小,插值补充动画效果就越平滑。此公式的优点是动画师可以通过控制c参数,决定插值补充产生的过渡效果是要平滑过渡还是阶跃变化。但是,大量使用平滑效果更加接近现实头发运动效果,与卡通动画追求的效果会有偏差。通过c参数,动画师可以选择最佳数值以使动画效果达到所设计的目的。

4 结论

  使用本文的方法,通过输入两种类型图形,已经成功地创建出头发运动动画。对于每个动画,所有动画都以每秒24帧的标准速率播放。它清楚地展现了该方法的有效性,使动画师们利用计算机图形交互设计技术生成卡通头发动画的效果接近手工绘画效果。

  该方法还存在一些不足:(1)只能用于头发簇比较少的模型,对于头发簇比较多的模型,动画过程计算量大,效果不是很理想;(2)长发模型的所有控制点都在一个平面上,所以生成的模型也在同一平面上,限制了模型形状。

  参考文献

  [1] ANJYO K, USAMI Y, KURIHARA T. A simple method for extracting the natural beauty of hair[C]. Proceedings of SIGGRAPH 92,1992:111-120.

  [2] ROSENBLUM R E, CARLSON W E, TRIPP E. Simulating the structure and dynamics of human hair:Modeling, rendering and animation[J]. The Journal of Visualization and Computer Animation, 1991:141-148.

  [3] KIM T Y, NEUMANN U. Interactive multiresolution hair modeling and editing[C]. Proceedings of SIGGRAPH 2002, San Antonio, 2002:620-629.

  [4] 任阳春,赵洪德,耿卫东.结合几何动力学卡通头发生成[J].计算机应用研究,2010(6):2384-2390.

  [5] 白争锋,赵阳,田浩.柔性多体系统碰撞动力学研究[J].振动与冲击,2009(6):75-78.

  [6] LITWINOWICZ P, WILLIAMS L. Animating imageswith drawings[C]. SIGGRAPH 94, Orlando, FL,1994:409-412.

  [7] 魏义坤,杨威,刘静.关于径向基函数插值方法及其应用[J].沈阳大学学报,2008(2):7-9.


此内容为AET网站原创,未经授权禁止转载。