APP下载

一种虚拟人动作及面部表情的驱动机制

2011-06-22宋晓付林龚光红陈东明李佳佳

关键词:骨骼顶点姿态

宋晓,付林,龚光红,陈东明,李佳佳

(北京航空航天大学 自动化科学与电气工程学院,北京 100191)

一种虚拟人动作及面部表情的驱动机制

宋晓,付林,龚光红,陈东明,李佳佳

(北京航空航天大学 自动化科学与电气工程学院,北京 100191)

骨骼驱动变形是一种保持皮肤和骨骼无缝连接的仿真方法,本文基于人体几何模型和动作数据,采用骨骼变形技术和姿态变形方法,研究建立了一种实时驱动虚拟人运动以及生成面部表情的方法。以开源三维渲染引擎OGRE为平台,开发了基于参数控制的人体运动仿真平台,实现了人体运动的建模和实时可视化仿真。

虚拟人;骨骼驱动;表情建模

1 引言

面向对象的图形渲染引擎OGRE(Open Graphics Rendering Engine)是用C++开发的面向对象且使用灵活的3D引擎。它的目的是让开发者能更方便和直接地开发基于3D硬件设备的应用程序。引擎中的类库对更底层的系统库(如:Direct3D和OpenGL)的全部使用细节进行了抽象,并提供了基于现实世界对象的接口和其它类。

OGRE不仅支持骨骼驱动变形技术驱动人体运动的方法,而且支持顶点驱动运动控制方法。顶点驱动采用直接对顶点位置进行计算的方法来实现。顶点驱动分为顶点变形和姿态变形,应用姿态变形技术可以实时驱动人脸面部表情。

2 骨骼驱动变形

2.1 骨骼驱动变形算法

根据运动学的方法可以模拟人体的动作姿态,但是不能体现出皮肤的变形,骨骼驱动变形(Skeleton-Driven Deformation)是一种保持皮肤连续性并实现柔性变形的方法,可生动逼真的仿真人体的运动;而且比单一的网格模型更加灵活。因此在虚拟现实、电子游戏、动画制作等领域得到了广泛的应用。

蒙皮法本质上是一种插值算法,其基本原理可以用下式表示。

其中,vd是变形前的皮肤顶点坐标,Di表示在初始参考姿态下与皮肤顶点相关的第i段骨骼的由局部坐标到全局坐标的转换矩阵,D-1ivd表示在第i段骨骼局部坐标系中皮肤顶点的坐标值,Mi表示第i段骨骼的在当前帧中由局部坐标到全局坐标的转换矩阵,wi表示第i段骨骼对于当前顶点的权值,v表示变形后的皮肤顶点坐标。蒙皮算法的基本思想是使关节附近的皮肤顶点同时受到与关节相邻的两段骨骼的影响,影响的大小由权值wi确定。

图1 骨骼驱动变形技术

如图1所示,a图显示的是骨骼和顶点的初始位置,应用蒙皮技术实现骨骼与顶点的绑定,关节处皮肤上的顶点由相连的两个骨骼影响,分别设定不同的权值w1和w2,其和为1。当关节运动时,会带动皮肤顶点的变化,变化的位置由骨骼运动的矩阵和权值决定,变化效果如b图所示。

2.2 骨骼驱动变形算法实现

算法实现的实质是通过骨骼变换信息计算出皮肤顶点的信息,再通过坐标变换得到最后的皮肤顶点位置。从模型文件中提取骨骼的初始位置以及骨骼的局部变换矩阵,即相对于父骨骼的新位置;然后从根骨骼开始,递归遍历整个骨骼层次二叉树,求出每块骨骼的组合变换矩阵;计算皮肤网格中每个顶点的位置,影响每个顶点的骨骼已知,骨骼影响皮肤顶点的权重已知,再根据骨骼的变换矩阵,由公式(1)即可计算出变形后的皮肤顶点坐标。人体运动仿真实现的过程如图2。

图2 算法实现流程

人体几何模型数据和人体运动建模动作数据都存储在mesh和skeleton文件中,mesh和skeleton的数据是以二进制格式存储的,通过格式转换可以转换成xml文件,查看mesh和skeleton的数据格式,可以进一步了解骨骼驱动算法需要提供的文件信息。

Mesh文件的数据格式。

<sharedgeometry vertexcount="">显示几何模型一共的顶点数目信息;<submeshes>中列出几何模型包含的子mesh,一个人体几何模型是由身体上9个部分附加起来组成的,在模型文件中记录了每个部分的点,面以及材质纹理信息;<skeletonlink name=""/>中包含与此几何模型绑定的骨骼的名称,<boneassignments>中列出了几何模型每个顶点与骨骼的绑定数据,包含顶点索引、骨骼索引,以及设置的权重信息;<submeshesname>中列出包含的所有子mesh的名字以及索引号。

Skeleton文件的数据格式。

Skeleton数据文件以关键字 <skeleton>开始,从关键字 <bones>开始,文件中列出所有骨骼的id号和骨骼名称,以关键字 </bones>结束;<bonehierarchy>部分列出所有骨骼的依附关系,即骨骼的子父结点关系;<animations>开始的关键字记录了通过运动捕捉或关键帧编辑获得的人体的动作数据,包括动作的名称和时间长度 <animation name=""length="">,以及具体骨骼 <track bone="">每个关键帧的动作信息:平移位置 <translate x=""y=""z=""/ >,旋转角度 <rotate angle="">,以及旋转局部坐标系,以关键字 </rotate>和</keyframe>结束信息的记录。

由公式(1)获知骨骼变形驱动算法关键是需要知道顶点与骨骼绑定的权重以及局部顶点坐标到全局顶点坐标的变换矩阵,在mesh文件中可以获得皮肤顶点与骨骼绑定的权重值,在skeleton文件中可以读取变换矩阵,仿真结果如下图3。

图3 人体运动仿真

运用关键帧编辑动作建模方法以及运用运动捕捉文件离线生成动作数据方法,都可以将动作信息存储在mesh和skeleton文件中,再通过读取mesh和skeleton文件来获取骨骼驱动变形中的转换矩阵;基于约束的运动学数据的编辑方法和运用运动捕捉采集数据在线生成动作的方法,首先是从mesh和skeleton文件中获取几何模型顶点权值,骨骼名称以及子父关系,再通过实时设置对应关节各自由度旋转角度值或者实时计算出旋转角度值,来得到顶点变形需要的转换矩阵。

坐标变换也是实现骨骼驱动算法的关键步骤,首先在初始建模时人体骨骼模型的世界坐标系与OGRE中的世界坐标系不同,每个关节也有局部坐标系,运动捕捉采集数据时,设置的关节坐标与OGRE的世界坐标系也不相同,如图4所示。

图4 统一坐标系

图4显示了需要统一的坐标系,本文把模型的世界坐标系,关节局部坐标和采集数据的关节坐标系都转换为与OGRE统一的坐标系。

3 姿态变形

人脸模型是由若干顶点组成的,驱动顶点的变化来获取表情的方法是比较简单和直接的。顶点驱动通过对物体运动的快照(在顶点变形中被称为变形目标“Morph Targets”)来得到关键帧顶点的实际位置。这种方法与现实与我们在电视上看到的传统动画的实现方法是类似的:调整场景中模型的位置,然后把所有顶点位置储存为关键帧,这样的执行方法是高效率的,因为它只需要简单的把每一帧进行线性插值就可以得到全部动画效果,而不用进行复杂的运算;然而,这是一种“资源密集型”的操作,因为每一帧都包含了对所有顶点的全部拷贝,会占用很大的资源空间。本文应用了另一种姿态变形方法,它的姿态类似顶点变形里面的“变形目标”。不过可以用来被混合成更复杂更逼真的运动效果。姿态变形和顶点变形的不同之处在于储存顶点的相对位置。此外,只有被改变的顶点才被记录,即在mesh模型文件中,只记录改变的顶点索引,而顶点变形中是对所有顶点取样,这样做不仅能让姿态变形更加灵活多变,并且能节省资源。在运动建模中,建立了若干表情,这些表情存储在mesh模型数据文件中,运用OGRE中姿态变形驱动函数实现人脸表情仿真。

图5显示的是多种表情混合的结果,即有抬眉,微笑和口型三种面部表情效果。

图5 面部表情仿真

4 应用

北京航空航天大学先进仿真技术点实验室在人体可视化仿真方面采用人体运动实时捕捉系统(Phase Space)采集人体全身运动数据,驱动三维人体仿真模型,应用于战场环境士兵仿真以及救援操作作业人员的仿真应用。本论文的研究有利于进一步完善虚拟场景中人体可视化,为今后进行的高沉浸感立体交互仿真系统做前期研究和建设。图6展示了高沉浸感虚拟现实实验室中人体可视化仿真流程图,可见人体几何建模,人体动作建模以及人体实时运动是实现人体可视化仿真的核心和关键。

图6 沉浸感虚拟现实实验室之人体可视化仿真流程图

5 结束语

本文基于骨骼驱动变形算法和OGRE开源渲染引擎初步实现了人体运动仿真,进而应用姿态变形方法,通过改变顶点的相对位置建立了人脸若干表情模型并运用OGRE中姿态变形驱动函数实现了人脸表情仿真。下一步工作将在智能虚拟人动作编辑、合成等领域开展研究。

[1]Gregory Junker.OGRE 3D Programming[EB/OL].http://www.ogre3d.org

[2]Mandun Zhang,Jian Yao,Bin Ding,Yangsheng Wang.Fast Individual Face Modeling and Animation[C].Proceedings of the Second Australasian Conference on Interactive Entertainment.

[3]Frederic Pighin,Jamie Hecker,Dani Lischinskiy,Richard Szeliskiz,David H Salesin.Synthesizing Realistic Facial Expressions from Photographs[C].SIGGRAPH 98.

[4]王志良,孟秀艳.人脸工程学[M].北京:机械工业出版社,2008.

[5]付林,龚光红,黄展鹏.人体运动建模和可视化仿真[Z].第八届全国信号与信息处理联合学术会议,2009,131-134.

A Driven Mechanism of Virtual Human Motion and Facial Expressions

SONG Xiao,FU Lin,GONG Guang-hong,CHEN Dong-ming,LI Jia-jia
(School of Automation Science,Beihang University,Beijing 100191,China)

The Skeleton-Driven Deformation(SDD)is a simulation method to keep skin and bone seamlessly connected.A method of real-time driven virtual human motion and facial expressions are established based on captured motion data and SDD.With open source rendering engine OGRE,a parameterbased human motion simulation software is developed.

virtual human;skeleton-driven;facial expression modeling

TP391

A

1673-4793(2011)03-0067-05

2010-07-07

宋晓(1976-),男(汉族),四川成都人,博士,副教授。

(责任编辑

:龙学锋)

猜你喜欢

骨骼顶点姿态
做家务的女性骨骼更强壮
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
三减三健全民行动——健康骨骼
攀爬的姿态
关于顶点染色的一个猜想
全新一代宋的新姿态
跑与走的姿态
骨骼和肌肉
数学问答
骨骼是如何生长的