汪晗,吴巧巧,张鹏,张俊
武汉工程大学计算机科学与工程学院,湖北 武汉 430205
基于四元数插值的虚拟人运动建模及实现
汪晗,吴巧巧,张鹏,张俊*
武汉工程大学计算机科学与工程学院,湖北武汉430205
针对关键帧动画中,欧拉角描述旋转运动时自由度的丢失,提出了四元数插值方法来模拟人体运动.首先根据人体结构建立虚拟人骨架模型,其次模拟人体运动建立虚拟人运动模型,然后基于XML表示法建立关键帧数据模型来存储关键帧信息,最后采用四元数方法对给定的关键帧进行插值生成中间帧,并基于OpenGL实现可视化编程.实验结果表明,该方法能对虚拟人的运动过程进行平滑地插值,该算法框架具有通用性,通过修改关键帧信息可以很好地模拟人体的不同运动.
欧拉角;虚拟人运动;四元数插值
近年来计算机性能逐步提高,计算机图形学和计算机视觉等领域的理论研究取得重大突破,虚拟现实技术的发展也上了一个新的台阶,三维人物动画是虚拟现实中重要的组成部分,在影视、游戏娱乐、医疗、航天事业,建筑仿真等多个领域的应用越来越广泛.
针对以上现状,提出对虚拟人运动的研究.三维人物动画制作中最关键的技术是人体建模技术和运动控制技术[1],本文是基于D-H机器人表示方法[2],建立人体的骨架模型,基于四元数插值理论,建立人体行走模型,并利用OpenGL编程技术,实现人体行走过程的可视化.
关键帧动画中,一个刚性物体的运动其实就是一个旋转运动和平移运动的复合运动,可以表示为一个旋转矩阵和一个平移向量,旋转矩阵用来确定物体的朝向,平移向量确定物体的位置,然后根据物体在各关键帧处的状态通过插值来实现它的运动.
在计算机动画领域,国内从事相关技术的研究人员不断增加,《中国图形图像学报》、《计算机辅助设计与图形学报》等国内学术期刊以及China⁃graph等国内学术会议都为国内研究开发人员提供了很好的交流机会,浙江大学的CAD&CG国家重点实验室更是在这一领域起着重要带头作用[3].中国科学院的王兆其等人做了大量关于运动生成和控制、人体行为交互等方面的研究,应用人体运动合成技术实现了人体行为交互的主要工作,并利用其研究成果在聋哑人手语交互、人体行走等方面做了大量应用[4].在国外,由蒙特利尔大学Thalmann领导的LIG实验室是在研究人体动画领域里的一支比较著名的团队.LIG实验室主要从事运动控制系统、运动捕获[5]、人体平衡控制、人体建模及变形[6]、人的动作[7]、基于网络的人体运动以及碰撞检测技术等方面的研究.
2.1线性插值
对于两个四元数q1,q2其线性插值方程为
q(t)=q1+t·(q2-q1)(0≤t≤1)
其中t为插值变量,当t从0变化到1时,即可实现从q1到q2的变化.在虚拟人运动动画中,对应于从一帧到另一帧的过渡.
2.2球面插值
对于两个四元数q1,q2,其球面插值方程为
其中t为插值变量,θ为q1、q2之间的夹角,cos θ=dot(q1,q2),这里需要指出的是,计算夹角余弦值时q1,q2需化成单位四元数.
2.3四元数与欧拉角的转换
设绕x,y,z轴旋转的欧拉角分别为θ1,θ2,θ3,对应的四元数为qθ1,qθ2,qθ3,由式Rq(P)=pqp-1对应的四元数为[8]则有:
在虚拟人动画中,认为骨骼在运动中不发生形变,即把人体当做是刚体.但是人体与多刚体系统又有很大区别,人体的骨骼之间都受到关节的连带约束,而且每个关节的旋转范围都受到一定的约束,由此人体的建模方法有别于一般的物体.
3.1人体骨架模型
由于本文主要研究的是虚拟人行走时使用四元数做旋转插值生成动作,考虑的主要是虚拟人的行走的过程中骨骼在关节位置的旋转,不注重人体绘制是否逼真,所以为了简化绘制工作,直接将人体所有的部分使用相应大小的立方体代替.简化的人体模型如图1所示.整个人体是由骨骼和关节交替形成,关节是骨骼的旋转点,而且父关节的转动会带动子骨骼的转动,也会带动子关节的转动,总而言之,就是整个人体骨架系统是有层次的,其实这种方法是D-H方法的简化版.
图1 虚拟人体模型Fig.1Model of virtual human body
3.2关节空间相对位置的计算
首先是对人体的每个关节空间的局部坐标系进行定义:坐标原点都是关节点,坐标系建立在每个关节处,规定坐标轴在人体初始状态的时候,X轴正方向向左,Y轴正方向向上,Z轴正方向向前,可以看得出初始状态的时候他们的坐标轴都是同世界坐标系的坐标轴平行的.设关节点i和i+1,相邻关节空间转化过程如图2所示[9].
首先,将i+1关节空间的坐标原点即关节点平移到关节点i的位置,这一过程记为trans(i,i+1)-1,这个时候相邻的两个关节空间的坐标原点重合.
然后将关节i+1的坐标系左旋转使其和关节i的坐标空间的坐标轴平行,这个过程记为rotate(i,i+1)-1,这时两个坐标系实际上是重合的.
图2 相邻关节空间坐标变换Fig.2Space coordinates transformation of adjacent joint
这个变换坐标系的过程没有改变点的位置,所以关节空间i+1中的点要做这个过程的逆过程,先做rotate(i)旋转,再做trans(i,i+1)的平移,这个过程用矩阵Ti+1i表示如下:
3.3骨骼和关节的连接结构
人体骨架系统是由骨骼和关节相互连接组成的,骨骼和关节之间使用指针链接,而且这个链接是有序的,关节所指向的骨骼的转动是被关节控制的,骨骼所指向的关节是依附在该骨骼上的,整个人体的关节链接顺序如图3所示[10].在图中有一个root关节,这个关节是附加的,但这个关节在计算世界坐标和关节空间的相对坐标的转换时很重要,如果将人体行走的过程看作人体的中心高度不变,那么可认为世界坐标是关节0的坐标空间,这里的人体中心root就是关节1,root关节自然成为人体其他关节空间和世界坐标转换的桥梁.一般来说这个root关节可以设置到人体的任何位置,但是最好的位置是世界坐标中不动的点或者是一个简单运动的点.
图3 关节和骨骼连接图Fig.3Connection diagram of joints and bones
3.4运动模型
行走是人类最基本的运动之一,也是描述虚拟人所不可缺少的.在设计虚拟运动系统时,考虑建立基于关键帧的虚拟人行走动画,并且对这个人体有一定的可控制性,比如控制行走的速度、方向.正是基于这样的思考,关注于设计一个可生成水平面上直线,运动的虚拟人运动系统,并且尽量保证运动的实时性、连续性和真实性.
走路的姿势可分解成开始抬左手迈右腿向后挥右手,当右腿落地后收回左手,挥右手,左腿向前几个过程,这是一个循环且重复的过程,也意味着制作出一套最小的循环动作即可.不考虑外界的干扰,人体运动可以简化成骨骼在关节处做相对旋转,知道人体的一个端点在世界坐标系中的位置,整个人体的其他部分就可以通过计算得到它在世界坐标系中的位置.人体行走除了自身的关节之间的旋转,还有自身的平移运动,这个效果可以通过控制移动速度来实现.
研究表明,在正常行走速度下,几乎所有“行走运动时刻”都具有固定的区间值.人体的平行移动是依靠每次单脚着地,以那只脚为旋转点,以臀关节的高度为半径,以一个角度为θ的角度做旋转,然后再以另一只脚,以同样的方式做旋转运动,这种过程才导致了整个身体的平行移动,如图4所示.人体移动的速度V,一步最大距离DC和完成一个周期的基本运动时间TC之间的计算公式如下[11]:
其中H表示LHip(RHip)关节到LAnkle(RAnkle)关节的距离,θmin表示lupperleg骨骼与人体中心垂直向下直线的最小夹角,θmax表示Rupperleg骨骼与人体中心垂直向下直线的最大夹角.
图4 人体步行分析Fig.4Analysis of human walking
人体行走可认为人体的中心高度一直没变,那么就以人体的中心作为第1个关节,而世界坐标空间当做是第0个关节的坐标空间,当然这是虚拟的,方便人体更好的映射到世界坐标系中,现做如下假设,人体行走的平面在XOY平面,头顶的方向是Z轴的正方向.在第1个关节的关节空间是这样定义的,同样是以头顶为Z轴的正方向,前方是Y轴正方向,左边是X轴的正方向.这样人体中第i个关节空间的点可以很方便地转换到世界坐标系中,设关节i中的曲线q′t(t),qi(t)是世界坐标系中表示的曲线[12],转化公式如下:
如果人体是做直线运动那么曲线q1(t)= q1(0)+vt.
4.1选取关键帧
关键帧是物体运动或变化中的关键动作所处的那一帧,是运动状态即将改变的临界点,如手臂挥手的过程当手臂挥到最大的幅度的时候,如果不把最大值的位置作为关键帧,使用插值算法是不可能计算出一个位置大于插值端点的值,就不能很好地模拟人行走的运动.关键帧中记录的是在某个时刻人体的所有关节的角位移,从这一帧到下一帧过渡过程持续的时间等.
考虑到程序可能需要对关键帧的一些值反复测试,不适合固化到程序里面,所以关键帧的信息是存放在xml格式文件中,然后程序在初始化的时候读取关键帧的信息构造关键帧对象.使用xml格式很显然可读性更强,而且这些数据的组织方式和与模型的结构是一致的.
4.2生成中间帧
虽然给出了人体模型,以及人体骨骼和关节的组织方式,但还是不能让模型动起来,还需要给出关键帧和在关键帧之间插值算法.常用的四元数插值方法有线性插值、球面线性插值和样条插值等,针对不同的情形采用不同的插值算法,使人体行走看起来连贯、平滑.本文中除neckbase和root关节采用线性插值外,由于其它关节涉及到的都是关节的旋转,所以插值是旋转插值.根据上面的分析人体的行走过程是一个循环,只需要得到一个运动周期的关键帧信息就可以了.
中间帧中的关节角可由关键帧中关节角通过插值而得.在表示关节的旋转时是用欧拉角表示的,欧拉角表示起来比四元数简单,而且更容易看出虚拟人在运动过程中各关节的角度变化.但是如果采用欧拉角插值的方法,会产生病态现象[15],因为欧拉角的3个角度没有直接关系.为了避免这种问题的出现,可以在插值前将欧拉角转化成四元数,再采用四元数方法完成插值,这样就可以生成一系列的中间帧,形成一个动态的过程,即动画.
在Visual Studio 2013环境下,利用OpenGL图形库可视化编程,实现基于四元数插值的虚拟人行走动画.如图5所示,给出了由给定关键帧生成中间帧的截图,实验表明,生成的中间帧过渡自然,较好的模拟了人体行走过程.该方法可以和运动学方法相结合来实现虚拟人的运动控制,也可以用于三维动画制作.
在基于四元数插值的虚拟人行走模型的基础上,修改关键帧中的各关节的角位移信息,可得到虚拟人跑动过程动画,如图6所示.可以看出,该模型较好的模拟了虚拟人跑动过程,该算法框架具有通用性.
图5 虚拟人行走动画Fig.5Walking animation of virtual human
图6 虚拟人跑动画Fig.6Running animation of virtual human
以上介绍的基于四元数插值虚拟人运动模型,实现了由给定关键帧生成中间帧的方法,且生成的中间帧过渡平滑.但本文中虚拟人的运动是简单的直线运动,只能进行简单的向左向右转向.本文以人体的中心作为根节点来连接人体各关节,人体的重心高度保持不变,不能模拟人体起跳过程等,利用逆运动学方法模拟虚拟人运动和模拟复杂运动将是下一步的研究工作.
[1]BADLER N,BINDIGANAVALE R.Animation control for real-time virtual humans[J].Communications of the ACM,1999,42(8):64-73.
[2]DENAVITJ,HARTENBERGRS.Akinematic notation for lower-pair mechanisms based on matrices[J].A SME journal of applied mechanics,1955,22(2):215-221.
[3]李丹.计算机动画中运动生成与控制问题研究[D].武汉:华中科技大学,2008.
[4]王兆其.虚拟人合成研究综述[J].中国科学院研究生院学报,2000,17(2):89-98. WANG Z Q.Study on synthesis of virtual human[J]. Journal of the graduate school of the Chinese academy of sciences,2000,17(2):89-98.
[5]HEGRON G,PALAMIDESE P,THALMANN D.Motion control in animation,simulation and visualization[J]. Computer graphics forum,1989,8(4):347-352.
[6]THALMANN D,BOULIC R.Combined direct and inverse kinematic control for articulated figure motion editing[J].Computer graphics forum,1992,11(4):189-202.
[7]THALMANN N M,THALMANN D.Complex models for visualizing synthetic actors[J].IEEE computergraphics and application,1991,11(9):32-44.
[8]金小刚,彭群生.四元数及其在计算机动画中的应用[J].计算机辅助设计与图形学学报,1994,7(3):174-181. JIN X G,PENG Q S.Quaternion and its application in computer animation[J],Journal of computer-aided design&computer graphics,1994,7(3):174-183.
[9]何怀青,洪炳罗.一种虚拟人运动拟合算法[J].电子学报,2001,29(8):1107-1109. HE H Q,HONG B L.A motion fitting algorithm for virtual humans[J].Acta electronica sinica,2001,29(8):1107-1109.
[10]陈丽,王越超,李斌.蛇形机器人研究现况与进展[J].机器人,2002,24(6):559-563. CHEN L,WANG Y C,LI B.Present state and future direction towards snake-robot research[J].Robot,2002,24(6):559-563.
[11]KELLY S D,MURRAY R M.Geometric phases and robotic locomotion[J].Journal of robotic systems,1995,12(6):417-431.
[12]JANZEN L,METAXAS D.Recursive dynamics and optimal control techniques for human motion planning[J].Multibody system dynamics,2002,8(4):433-458.
[13]孔德慧,王立春,郑重雨.增强骨骼动画运动细节的关键帧插值方法[J].北京工业大学学报,2011,37(8):1255-1260. KONG D H,WANG L C,ZHENG Z Y.A key frame interpolationmethodenhancingmotiondetailsof skeletal animation[J].Journal of Beijing university of technology,2011,37(8):1225-1260.
[14]沈军行,孙守迁,潘云鹤.从运动捕获数据中提取关键帧[J].计算机辅助设计与图形学学报,2004,16(5):719-723. SHEN J X,SUN S Q,PAN Y H.Key-frame extraction from motion capture data[J].Journal of computeraided design&computer graphics,2004,16(5):719-723.
[15]李全栋,陈树越,张微.一种改进的无监督聚类的关键帧提取算法[J].应用光学,2010,31(5):741-744. LI Q D,CHEN S Y,ZHANG W.Improved algorithm forkeyframeextractionbasedonunsupervised clustering[J].Journal of applied optics,2010,31(5):741-744.
本文编辑:陈小平
Modeling and Implementation of Virtual Human Movement Based on Quaternion Interpolation
WANG Han,WU Qiaoqiao,ZHANG Peng,ZHANG Jun*
School of Computer Science and Engineering,Wuhan Institute of Technology,Wuhan 430205,China
Aimed at the loss of freedom degree in rotary motion depiction by Euler angles in keyframe anima⁃tion,the quaternion interpolation method was proposed to simulate human motion.Firstly,a virtual human skel⁃eton model was established according to the human body structure.Secondly,we simulated human body move⁃ment to establish a virtual human motion model.Then a key frame data model based on XML representation was established to store the keyframe information.Finally,we used quaternion method to interpolate for a given key frame to generate intermediate frames,and implemented its visual programming based on OpenGL.The results show that the method can interpolate smoothly in the process of virtual human motion,and the algorithm frame⁃work is versatile,in which different motions of human body can be well simulated by modifying the key frame information.
Euler angles;virtual human movement;quaternion interpolation
TP391.41
A
10.3969/j.issn.1674⁃2869.2016.05.019
1674-2869(2016)05-0511-06
2016-03-04
武汉工程校长基金项目(2015049);2015年省级大学生创新创业训练计划项目(201510490027)
汪晗.E-mail:1135962588@qq.com
张俊,硕士,副教授.E-mail:wity@263.net