虚拟现实技术VirtualRealityTechnology汪日伟craftcub@163.com天津理工大学计算机与通信学院题纲第一讲虚拟现实概述第二讲虚拟现实显示技术–计算机三维图形技术–立体图形显示技术–声音、力觉显示第三讲虚拟现实跟踪技术–位置跟踪器–数据手套–人体运动跟踪第四讲人体动画技术虚拟现实的概念模型虚拟环境实物虚化人虚物实化王兆其,《虚拟环境中物体运动逼真性的研究》,博士学位论文,北京航空航天大学,1999.6.第四讲人体动画技术•人体动画•人脸动画1、人体动画•人体几何模型表示•人体骨架模型(skeleton)•人体姿态•人体运动•基本的人体动画方法虚拟人体几何表示分层表示模型虚拟人体几何表示人体骨架模型(skeleton)虚拟人可以抽象为一个Articulation(链体),其姿态可以由下列参数表示:基准位置:表示虚拟人在全局环境中的位置关节角度:表示各骨骼段(segment)相对于它所附骨骼段的方向。关节(Joints)•Rotational–Hinge:1-DOF–Universal:2-DOF–Ball&Socket:3-DOF关节状态的表示:EulerAngle以(X,Y,Z)为旋转顺序轴的欧拉角:(,,)欧拉角的特点•简单•几何意义明确•与旋转轴的顺序相关关节状态的表示:RotationMatrix•Principleaxis(x)•Arbitraryaxis10cossin00sincos00001zyxRxrrrM10)1()1()1(0)1()1()1(0)1()1()1(222222zyxzzxzyyzxxzyyyzyxyzxzyxxxRarrracasacaasacaasacaaacasacaasacaasacaaacaM关节状态的表示:Quaternions(四元组)wzyxqqqqq12222wzyxqqqqq2cos2sin2sin2sinzyxaaaq四元组与旋转矩阵之间的转换•四元组-旋转矩阵•旋转矩-四元组1022122220222212202222221222222zyxyxxwzyywzxxwzyzxzwyxywzxzwyxzyQrrrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqM四元数与旋转矩阵之比较•和旋转矩阵是同质的•和旋转矩阵之间可以相互的转换•单位四元数在表示上更具有优势四元数与旋转矩阵之比较项目四元数欧拉角/旋转矩阵坐标系独立是否,与顺序有关万向节锁无有插值难易形式简单比较困难直观程度几何意义明显旋转矩阵不够直观维数4(1个约束)9(含6个约束)能否表示平移不能齐次旋转矩阵可以欧拉角与旋转矩阵的插值问题•空间中一个刚体可以用3个位置参数和3个方向参数来唯一确定•在运动编辑尤其是关键帧动画中,我们经常需要对刚体的姿态进行插值•为了获得一个比较平滑、自然的结果,我们通常需要插值的结果是高阶连续的•物理上,平滑的转动需要的扭矩较小,以利于飞行器的控制等欧拉角与旋转矩阵的插值问题欧拉角与旋转矩阵的插值问题•对于方向的插值我们首先想到的是旋转矩阵和欧拉角的线性插值•设两个旋转矩阵Ma和Mb,则:–Mo=(1-α)Ma+αMb不再是一个正交阵0000100000010101005.00010101005.0欧拉角与旋转矩阵的插值问题•欧拉角的线性插值为:•虽然仍然表示一个方向但却有任意性•当a,b分别作用旋转c之后所得到的结果并不是对o做旋转c后的结果bbbaaaooozyxzyxzyx)1(向量的旋转•如果v是一个向量,M是一个旋转矩阵,则旋转M后的向量v’为v’=Mv•如果P是一个点,M是一个旋转矩阵,则旋转M后的点P的位置P’为P’=M·P人体姿态表示•人的所有关节的自由度组成了人的自由度,可以由一个向量P表示。如下例机械手臂的姿态可以由向量P(1,2,3)XYxxyxxyBackPalmBH132'C'D'F人体姿态的显示forwardkinematicsMworld=Mlocal·Mparent-world有缝人体模型显示结果人体姿态显示中的皮肤变形Allen基于实例的方法人体姿态显示中的皮肤变形Shen提出的基于解剖学的腿部变形结果基于交叉截面的手臂变形基于交叉截面的手臂变形人体运动•人体运动是人体姿态(n个自由度)在时间域上的函数:ntRRG:)(如何生成人体运动函数•关键帧方法•运动学方法–正向运动学方法–逆向运动学方法•动力学方法–时空约束方法•基于运动跟踪的方法–人体关节角度计算•运动编辑的方法–修改(retarget,地形匹配等)、拼接、融合等关键帧方法关键帧方法中的运动插值•由于运动的连续,可以在两个关键帧之间插值。•简单的线性插值方法:–设t1和t2是两个相邻的关键帧,则时刻t的人体姿态为:)).()(()()(121211tGtGtttttGtG正向运动学方法(ForwardKinematics)Mworld=Mlocal·Mparent-world•需要预先知道所有关节的角度•可以通过给出每个自由度的表达式定义人体运动XYxxyxxyBackPalmBH132'C'D'F逆向运动学方法(InverseKinematics)•IKisamethodofposingaskeletonwhereyouspecifythe‘goal’ofthe‘endeffector’andthealgorithmcomputesthejointanglesnecessarytoreachthatgoalXYxxyxxyBackPalmBH132'C'D'FDEMO》offline动力学方法•时空约束方法(SpacetimeConstraints)参见:AutomaticSynthesisofHumanMotionBy:AleksandraKrstic~krstic/comp259/classPresentation/classPresentation.ppt基于运动跟踪的方法•一种人体运动记录回放的方法•关键:数据的转换基于运动跟踪的方法基于运动跟踪的方法记录点的坐标转换成旋转角驱动虚拟角色运动重定向基于运动跟踪的方法演示•猴拳•猴拳(虚拟人)人体运动编辑•Retarget–Proportionally(sameskeletonlayoutbutwithdifferentoffsets)–Topologically(differentskeletontopologyanddifferentoffsets)•地形匹配•拼接•融合人体动画的特点•人体动画–复杂性高•自由度个数多–逼真性要求高•非实时动画–可以预先生成人体运动函数–一般用于高品质动画•实时动画(如VR系统中)–需要在逼真性与实时性之间进行折中2、人脸动画2.1、三维人脸建模•人体三维扫描技术:三维扫描仪,CT•人体弹性皮肤模型•肌肉模型•服饰、头发等人脸的表示特定人脸建模--提取特征点坐标•自动或手工在特定人中性表情的正、侧面照片上标注特征点•进行简单的坐标变换和比例变换就可以得出特定人脸所有特征点的三维空间坐标特定人脸建模--非特征点坐标计算以一般人脸中性网格作为初始网格以特征点坐标为输入数据用Kriging线性插值方法计算出非特征点坐标68个FAPs(FacialAnimationParameters)每个FAP控制网格上一些点在某个方向上的位移,如FAP41控制了蓝色点的上下移动。用Kriging线性插值方法计算每个FAP影响哪些点,影响的程度是多少。2.2、人脸动画--获取FAP参数人脸动画--用FAP驱动人脸动画上图从左到右是喜、怒、哀、惊的表情。每一个表情是一组68个FAP组合的结果。将一个个表情串起来播放,再使用关键帧插值的方法,就可以播放出平滑过度的动画。2.3、人脸动画生成方法•编辑方法•MotionCapture方法•训练方法•特征脸方法2.4、基于训练的方法演示第四讲小结•人体动画–人体几何模型表示–人体骨架模型(skeleton)–人体姿态–人体运动–基本的人体动画方法•关键帧方法、运动学方法、动力学方法(时空约束方法)、基于运动跟踪的方法、运动编辑的方法•人脸动画–人脸表示–人脸动画参数–人脸动画生成方法–基于训练的方法