《四元数在骨骼蒙皮动画中的应用.doc》由会员分享,可在线阅读,更多相关《四元数在骨骼蒙皮动画中的应用.doc(6页珍藏版)》请在三一办公上搜索。
1、第 24 卷第 2 期2008 年 4 月苏 州 大 学 学 报 (自然科学版 )JOURNAL O F SU ZHOU UN IV ER S ITY (NA TURAL SC IENCE ED IT ION )Vo l124 No. 2Ap r. 2008四元数在骨骼蒙皮动画中的应用蒋德茂 ,吕强( 1. 苏州大学 计算机科学与技术学院 ,江苏 苏州215006; 2. 苏州大学 多媒体应用技术研究室 ,江苏 苏州3. 江苏省计算机信息处理技术重点实验室 ,江苏 苏州215006 )215006;摘 要 : 提出一种把骨骼蒙皮动画从三维动画软件中导出并在其他应用软件中还原的方案 ,阐述了四元
2、数在骨骼蒙皮动画中所发挥的巨大作用 . 该方法对同类系统的设计研究具有一定的参考价值 .关键词 : 四元数 ;骨骼动画 ;蒙皮动画 ;旋转中图分类号 : TP391文献标识码 : A文章编号 : 1000 - 2073 ( 2008 ) 02 - 0042 - 050 引言在虚拟现实系统中 (如三维漫游系统 )引入角色动画可以增强系统的功能和表现力 ,骨骼蒙皮动画是角色动画的一种主流形式 . 其中骨骼动画是由各关节的旋转来实现的 ,蒙皮动画中网格各顶点的位置也是由关 节的旋转来驱动的 ,但是用三维坐标来表示关节旋转比较困难 ,四元数就是解决这个问题的强大的数学工具.1 四元数与旋转1. 1 四
3、元数简介四元数 (Q ua te rn ion)理论是数学家 H am ilton于 1843年首先提出的. 四元数可以看作是复数的推广 ,其形 式为 x i + y j + zk + w , 其中 w 为实数或者标量 , i、j、k为虚数部分 . 假设有两个四元数 :q1 = x1 i + y1 j + z1 k + w1 , q2 = x2 i + y2 j + z2 k + w2它们相乘的结果还是一个四元数 ,四元数的乘法定义如下 :q1 q2 = (w1 x2(w1 z2+ x1 w2 + y1 z2 - z1 y2 ) i + (w1 y2 - x1 z2 + y1 w2 + z1
4、x2 ) j + x1 y2 - y1 x2 + z1 w2 ) k + (w1 w2 - x1 x2 - y1 y2 - z1 z2 )( 1. 1 )1. 2 将四元数应用于三维空间旋转1. 2. 1 理论基础四元数只是一个复数的扩展 ,直到 1985 年才由 Shoem ake 将其引入计算机图 形学领域 ,成为一个用来构造强制变换的有力工具 . 我们把旋转定义为一个角度 位移 ,由 (, n ) 给出 ,其中 是关于轴 n 的旋转角 (图 1 ) .由图 1可推导出 :R r = ( co s) r + ( 1 - co s) n ( n r) + ( sin) n r可见通过角度位移
5、来旋转向量 r 可以通过一个四元数变换来实现 . 在这里四 1 元数的应用如同一个矩阵 ,使向量发生了变化. 值得注意的是 ,对于 (, n ) 的角度和轴不是简单地放在四元数中 ,它们必须经过预处理 . 假设有一任意旋转轴的 向量 q ( xq , yq , zq ) 与一旋转角度 ,将它们转换为四元数 ,则 4个参数分别为x = sin (/ 2 ) xq , y = sin (/ 2 ) yq , z = sin (/ 2 ) zq , w = co s (/ 2 )图 1r的角度位移 (, n )( 1. 2 )3 收稿日期 : 2007 - 03 - 07基金项目 : 江苏省计算机信
6、息处理技术重点实验室开放课题 ( KJ S03062)作者简介 : 蒋德茂 ( 1974 - ) ,男 ,江苏苏州人 ,实验师 ,主要从事多媒体应用技术研究 .1. 2. 2 直接用四元数表示旋转假设有一向量 p ( x, y, z) 对着一单位四元数 q 作旋转 , 将 p 视为无纯量的四元数 x i + y j + zk ,则向量的旋转经推导可得Ro t ( p ) = qpq - 1 ( q- 1 是 q 的共轭 )1. 2. 3 用四元数的矩阵形式表示旋转式 ( 1. 4 )中间的矩阵是由单位四元数 q 转换而得的旋转变换矩阵 . 式 ( 1. 3 )和式 ( 1. 4 )在几何意义上
7、是相同的.( 1. 3 )2 21 - 2 ( y1 + z1 )2 ( x1 y1 - w1 z1 )2 (w1 y1 + x1 z1 )2 ( y1 z1 - w1 x1 )x3y3z30001x2y2z2222 ( x1 y12 ( x1 z1+ w1 z1 )- w1 y1 )01 - 2 ( x1+ z1 )( 1. 4 )=222 ( y1 z1 + w1 x1 )01 -2 ( x10+ y1 )w3w22 从三维动画软件中导出骨骼蒙皮动画骨骼蒙皮动画是根据角色的身体运动方式而来的. 角色的身体是一个网格 (M e sh)模型 ,网格的内部绑定了一个骨骼结构 ,当骨骼运动时 ,身
8、体就会跟着骨骼一起运动 .三维动画软件 (如 M aya)提供了强大的建模和动画的功能 ,在动画软件中制作角色的骨骼蒙皮动画 ,然后 导出给其它系统使用是一个很好的思路. 由于三维动画软件一般提供自身的 A P I,所以我们可以通过编写插件来导出骨骼蒙皮动画所需的各种数据. 但我们首先需要定义这些数据的数据结构.2. 1 关节的表示骨骼是由一定数量的关节按层次结构组合而成的 ,关节间构成一系列“父子 ”关系 ,如肘关节是肩关节的“儿子 ”,同时也是腕关节的“父亲 ”. 关节的数据结构可采用如下形式表示 : Jo in t_ idPa ren t_ jo in t_ id o rien ta t
9、iontran sla tion ro ta tion每个关节都有唯一的 id, Pa ren t_ jo in t_ id指向父关节的 id,从而实现层次关系 ; tran sla tion描述了关节相对于父关节的位移 ,用一个三维向量表示 ; o rien ta tion和 ro ta tion都是描述关节相对于父关节的旋转 ,都用四元数 表示. 它们的作用是不同的 ,在三维动画软件中骨骼一旦建立 ,各关节的 o rien ta tion 就确定了 ,且作为初始状 态不再改变 ,它的 作用 是 建立 了本 关 节的 局部 坐标 系 , ro ta tion 则是 描述 关节 在 该 局 部
10、 坐 标 系 下 如 何 进 行 旋转.o rien ta tion和 ro ta tion四元数的 4个参数可按照式 ( 1. 2 )计算得出 ,注意它们作为旋转轴还需要预处理成 单位四元数 . 所幸这些步骤三维动画软件的 A P I都能帮你完成 ,我们要获得这些四元数 ,只需调用相应函数即可 . 例如 , M aya A P I提 供 的 求 关 节 o rien ta tion 属 性 的 函 数 是 M sta tu s ge tO rien ta tion (M qua te rn ion&qua te rn ion )con st.2. 2 骨骼动画制作骨骼动画是通过旋转骨骼各个关
11、节 ,让角色摆出所需的姿势并记录为关键帧来完成的 . 三维动画软件能自动对相邻两个关键帧之间的中间帧进行插补 ,连续播放时就形成动画. 我们只需记录关节的关键帧号 和旋转状态 ,就能描述整个骨骼动画 ,其中旋转状态就是 2. 1 中关节的 ro ta tion,因此它也是一个四元数 . 骨骼44苏 州 大 学 学 报 (自然科学版 )第 24 卷2. 3 蒙皮动画给定一个已有细节的皮肤网格和一个相关的动画层次 ,我们的目标是当底层骨骼动起来的时候 ,产生一 个自动地变形网格的方法 ,这个过程称为“蒙皮 ”( Sk inn ing) 2 . 蒙皮后皮肤上每个顶点都有了相应的权重(W e igh
12、t) ,这些权重定义了关节的运动对相关顶点的影响因子 . 权重的数据结构可采用如下形式表示 : V e rtex_ id Jo in t_ id W3个数据项分别表示 :顶点 id、影响此顶点的关节 id、权重值 W. 若在三维动画软件中进行蒙皮时采用了 “平滑蒙皮 ” 3 ,则每个顶点同时受最近的几个关节的影响 ,几个关节对顶点的影响力即权重值相加等于 1.3 用四元数来还原骨骼蒙皮动画获得了骨骼蒙皮动画所需的各个数据后 ,就可以利用它们在自己的系统中还原动画 .3. 1 关键帧上骨骼姿态的还原图 2的关节链可以近似地看作是人的手臂. 圆形为关节 ,三角形为骨头 ,关节中的十字可看作是关节的
13、o rien ta tion,十字上的坐标轴可看作是关节的 ro ta tion. 在某个关键帧上转动肘关节后 , o rien ta tion 相对于父关节 是不变的 ,而 ro ta tion却与 o rien ta tion产生了一个旋转 ,这个旋转在骨骼动画的关键帧的数据结构中表示为一 个四元数 .( a)手臂关节链的初始状态( b)在某个关键帧 ,旋转了肘关节图 2 M a ya 中关节链的旋转效果图要还原某个关键帧上的骨骼姿态 ,就必须计算该关键帧上的各个关节的绝对坐标和绝对旋转 . 坐标用向 量表示 ,旋转用四元数表示 ,由图 2可得如下伪代码 :根关节绝对坐标 =根关节 tra
14、n sla tion根关节绝对旋转 =根关节 o rien ta tion 根关节 ro ta tion(两个四元数相乘的结果也是一个四元数 ,在几何上表示旋转的累积 ,参考式 ( 1. 1 ) )非根关节绝对旋转 =父关节绝对旋转 本关节 o rien ta tion 本关节 ro ta tion非根关节绝对坐标 (方法 1 ) =父关节绝对坐标 +父关节绝对旋转 本关节 tran sla tion 父关节绝对 反向旋转(加法后面的部分表示直接使用四元数来旋转向量 ,参考式 ( 1. 3 ) )非根关节绝对坐标 (方法 2 ) =父关节绝对坐标 + 父关节绝对旋转的矩阵 本关节 tran s
15、la tion(加法后面的部分表示用四元数的矩阵来旋转向量 ,参考式 ( 1. 4 ) )3. 2 骨骼动画的还原由于关键帧的数量有限 ,如果只用关键帧 ,播放出来的动画并不连续 ,所以需要按照某时刻与前后两个关键帧时刻的时间值插值计算出该时刻该骨骼相对于父骨骼的新变换矩阵 4 . 新的变换矩阵中的旋转矩阵是 由四元数经过插值后转换而来的 ,四元数的插值有如下两种方法 .3. 2. 1 线性插值le rp ( q1 , q2 , u ) = q1 ( 1 - u ) + q2 u , u 0, 1 其中 q1 和 q2 是两个单位四元数 ,分别代表相邻两个关键帧上的关节旋转 ; u可看作关节旋
16、转夹角范围内的偏移. 使用线性插值虽然能够求出插值 ,但会使两个关键帧之间的插值产生中间加速的运动 1 ,即旋转时的角速度不是匀速的 ,这对于还原骨骼动画很不利 .3. 2. 2 球面插值由图 3可推导得出 : sin ( 1 - u ) sinup = sle rp ( q1 , q2 , u ) = q1+ q2sinsin其中 q1 q2 = co su 0, 1 , u 0, 1 .球面插值解决了线性插值存在的问题 ,但球面插值自身也有问题 . 显然从四 元数 q1 到四元数 q2 有正反两个方向的旋转路线 ,对于骨骼动画中关节的两个关键帧旋转来说应该有 0 ,否则会出现关节反转的情况
17、. 球面插值有对这种奇图 3 球面线性插值异问题处理的方法 ,但较为繁琐 . 由于骨骼动画对精确性的要求并不是很高 ,所以可以用一个相对简单的方法来解决这个问题. 因为 co s = q1 q2 ,我们可以设定一个非常接近 1的值 ,当 co s的绝对值大于这个值的时 候采用线性插值 ,否则采用球面插值.3. 3 蒙皮动画的还原蒙皮动画的还原就是要对皮肤网格上的各个顶点在每一帧的实际坐标位置进行还原. 由于每个皮肤顶点 的空间变换都是受若干关节影响的 ,即蒙皮动画是由骨骼动画驱动的 ,所以我们只需考虑在静态情况下骨骼 的各个关节是如何去影响皮肤顶点具体位置的 ,而不用去关心蒙皮的动画 . 具体
18、而言 ,顶点位置的计算可以采 用两种方法 .方法一 :nv = M i di w i( 3. 1 )i = 0其中 v表示顶点的新位置 ; M i 表示与该顶点相关联的关节 i的当前世界变换矩阵 ; di 表示从顶点初始位置到与该顶点相关联的第 i个关节初始位置的位移矢量 ; w i 表示与该顶点相关联的第 i个关节对该顶点影响的权 重 ,所有权重的和应为 1; n 表示与该顶点相关联的关节的数目.方法二 :n- 1M iM i0( 3. 2 )v =v0 w ii = 0其中 M - 1 表示与该顶点相关联的关节 i的初始状态世界变换矩阵 ; v 为初始状态顶点位置. 所谓“初始状i00态
19、”,是指在三维动画软件 (如 M aya)中用骨骼绑定皮肤时角色模型所摆的姿势 ,一般是指两腿直立 、双臂向两侧平举的姿态.为理解方便 ,暂不考虑权重 ,即假设每个顶点仅受一个关节的影响 ( n = 0, w = 1 ) . 那么式 ( 3. 1 ) 和式( 3. 2 )可分别简化为式 ( 3. 3 )和式 ( 3. 4 ) .( 3. 3 )( 3. 4 )v = M d0 = TR d0- 1- 1 - 1v = M M 0 v0 = TR R0 T0 v0其中 v表示顶点的新位置 ; d0 表示从顶点初始位置到相关联的那个关节初始位置的位移矢量 ; M 表示关节的当前世界变换矩阵 ; M
20、 - 1 表示初始状态世界变换矩阵的逆矩阵 ; T 为关节当前的位移矩阵 ; R 为关节当前的0旋转矩阵 ; R - 1 为关节初始状态时的旋转矩阵的逆矩阵 ; T- 1 为关节初始状态时的位移矩阵的逆矩阵.0046苏 州 大 学 学 报 (自然科学版 )第 24 卷图 4中空心点表示关节 ,连接空心点的直线是骨头 ,实心点表示角色皮肤上的网格顶点. 对式 ( 3. 3 )和式- 1 - 1( 3. 4 )相比较可知 d0 = R0 T0 v0 ,由图 4也能比较容易地理解这点 ,即 v0 按照相连关节的初始世界变换进行反方向的平移和反方向的旋转后可以求得 d0 . 其中无论是 R、R0 还是
21、它们的逆都是以四元数为基础的 .( 1 )( 2 )图 4 关节旋转前后的蒙皮顶点变化两种方法都能计算出顶点的新位置 ,可根据具体情况选择使用. 实际计算时还应将所有顶点的新位置按 照每一关节的影响权重加权求和 .4 应用实例在本人参与的一个室内漫游系统中需要一个角色做一些行走 、坐下 、开关门窗等基本动作. 如图 5 所示 ,按照文中所述方法首先构建描述骨骼蒙皮动画所需的数据结构 ,然后编写插件导出在 M aya软件中预先制作 好的角色走路的骨骼蒙皮动画数据 ,最后利用这些数据在应用程序中成功还原了这个角色的行走动画 .( a) M aya中制作的骨骼蒙皮动画 ( b)编程还原的骨骼动画图
22、5 骨骼蒙皮动画的测试截图( c)编程还原的蒙皮动画5 结语本文以四元数为线索提出了一个骨骼蒙皮动画导出和还原的方法 ,同时在导出和还原的过程中也反证了四元数及其矩阵形式在表示空间旋转上的巨大作用. 在解决了角色骨骼蒙皮动画这个技术点后 ,也就摆脱了 大多数漫游系统中只以第一人称视角漫游场景的限制 ,增加角色动画使漫游系统的表现力和沉浸感增强 . 下 一步要做的是角色的多个基本动作的动画衔接混合 ,其中也必然会涉及到四元数的应用 .(下转第 51页 ) 12 胡 军 ,李宣东 ,郑国梁 ,等 . 基于场景规约的构件式系统设计分析与验证 J . 软件学报 , 2006, 29 ( 40 ) :
23、513 - 525. 13 Roge r S P re ssm an. Softwa re Enginee ring A P rac titione rs App roach M . Sixth Ed ition. B e ijing: Ch ina M ach ine P re ss, 2007: 341 -344.M e tr ic s on com pon en ts ba sed on fea ture po in tQ i H uacheng, Zhang Guangquan( Schoo l of Comp u te r Sc ience and Techno logy, Suzh
24、ou U n iv. , Suzhou 215006 , Ch ina)A b stra c t: R eu sab le softwa re ba sed the techno logy of componen t and the though t of refac to ring p ro sp ec ts to re so lvesoftwa re c risis, bu t a t p re sen t the re is lack of no rm a l fo rm s gu id ing how to choo se re liab le componen ts and to d
25、e sign reu sab le componen ts, wh ich can be sound ly re so lved in virtue of fea tu re po in t and au tom a ta. F irstly th is p ap e r p u ts fo rwa rd the concep t of fea tu re po in t on componen t to de sc ribe exte rna l sta tic fea tu re s and inne r logic struc tu re m ean2 wh ile. Fea tu re
26、 au tom a ta is con struc ted to dep ic t the con text; Second ly fea tu re au tom a ta is u sed to d istill effec tive com 2 ponen t fea tu re po in t; A nd then componen t fea tu re p robab ility is comp u ted by tha t; L a stly the m e tric re su lt is ca lcu la t2 ed by the ana logic m e thod of
27、 func tion po in t. A p rac tica l ca se is fina lly shown to va lida te the m e tric way.Key word s: componen t fea tu re po in ts; fea tu re au tom a ta; fea tu re p robab ility(责任编辑 :周建兰 )(上接第 46 页 )参考文献 : 1 A lan W a tt. 3D 计算机图形学 M . 第 3版 . 北京 :机械工业出版社 , 2005: 387 - 390. 2 A nd rew Kirm se. 游戏编
28、程精粹 4 M . 北京 :人民邮电出版社 , 2005: 401 - 408. 3 A lia s |wavefron t. U sing M aya: Cha rac te r Se tup M . 北京 :中国青年出版社 , 2000: 327 - 368. 4 A dam s J. A dvanced A n im a tion w ith D irec tX M . Bo ston: P rem ie r P re ss, 2003: 108 - 123.The a pp l ica t ion of Qua tern ion in Ske le ta l Sk inn ed An
29、im a t ionJ iang D em ao, L v Q iang( 1. Schoo l of Comp u ter Sc ience and Techno logy, Suzhou U n iv. , Suzhou 215006 , Ch ina;2. App lied M u ltim ed ia Techno logy L ab, Suzhou U n iv. , Suzhou 215006 , Ch ina;3. P rovinc ia l Key L abo ra to ry fo r Comp u te r Info rm a tion P roce ssing Techn
30、o logy, Suzhou U n iv. , Suzhou 215006 , Ch ina)A b stra c t: A m e thod fo r expo rting Ske le ta l Sk inned A n im a tion from 3D an im a tion softwa re and rebu ild ing in o the rapp lica tion s wa s p u t fo rwa rd, it exp a tia te s on the grea t effec t of Q ua te rn ion in Ske le ta l Sk inned A n im a tion. The se techno logie s a re va luab le fo r the system s of the sam e k ind.Key word s: Q ua te rn ion; Ske le ta l A n im a tion; Sk inned A n im a tion; ro ta tion