基于Kinect的实时动画角色驱动方法
2016-07-18杨智为刘晓平
胡 夏,杨智为,刘晓平
(合肥工业大学 计算机与信息学院,安徽 合肥 230009)
基于Kinect的实时动画角色驱动方法
胡夏,杨智为,刘晓平
(合肥工业大学 计算机与信息学院,安徽 合肥230009)
摘要:Kinect可实时获取运动数据,且比传统的运动捕捉设备成本低廉,因此被广泛应用于实时角色动画。文章提出一种基于Kinect运动捕捉数据实时驱动动画角色的方法,采用均值滤波平滑Kinect实时捕获人体关节点的位置数据,并根据位置信息反求出关节点的旋转变换矩阵;将Kinect所捕获的人体骨架结构与目标骨架相匹配进行运动重定向;由骨骼顶点计算出网格顶点变换矩阵,实现蒙皮动画以驱动动画角色。实验结果表明,与惯性运动捕捉仪采集到的运动数据所驱动的角色动画相比,该方法可产生流畅的角色动画,节约了制作成本,而且具有一定程度的视觉真实感。
关键词:角色动画;运动捕捉;运动重定向;中间骨架
随着计算机科学的发展,虚拟现实技术[1]已得到广泛的应用。利用虚拟人来模拟真实人的行为,可以解决许多重大问题[2],因此被广泛应用于工业、体育、军事及游戏等领域[3-5]。虚拟人的运动合成方法有关键帧插值[6]、基于物理的方法[7]和基于运动捕捉的方法[8]等。由于采集数据精准,因此运动捕捉设备被广泛应用于计算机动画和游戏制作中[9]。但现有的运动捕捉设备配置复杂,且造价昂贵[10];光学运动捕捉设备对光线敏感,难以构建人体骨架结构[11];惯性运动捕捉设备要求模特穿上特制的紧身衣,而且传感器的滑动会带来数据误差[12]。微软在2009年推出的3D体感摄影机Kinect可在视野范围内捕捉人体动作,简单方便,且受环境影响小,可降低动画制作成本[13]。因此通过Kinect实时获取人体动作数据控制虚拟人动画成为目前研究的热点之一。
目前基于Kinect控制虚拟人运动的方法主要是通过对信号和深度图的分析。文献[14]利用Kinect获取动作的低维控制信号,再采用双极结构合成人体动画。由于使用到机器学习的方法,需要训练样本集。文献[15]通过构建概率模型对采集到的运动数据进行处理,计算量大;文献[16]通过Kinect采集到的图像自动生成虚拟夹具,用于遥控机器人外科手术,需要对图像进一步处理以提取出传感器的信息。
本文提出一种基于Kinect运动捕捉数据实时驱动角色动画的方法。具体步骤如下:
(1)用均值滤波平滑Kinect实时捕获人体关节点的位置数据,并根据位置信息反求出关节点的旋转变换矩阵。
(2)将Kinect所捕获的人体骨架结构与目标骨架相匹配,进行运动数据运动重定向。
(3)由骨骼顶点计算出网格顶点变换矩阵,实现蒙皮动画以驱动动画角色。
为解决目标模型骨架和Kinect采集的骨架异构问题,本文采用了中间骨架和循环坐标下降(cyclic coordinate descent,CCD)算法。系统流程示意图如图1所示。
图1 流程示意图
1基于Kinect的实时虚拟人物运动仿真
本文算法主要包括运动数据处理模块、运动重定向模块和蒙皮动画模块3个模块。运动数据处理模块实现了对Kinect采集到的数据进行去噪并转换层次化的描述方法;运动重定向模块实现Kinect SDK中的骨架与目标骨架的匹配以及运动数据的重定向;蒙皮动画模块根据骨骼运动数据计算网格顶点的运动数据。
1.1运动数据处理模块
由于红外线的噪音和阴影以及捕捉精度等因素,运动数据会造成明显的抖动,因此就需要对运动数据进行平滑处理,本文采用均值滤波的方法对运动数据进行平滑处理,用n帧的平均位置代替采集帧的位置,即
(1)
其中,Pj(x,y,z)为采集到的三维点坐标;Pi′(x,y,z)为均值滤波后所得的三维点坐标。经实验测试,当n=5时,可有效平滑运动数据,减轻动作抖动的情况。
如果直接采用三维坐标来描述模型的运动,则各个关节点的位置参数相互独立,任意一个关节点位置的变换都不会引起其他关节点位置的变换,从而容易违背人体模型中骨架长度不变的约束[13]。为了解决该问题,采用层次化的运动描述方法,将人体运动看作是由根关节的平移和其他关节在父节点坐标系下的旋转组成。对于任一节点,其位置与旋转平移向量的对应关系为:
(2)
其中,Pnode(x,y,z)为节点的世界坐标;P0(x,y,z)为第1帧时节点在其父节点坐标系下的相对坐标;Rnode为节点绕其父节点的旋转矩阵;Tnode为节点从当前坐标系下平移到父节点坐标系下的平移矩阵。
每一帧动画都是由根节点的平动和子节点在父节点坐标系下的旋转所形成,因此只要根据Kinect采集到的每个关节点的P(x,y,z)反求出在父节点坐标系下的旋转矩阵Rnode即可,节点旋转示意图如图2所示。
图2 节点旋转示意图
(3)
1.2运动重定向模块
动画模型的改变可能会导致运动捕获数据无法驱动角色运动或造成动作严重失真,因此实现运动数据在不同角色间的映射转移是任何运动编辑方法需要关注的。目标模型的骨架结构和Kinect所捕获的人体骨架结构未必一致。若目标骨架节点数目小于Kinect骨架节点数目,则忽略部分冗余关节点,直接将采集到的运动数据映射到目标骨架的关节点上,再强制运动约束。若目标模型的骨架节点数目大于Kinect采集的模型骨架节点数目,则采用一个简单的中间骨架法实现运动数据的转移。本文中的运动重定向模块通过构建一个简单的中间骨架方法来实现运动数据从源骨架到目标骨架的映射,并且采用循环坐标下降算法加以一定约束校正映射后的运动数据。
Kinect采集到的人体模型由20个关节点组成,一个简化的人体模型可以由16个关节点组成,如图3所示。
图3 Kinect人体骨架模型
本文采用的中间骨架法运动重定向是将目标模型骨架简化至最简单的人体模型骨架,再求解出两者之间的变换矩阵M。将源运动数据映射到中间骨架,忽略中间骨架没有的冗余关节点,即从处理后的Kinect运动数据中删除中间骨架没有的关节点的运动数据,再结合中间骨架与目标骨架的变换矩阵M,求解出目标骨架关节点的矩阵。设Psrc为Kinect获取的并且经过滤波的三维骨骼点位置数据,则令Ptar=Psrc×M,方法示意图如图4所示。
图4 中间骨架和目标骨架
动画角色的改变会破坏源运动序列的运动约束,从而导致运动重定向后的运动失真,例如会产生穿地或者滑步等现象。反向运动学中CCD 算法收敛快速、稳定[17],满足实时性的要求,因此本文选择CCD算法添加约束并且修正运动重定向后运动失真的问题。
1.3蒙皮动画模块
如果直接指定每一帧各关节点的位置,由于角色模型的每个部分的网格顶点均固定在其自身坐标系下,则在2个网格连接处可能会产生裂缝,采用骨骼动画可以解决该问题。模型骨架被定义成一个树结构,每个节点的运动会传递到其子节点,然后依次传递,从而驱动整个模型的运动。将网格中的顶点绑定在骨骼上,由骨骼控制每个顶点。骨骼的运动由捕捉到的运动数据驱动,在骨骼的控制下,通过顶点混合动态计算蒙皮网格的顶点。
2实验实例
本文通过Visual Studio 2012和OpenGL开发一个动画角色处理平台,并在该平台中实现和验证本文提出的算法。所有实验在Intel Xeon PC机器上进行,处理器为Xeon W3520,2.67 GHz,4 GB内存。使用Kinect和Xsens Moven惯性运动捕捉系统同时采集几组姿势,并将运动数据实时重定向到平台中的目标角色上,控制目标角色的运动交互,如图5所示。
图5 运动捕捉仪与Kinect运动数据对虚拟人控制效果对比
图5中,左侧动画角色由Kinect采集的运动数据控制;右侧为Xsens Moven采集到的骨骼动画;中间为身着惯性运动捕捉系统的表演者。
实验结果表明,本文算法实时性较好,没有明显的延迟,可以产生流畅的角色动画。生成的角色动画和惯性运动捕捉仪采集的运动数据所驱动产生的角色动画在视觉效果上非常接近,且通过Kinect采集运动数据比惯性运动捕捉仪更加方便简单。
由于采用了反向运动学中的算法,本文算法不仅可以实时控制虚拟人物的运动,还可以将运动数据实时映射至与人体骨骼有一定相似性的卡通动画角色上,如图6所示。
图6 用Kinect运动数据对虚拟动画角色控制效果
图6中,左侧为动画角色粉红豹,右侧为表演者。由图6可知,本文算法可以实时地控制虚拟动画角色。
3结束语
本文提出一种基于Kinect运动捕捉数据实时驱动动画角色的方法。通过Kinect实时捕获人体关节点的位置数据,采用均值滤波的方法平滑采集到的运动数据,根据关节点的位置信息计算出旋转变换矩阵,再进一步计算出骨骼影响的网格顶点的变换矩阵,驱动动画角色。
本文采用中间骨架法和CCD算法解决目标模型骨架和Kinect骨架异构的运动重定向问题。与造价昂贵的运动捕捉设备采集数据驱动角色动画的方法相比,本文方法具有捕捉方便、成本低、高效等特点,可以将动画师从繁琐的手工调节工作中解放出来。
由于系统是基于单个Kinect的运动捕捉,在遮挡严重或超过相机的采集范围时,算法将无法进行。在运动重定向时对冗余关节点的忽略可能会丢失运动细节,因此在下一步的工作中将会研究改进的中间骨架法。
[参考文献]
[1]胡社教,陈宗海.虚拟现实技术及应用 [J].合肥工业大学学报:自然科学版,2001,24(2):211-216.
[2]王兆其.虚拟人合成研究综述[J].中国科学院研究生院学报,2000,17(2):89-98.
[3]黄友能,唐涛,宋晓伟.虚拟仿真技术在地铁列车运行仿真系统中的研究[J].系统仿真学报,2008,20(12):3208-3211.
[4]甘志刚,肖南峰.仿人机器人三维实时仿真系统的研究与实现[J].系统仿真学报,2007,19(11):2444-2448,2518.
[5]夏丰领,赵育善.基于HLA的地空导弹仿真系统设计[J].系统仿真学报,2007,19(2):296-299.
[6]Mukai T,Kuriyama S.Geostatistical motion interpolation [J].ACM Transactions on Graphics,2005,24(3):1062-1070.
[7]Mordatch I,de Lasa M,Hertzmann A.Robust physics-based locomotion using low-dimensional planning [J].ACM Transactions on Graphics,2010,29(4):157-166.
[8]刘贤梅,沈志明,文必龙.基于运动捕获数据的人体运动融合[J].科学技术与工程,2011,11(12):2697-2701.
[9]沈军行,孙守迁,潘云鹤.从运动捕获数据中提取关键帧[J].计算机辅助设计与图形学学报,2004,16(5):719-723.
[10]王鑫,孙守迁,柴春雷.3维人体运动编辑与合成技术综述[J].中国图象图形学报,2009,14(2): 233-242.
[11]Xiao Zhidong,Nait-Charif H,Zhang J J.Automatic estimation of skeletal motion from optical motion capture data[C]//Motion in Games,First International Workshop,MIG 2008 Utrecht.Berlin:Springer-Verlag,2008:144-153.
[12]Gleicher M.Animation from observation: motion capture and motion editing [J].ACM SIGGRAPH Computer Graphics,1999,33(4):51-55.
[13]Livingston M A,Sebastian J,Ai Zhuming,et al.Performance measurements for the Microsoft kinect skeleton[C]//IEEE Virtual Reality Conference,2012:119-120.
[14]王万良,马庆,王鑫,等.基于Kinect的高维人体动画实时合成研究[J].计算机应用与软件,2011,28(11):184-187.
[15]Blelweiss A,Eshar D,Kutliroff G,et al.Enhanced interactive gaming by blending full-body tracking and gesture animation[C]//International Conference on Computer Graphics and Interactive Techniques,2010.Article No.34.DOI:10.1145/1899950.1899984.
[16]Rydén F,Chizeck H J,Kosari S N,et al.Using KinectTMand a haptic interface for implementation of real-time virtual fixtures[C]//RSS Workshop on RGB-D Cameras,2011:5.
[17]张鑫,王章野,王作省,等.人体运动建模的实时逆运动学算法[J].计算机辅助设计与图形学学报,2009,21(6):853-860.
(责任编辑闫杏丽)
A real-time algorithm of virtual animation character driving based on Kinect
HU Xia,YANG Zhi-wei,LIU Xiao-ping
(School of Computer and Information,Hefei University of Technology,Hefei 230009,China)
Abstract:Microsoft’s Kinect can be used to capture motion data in real time,and due to its lower cost in comparison with traditional motion capture device,it is widely used in real-time virtual character animation. A real-time driving method of the animation character based on Kinect is proposed in this paper. Firstly,the real-time human joints location data captured by Kinect is smoothed by using the mean filter,and the rotation transformation matrix of joints is obtained according to the location information. Secondly,the human skeleton structure of KinectSDK is matched with the target skeleton in order to redirect motion data. Finally,the mesh vertex transformation is calculated by the skeleton joint data to achieve skinned animation so as to drive the animation character. The experimental results show that the proposed method can produce smooth character animation and save cost in comparison with character animation driven by motion data from motion capture device and the visual effect of the proposed method is very close to measured data from high precision inertial motion capture device.
Key words:character animation;motion capture;motion retargeting;intermediate skeleton
收稿日期:2015-03-03
基金项目:国家自然科学基金资助项目(61305093;61370167;61300118)
作者简介:胡夏(1990-),男,安徽六安人,合肥工业大学硕士生; 刘晓平(1964-),男,山东济南人,博士,合肥工业大学教授,博士生导师.
doi:10.3969/j.issn.1003-5060.2016.06.008
中图分类号:TP391
文献标识码:A
文章编号:1003-5060(2016)06-0756-05