四元数在骨骼蒙皮动画中的应用.doc
《四元数在骨骼蒙皮动画中的应用.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可看作关节旋
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四元数 骨骼 蒙皮 动画 中的 应用
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2391607.html