数字皮影戏骨骼动画技术的研究与应用

2013-11-30 05:01蔡建平
计算机工程与设计 2013年1期
关键词:皮影运动学骨骼

列 夫,蔡建平

(北京工业大学 软件学院,北京100124)

0 引 言

数字皮影骨骼动画技术是指在传统骨骼动画基础上,通过分析皮影戏表演及皮影角色运动,进而提出一套适用于数字皮影动画制作的骨骼动画技术,使得人们可以借此来创作皮影动画作品或在虚拟空间中进行皮影戏表演。当前,骨骼动画技术以及运动控制的研究取得了很大进展,也产生了很多实用的技术。在骨骼动画的研究中,动画控制的研究与应用是一个十分重要的方向,其主要有正运动学、逆运动学、动力学等。

本文主要探讨了数字皮影动画的骨骼构建和逆动力学在二维动画中的主要算法。通过对它们进行归纳、比较和实验分析,提出一种数字皮影动画中的二维逆动力学解决方法。该技术的研究有助于提高数字皮影动画的真实性以及降低皮影动画制作难度。

1 数字皮影骨骼类型划分

在传统皮影戏表演中,皮影角色大致分为人物、四足动物、蛇形动物以及骑乘人物这几类,由于皮影角色类型复杂,不利于动画制作人员批次量、便捷的完成皮影建模。因此有必要对各个皮影角色类型进行总结、归纳,从而制定一套完整的皮影骨骼插件。

由于皮影的逆运动学特性,因此本章骨骼划分工作便基于逆运动学末端点数量进行换分。

(1)三杆型皮影骨骼:该类型骨骼最大特点是整体运动靠颈部的支撑点带动,手部细节动画则由双手末端点即IK末端效应器控制,是典型的两段式骨骼动画

(2)五杆型皮影骨骼:该类型骨骼大体上与三杆型皮影骨骼相同,唯一的区别在于该类型皮影的腿部有膝关节,因此腿部动画也构成了逆运动学控制。该类型骨骼一共有5个控制点,即双手、双腿、颈部,其中颈部与三杆型相同,负责整体运动。

(3)手持道具型皮影骨骼:该类型的骨骼最大点为双手固定在一个道具上(如:长矛、棍棒等)。通过对道具的控制即可实现对双手的连带运动效果,而双手的运动仍旧是逆运动学,只是末端点转移到道具上。

(4)条型骨骼:条型骨骼的特点在于该类型皮影角色通常都是蛇、龙、昆虫等生物。主躯干骨骼贯穿整个模型,由多链IK控制,一般有首、尾、中段3个末端控制点。

(5)四足动物骨骼:在传统皮影表演中四足动物类型的角色通常不具末端控制器,只有整体位移的属性,因此四足动物的骨骼相对简单,一般只要考虑头部保留一个骨骼即可,负责头部的旋转。

皮影骨骼类型划分见表1。

?

2 数字皮影骨骼的构建

2.1 皮影模型分析

为了更好的模拟出皮影运动效果,首先对传统皮影戏角色的运动进行分析。传统皮影戏角色通常由以下几个部位连接而成组成,其中包括:头部、胸部、腹部、大腿、小腿、大臂、小臂及手。皮影的控制一般分为两种,三杆控制及五杆控制。其中三杆控制的特点是每个皮影角色都有三根控制杆,主要的控制杆位于皮影角色的颈部,用来控制皮影角色的整体位移。其他两根控制杆分别固定在皮影角色的腕部,控制皮影的上肢运动,其显著特点为逆动力学控制。皮影角色腿部不设置控制杆,在皮影角色的运动中靠上半身的位移连带产生动作。五杆控制的特点是皮影角色具有小腿部分及膝关节。两支控制杆分别控制小腿末端,以实现特定的步行动作[1]。

通过对皮影角色的观察,我们可以发现传统皮影角色的构建特点,即构造简单,同时各个部位由单点连接,具有极大的灵活性。由于皮影的运动具有逆运动学的特点,若要在数字平台上模拟数字皮影角色,必须对皮影角色的结构进行一定程度的简化及抽象。同时,针对应用的实际需要和表演需求,简化骨骼模型,这样就可以大幅提高数字皮影动画的易用性及控制性,更加便于实际使用。

2.2 数字皮影骨骼自由度

在骨骼动画中关节不但是连接皮影各部分的重要节点,而且也带动皮影角色各部位运动,起到连接及带动作用。在骨骼动画中关节通常被模拟为球铰,因此其活动范围没有限制[2]。但皮影部分关节实际活动范围严格意义仅仅是在二维空间,因此这里要引入自由度概念加以说明。

自由度是关于旋转的属性,而且自由度与维度密切相关。举例来说,一个自由度的关节(OneDOF),例如膝盖关节,其只能前后弯曲,只有一个旋转方向,这种旋转运动可视为绕X轴的转动;两个自由度的关节(TwoDOF),例如人的手腕,两个自由度是摆动自由度。肘关节的两个旋转自由度的其中一个是自转,另一个是绕X轴的摆动自由度。所以两自由度的关节有两种形式;3个自由度的关节(ThreeDOF),例如肩关节,铰链模拟通常模拟3个自由度的关节,但是转动仍然会有范围的制约[3]。

在实际的皮影表演中,皮影角色运动通常是以二维的形式展现给观众,但是在实际幕后的操控中,皮影角色会在相对于幕布的方向上发生位移,进而产生模糊、投影以及形变效果。针对这一特点,我们对数字皮影各个骨骼的自由度做以下分析:

头部:在传统皮影表演中头部会有点头及后视的效果,因此头部骨骼定义为两个自由度

手臂:传统皮影戏中手臂运动通常为单轴旋转,因此定义为一个自由度

腹部:在实际表演中皮影角色腹部没有控制杆,由上肢连带运动,但在激烈打斗的表演中会产生微小的Z轴旋转,因此定义为两个自由度

腿部:与手臂运动相同,可定义为一个自由度

以上分析如表2所示

表2 皮影骨骼编号

2.3 数字皮影骨骼抽象模型

在骨骼动画技术中,模型被抽象描述为骨骼模型,人们通过对骨骼的控制进而带动模型运动[4]。针对这一技术特点,我们将数字皮影角色模型抽象为骨骼模型,将皮影的各个部分转变为对应骨骼,并将骨骼关节抽象为有向线段,连接形成数字皮影骨骼结构的表达方法。为了更加直观的描述骨骼模型,需要对骨骼进行一个编号处理。

2.4 数字皮影骨骼构建

本文主要通过分析数字皮影的运动学特性,结合二维逆运动学,在数字平台上展开数字皮影运动控制技术的研究。因此,涉及到三杆型皮影的腿部自由摆动效果不做研究,保留其骨骼用于控制动画,腿部特殊动作可由动画特效及物理引擎实现。

由于数字皮影的上肢及下肢关节在骨骼运动中起到至关重要的作用,因而需要生成大臂、小臂以及下肢的腿部骨骼。在皮影重心附近,保留控制腿部运动的腿骨部分,并将皮影角色的根骨骼定义在腹部处。在颈部与头部的结合处生成一根颈部骨骼,向下连接胸部骨骼,用以区分上肢旋转及头部旋转运动。其余各部位均抽象成对应骨骼,用以动画控制。最后得到的皮影骨骼模型共包括17个骨骼,如图1所示。相应的关节及骨骼定义如表2所示。

图1 骨骼结构树

通过以上分析研究,皮影抽象骨骼模型基本构架已经有了大体轮廓,进一步工作就是确定各个骨骼之间的关系。在骨骼动画技术中,相邻骨骼之间有上下级关系,即父子关系[5]。在正运动学中上级骨骼运动带动下级骨骼运动,下级骨骼运动不会带动上级骨骼运动。而在逆运动学中,则情况相反[6]。在传统类双足动物骨骼构建的办法中,一般将骨骼跟节点设置在胯骨部位,以控制模型的整体运动[7]。然而在传统皮影戏中,整体控制杆位于皮影胸部位置,重心靠上以便更好的带来表演效果。在数字皮影动画中,由于不考虑皮影整体的物理仿真,重心位置便显得不是十分重要,因此我们将根节点设置在腹部位置。从根节点向上一直到头部骨骼,各骨骼依次为子骨骼。从胸部到手部也为同样道理。沿根节点向下则是腿部的父子关系。

通过以上内容的分析,本文在Maya动画平台上通过内置MEL语言搭建皮影骨骼。数字皮影骨骼模型将皮影结构抽象成点和线,骨骼结构表示为点、线之间的连接关系,因而十分直观方便。本文研究的数字皮影骨骼模型如图2所示。

图2 数字皮影骨骼

3 二维IK解决办法

本文二维IK解决办法是在传统的CCD(cyclic-coordinate descent)算法基础上,针对二维骨骼动画提出的一种解决二维IK问题改进办法,它的基本思想是由末端骨骼开始,通过反复迭代的方法,每个骨骼依次对目标点做逼近式旋转,进而末端效应器不断接近目标点,最终达到目标位置。

3.1 算法基本思想

Cyclic-Coordinate Descent算法是一个带有启发式的迭代搜索算法,通过每次改变一个参数的数值逐步使关节位移、旋转进而更加接近目标,每次的迭代过程会涉及末端骨骼至根部骨骼即对末端至根部进行一次遍历。每个骨骼关节参数立即被修改为最小化目标函数[8]。CCD算法的核心在于将多链骨骼问题转化为单个骨骼求解问题进而简化了骨骼计算的复杂程度,而求出每个目标函数最小化问题容易解决,可以通过解析法逐一解决,因此每一步的迭代相当快捷[9]。当求得各个骨骼关节的参数后,将其代入正运动学方程求得末端效器和每个关节的位置[10]。

然而CCD算法在面对二维IK问题时并不能很好的解决问题。首先,数字皮影动画为二维动画,传统CCD算法中存在无解情况以及误差。其次,针对数字皮影动画的实时需求,传统CCD算法有计算资源浪费的问题,三维骨骼动画计算产生无用计算消耗。

针对这两个问题,本文提出在传统CCD算法思想的基础上。提出一种适用于数字皮影骨骼动画运动的二维IK解决方法,减少误差并解决计算资源浪费问题。本解决办法的基本思想是:

(1)在每一次的迭代解析计算中只求解一个自由度的旋转角度。通过点乘原理求出骨骼旋转角度的余弦值,进而得出骨骼旋转角度;

(2)通过叉乘原理求出骨骼的旋转方向。

3.2 算法流程

3.2.1 求出各骨骼的旋转角度

在T点(目标)与J点(骨骼关节)间建立一条最优参考线,骨骼B1以关节点J为圆心旋转,使得E(末端效应器)与最优参考线相交,得出旋转角度α,如图3所示。在T点(目标)与J点(骨骼关节)间建立一条新的最优参考线,骨骼B2以J为圆心旋转,B2骨骼带动B1旋转,使E与参考线相交得出B2骨骼旋转角度,如图4所示。以此类推对每个骨骼旋转,以得出α值。

通过点乘理论我们可知

(e-j)·(t-j)=|e-t|·|t-j|cosα其中,e为末端效应器E的位置,j为骨骼关节点J的位置,t为目标点T的位置。

由此可得

3.2.2 求出各骨骼的旋转方向

上述步骤可有效求得余弦值,进而得出骨骼的旋转角度,但余弦值不能提供骨骼的旋转方向,即逆时针或顺时针的问题。因此下一步的主要工作是如何解决骨骼旋转方向的问题。

由叉乘原理,我们可知

本文研究基于右手法则,其中n为垂直与A、B的单位向量。θ为向量A与向量B间的夹角,其取值范围为[0,π],如图5所示。

图5 A向量与B向量的夹角

若我们将二维向量理解为xy平面上的三维向量,则通过叉乘理论我们可得出一个指向于z轴的三维向量

从叉乘的几何解释可知珤A×珝B=|A|×|B|sinθn中的单位向量n在z轴上非正即负

由此,nz的值定义为1或-1,x、y坐标上的值为零。

通过以上公式,针对坐标旋转方向我们提取出z轴部分进行单独讨论

基于右手法则,当x轴指向右时y轴指向上方,z轴指向前方。通过该原理,我们可根据nz的值来判断骨骼按顺时针或逆时针来旋转。当nz在z轴上为负时,骨骼按顺时针旋转;当nz在z轴上为正时,骨骼按逆时针旋转。用数学描述为当nz=-1时顺时针;当nz=1时逆时针。

由于θ的取值为[0,π],当nz=1时sin(θ)的值只能为正,即骨骼按逆时针旋转。而当nz=-1时有

sin(θ)值为负,即骨骼按顺时针旋转。

由此我们引入一个新的参数β,为向量A与向量B的夹角,其取值范围为[-π,π],由此可得

AxBy-AyBx=|A|×|B|sinθnz=|A|×|B|sinβ

将图2中的数值带入方程可得

当sinβ为正时骨骼按逆时针旋转,当sinβ为负时顺时针旋转。

4 实验与分析

实验1:本文在Maya平台上给出一个例子测试本文的算法效果,其中骨骼构建部分通过调用Maya API完成数字皮影骨骼插件。二维IK解决办法则由MEL语言在Maya平台实现。这个例子以实现甩臂的逆运动学求解为例,如图6所示,通过插件实现数字皮影角色骨骼和IK控制器的位置并给予旋转及位移变量。通过本本研究办法对数字皮影骨骼逆向运动的求解,输出一段逼真的动画。该实验证明,本方法能真实的模拟皮影动画,满足动画制作的需求。

图6 实验-甩臂

实验2:本实验在实验室内的Intel Core2 2.66GHz CPU,3.50GB内存,NVIDIA GeForce 8600GT显卡的高档微机上对传统CCD算法以及本文研究方法进行试验。本文算法与CCD算法一样都属于迭代法,用于解决交互操作的逆运动学问题。它们都设法把每一步迭代的代价都降为最小。在接近运动学奇异点时,都能保证数值上的稳定。图7中黑点代表的是本文算法,圆圈代表的是传统CCD算法。从图7中(a)侧我们可以看出,在精度要求相同的情况下,传统CCD算法曲线呈指数趋势,效率明显低于本文算法。由此可知本文算法的效率高一些。而在图7中(b)侧可知,在对两种算法迭代速度的对比中,本文算法速度较为平均,明显低于传统CCD算法,可以得知本文算法效率较高。

实验3:本实验通过使用两种算法实现单个手臂运动,并对产生的动画效果进行对比,观察结果是否出现失真以及较大误差情况。其中,图8为传统CCD算法实现的手臂运动,图9为本文算法实现的手臂运动。由由两图的对比可以看出,当只有皮影角色手臂运动的前提下。本文算法要比传统CCD算法准确性高,也没有出现失真以及画面不合理的情况。

图7 两种算法的比较

5 结束语

本文针对数字皮影戏的特点,通过对皮影角色的分析,详细介绍了数字皮影角色骨骼的构建方法。针对二维骨骼逆运动学的问题,提出一种有效的解决办法。本方法在传统CCD算法的基础上,对解算过程进行简化和降维处理。实验结果表明,本办法有效的节约了计算资源并提高动画演示的真实度。研究的下一步工作是针对本办法无法解决目标点与骨骼同在一条线儿无解的问题。

[1]GAO Lujing,CAI Jianping.Analysis and implementation of features of character’s action in shadowgraph animation[J].Computer Engineering and Design,2010,31(10):2335-2342(in Chinese).[高璐静,蔡建平.皮影动画中人物运动的特性分析与实现[J].计算机工程与设计,2010,31(10):2335-2342.]

[2]YUAN Hui-jie.Skeletal animation technology research and realization[D].Chengdu:University of Electronic Science and Technology of China,2010(in Chinese).[袁会杰.骨骼动画技术的研究与实现[D].成都:电子科技大学,2010.]

[3]Jeff Land.Making kine more flexible[J].Game Developer,1998,5(3):15-22.

[4]DING Peng,JIA Yuele,ZHANG Jing,et al.Design and implementation of skinned mesh animation[J].Technology and Market,2009,16(10):11-12(in Chinese).[丁鹏,贾月乐,张静,等.骨骼蒙皮动画设计与实现[J].技术与市场,2009,16(10):11-12.]

[5]JI Zhuo’er,ZHANG Jingqiao.Programmable GPU technology in skeletal animations and their comparison[J].Computer Engineering and Design,2008,29(21):5550-5554(in Chinese).[季卓尔,张景峤.基于可编程图形处理器的骨骼动画算法及其比较[J].计算机工程与设计,2008,29(21):5550-5554.]

[6]FENG Bo.Motion control technology in 3Dcharacter animation[J].Science & Technology Information,2007(27):95-96(in Chinese).[冯波.三维角色动画中运动控制的主要技术[J].科技资讯,2007(27):95-96.]

[7]LI Qingling,SHANG Xinhua,WU Haiyan.Research on motion control of human skeleton based on kinematics[J].Journal of Xinyang Agricultural College,2008,18(2):128-129(in Chinese).[李清玲,商信华,吴海燕.基于运动学的骨骼动画控制研究[J].信阳农业高等专科学校学报,2008,18(2):128-129.]

[8]Chris Welman.Inverse kinematics and geometric constrains for articulated figure manipulation[D].Simon Fraser University,1993.

[9]LI Chunxia,YANG Kejian,LI Bo.A modeling of human skeleton and a method of solving IK problem[J].Journal of Wuhan University of Technology,2005,12(6):815-819(in Chinese).[李春霞,杨克俭,李波.人体骨骼模型的简历及IK问题的一种解决方式[J].武汉理工大学学报,2005,12(6):815-819.]

[10]YANG Xiaotao,YANG Kejian.CCD algorithm and its application and realization in inverse kinematics[J].Journal of Chongqing Institute of Technology(Natural Science),2008,22(5):65-68(in Chinese).[阳小涛,杨克俭.CCD算法及其在逆运动学中的应用与实现[J].云南民族大学学报(自然科学版),2008,22(5):65-68.]

猜你喜欢
皮影运动学骨骼
做家务的女性骨骼更强壮
三减三健全民行动——健康骨骼
月光皮影
基于MATLAB的6R机器人逆运动学求解分析
我爱皮影
不老的皮影
工业机器人在MATLAB-Robotics中的运动学分析
基于D-H法的5-DOF串并联机床运动学分析
益宝打造骨骼健康产业
皮影的来历