手机3D动画中基于Kinesiology的骨骼数据计算

2018-11-19 10:58
软件导刊 2018年11期
关键词:骨骼动画矩阵

杨 勇

(北京工业大学 信息学部,北京 100124)

0 引言

动画作为一门综合艺术,是集绘画、电影、数字媒体、音乐等众多艺术门类于一身的艺术表现形式。传统动画通常是用画笔画出一张张静止的画稿,再用摄影机连续拍成一系列画面,从而给视觉带来连续变化的效果。画面制作方式除最常见的手绘在纸张或赛璐珞片上外,其它方式还包括黏土、木偶、沙画以及皮影等。为进一步提高动画制作效率,上世纪90年代,中国科学院陆汝钤院士[1]提出计算机全过程辅助动画自动生成技术,该技术实现了从文本到动画的自动生成。随着智能手机以及3G通信技术的普及,中国科学院的张松懋研究员于2008年提出将动画自动生成技术应用于手机短信上,设计并实现了面向手机短信的3D动画自动生成系统。该系统可依据短信内容,自动生成相应的3D动画并呈现给接收方。

对于角色动画而言,根据动作行为的复杂程度,一般可分为两大类:单人运动与交互运动,这两类运动对于角色动画都是必不可少的[2]。交互类运动规划相较于单人运动规划处理更为困难,主要原因在于其除需表达动作内容及确定交互双方身体姿态外,还需要动态规划人物之间的时空关系[3],包括相对距离与绝对位置、身体接触面范围、运动路径、交互物传递等。

对于表达动作内容以及确定交互双方身体姿态,一般采用动作数据捕捉技术。动作数据捕捉技术是一种通过记录物体信息以供分析、回放及传递的技术[4]。通常动作捕捉的取样信息来源于人类,通过记录人体运动躯干的空间位置信息、角度、速度及冲量,进而得到准确的动作数据信息并将其应用于三维软件里具有相同躯体信息的骨骼模型中,使骨骼模型完成相应动作内容。常见格式有BVH与TRC,但这种原始数据格式并不便于程序读取,而且本系统采用的底层动画软件Maya并不支持上述数据格式。因此,王妍[5]、邱真真[6]利用一种将BVH运动数据转换为动画制作软件Maya中可用数据的算法,通过建立关系数据库存储主要关节数据,以存储和读取动作数据。然而,在实际应用中,转换后数据与人物的映射效果并不理想,容易造成部分动作扭曲变形。对于人物之间的时空关系规划,需要根据交互双方之间的动作内容及距离确定位置与生成路径,其中涉及到骨骼数据计算。Wilhelms等[7]提出一种矩阵方法,不需要用单纯的方程表达骨骼关节自由度以减少其约束,但该方程在求解加速度时计算量很大;Armstrong等[8]提出用图形仿真骨骼方法规避矩阵建立过程,该方法复杂度低且较为准确。

考虑到交互动画中的角色不仅需要进行位置规划,还需要对单个人物的动作细节进行研究,因此本文在定量计算阶段提出基于Kinesiology的骨骼数据计算方法对交互双方进行运动规划,动作数据提取格式为FBX(由BVH经动作制作软件MotionBuilder转换而成)[9]的单人动作作为交互动作的单个原子动作(可以构成交互行为的单人动作),通过建立感兴趣点与感兴趣区域(该虚拟人物执行交互动作时双方的身体接触面范围,包括人体手部骨骼、肩部骨骼、根骨骼等18块主要接触骨骼)对人物位置、路径以及交互物绑定进行规划计算,从而在系统中自动生成虚拟人物交互运动规划,使生成的三维动画在表现动画主题、叙述动画剧情以及增强动画表现力方面更为突出。

1 系统整体设计

手机3D动画自动生成系统由多个子系统组成,包括情节规划子系统、变形规划子系统、摄像机规划子系统等。系统使用机器学习的思想对开放的短信文本进行信息抽取,通过抽取语句中已标记实体对之间的语义关系、主客观分析、否定词提取等,获得短信文本所有表达主题及关键信息,将抽取的信息作为各系统输入,并且各子系统之间都具有一定联系。通常子系统均由定性规划与定量计算两部分组成,定性规划依据信息抽取结果对模型、灯光、摄像机以及人物进行初步规划并生成定性描述语言;定量计算根据定性规划结果将其转换为具体数值,依据场景内的实际情况对场景与模型进行添加修改,自动规划计算模型、运动、灯光、摄像机、特效以及布局等数据信息,调用Maya API生成相应动画,最后经过服务器渲染生成可播放的3D动画视频。图1为系统整体流程。

图1 系统整体流程

其中本文提出的基于Kinesiology的骨骼数据计算处于交互运动规划的定量计算阶段,根据计算得到的骨骼数据确定人体感兴趣点位置,进而对人物进行初始位置确定、运动路径规划以及交互物绑定规划计算。

2 骨骼数据计算方法

在交互运动规划中,主要是基于兴趣识别人物位置以及确定交互人物之间的身体接触范围。由于感兴趣点分布于人体主要骨骼表面,因此需要进行骨骼数据计算。骨骼数据计算包括骨骼数据正向推导计算(根据父骨骼信息求其各子骨骼信息)与骨骼数据逆向推导计算(根据子骨骼信息求骨骼链上各父骨骼信息),其中骨骼运动基于三维动画软件Maya中的人物设计系统——FBIK(Full Body IK,即骨骼之间存在约束控制,牵动身体每一部分都对全身动作有影响)。

2.1 Maya中IK/FK求解原理

在动画制作过程中,人物运动设计对于整个动画是至关重要的,其担负着表现动画主题及叙述动画剧情的重要任务。在三维软件Maya中有一套完整的人物设计系统——FBIK,该系统将整个人作为一个整体进行控制,身体每一部分动作都会影响全身[10]。以一个使用FBIK的二足骨骼角色捡东西为例,如图2所示,当骨骼角色的手伸向地面目标时,腰与膝盖也随之自然弯曲。

图2 FBIK控制动作实例

在Maya的FBIK系统中,存在两套对于骨骼运动的描述,一种是基于正向运动学(Forward Kinematics)的骨骼描述,简称FK;一种是基于反向运动学(Inverse Kinematics)的骨骼描述,简称IK[11]。FK是一种通过“目标驱动”实现的运动方式,通过设定人体各关节的旋转角获得人体在特定时刻的位置与转角,并且可以由父骨骼方位与子骨骼的相对变换得到子骨骼方位[12]。但在求解过程与确定所有运动关节节点运动位置时,需要一一求解关节链上的关节点,工作量较大。

IK(反向运动)与FK(正向运动)的求解思想恰好相反,其基本原理是操作者可以根据末端骨骼位置,使用反向运动学求解算法求解出关节链中每个关节节点的位置与方向,也即通过定位骨骼链中较低的骨骼,使较高的骨骼旋转,从而设置关节姿势,通常应用于将骨骼链末端“固定”在某个相对该骨骼链移动的对象上[13]。IK的出现一定程度上减少了FK中的求解繁琐问题,大大减轻了用户工作量,因此在人体动画的交互式设计与自动生成算法中得到了广泛应用。

2.2 骨骼正向推导计算

由人体骨骼特性可知,诸如手臂等骨骼链是由一些关节(Joint)构成的,关节一般只有一个自由度(平移或旋转),而末端效应器骨骼有6个自由度,因此根据父骨骼求下末端的子骨骼问题则可解释为通过每个关节自由度求出末端效应器的角速度与线速度。

对于旋转关节(revolute joints)的求解一般涉及角度变化,而对于平移关节(prismatic joints)的求解一般涉及距离变化。本文将角度以及距离全部记为q,同时将目标状态(指末端效应器的角速度与线速度)记为向量组,即由于x中每一项都是由q进行求解,因此记为x=f(q),得到公式(1)。

(1)

对公式(1)进行扩展,对x中的每一项进行全微分,同时对等式右边的所有q求偏导,得到公式(2)。

(2)

将上述等式转换为矩阵后,可以得出矩阵的行等于X中的项数m,即为末端执行器的自由度个数,矩阵的列等于Q的项目数,即为关节个数,该矩阵即为Jacobian Matrix(雅克比矩阵),记为J。J主要用来求解末端效应器的角速度与线速度,可以简写为公式(3)。

ΔXm*1=Jm*n(q)·ΔQn*1

(3)

因此,在手机3D动画系统中,需要通过正向推导得到骨骼数据的交互运动规划,并依据骨骼链上各关节的骨骼长度及骨骼旋转角度,求解其线速度与角速度,进而得到骨骼的相对位置坐标,最终经过转化得到目标骨骼的世界坐标。

2.3 骨骼逆向推导计算

采用反向动力学(IK),根据末端骨骼求解其骨骼链上父骨骼的计算方法很多,但大多只适用于脱机计算,在交互式环境下应用较多的方法为循环坐标下降法(CCD)与雅克比转置法。本文主要采用雅克比转置法,这是因为在计算节点坐标位置时关注的是整条反向运动骨骼关节链,而不仅是观察计算某一个后继链接[14]。

因此,对于正向动力学(FK)求解末端效应器的方法而言,如果此时一个骨骼链上的关节节点变量组成的向量为p=(M0,M1,…,Mn-1Mn),在FK中计算末端效应器的坐标与旋转向量x(x=(T,R))是一个简单的矩阵乘法问题,其中T是指从父关节节点到当前节点的位移矩阵,R是指围绕关节节点i旋转轴旋转θi的旋转矩阵,可以表示为公式(4)。

x=f(p)

(4)

如果将末端效应器放在固定位置并朝向x,根据其计算合适的节点变换向量p,即:

p=f-1(x)

(5)

由于函数f是非线性的,因此在公式(4)中从p到x存在唯一解,而公式(5)中从一个特殊的x到p可能有多个解。解决多解问题需要将其进行线性化,这里通过关节速率与末梢速率之间关系达到该目的,可表示为公式(6)。

(6)

其中的关系是由雅克比矩阵[15]所给定的,其体现的是一个可微方程与给出点的最优线性逼近,即:

(7)

由公式(6)进一步可得以下公式, 其中J-1即为雅克比矩阵的转置。

(8)

结合手机3D动画生成系统对于骨骼位置求解的需求,将骨骼逆向计算方法总结为以下几个步骤:①根据定性文档中的交互规划动作内容,确定交互人物双方的感兴趣点位置,若该规划方法是根据处于末端骨骼的感兴趣点求解父骨骼位置,则界定并记录感兴趣点与目标父骨骼的最小距离向量值。该值用来检测反向运动学过程,推导计算是否成功;②若感兴趣点与目标父骨骼的距离在步骤①中定义的最小值允许范围内(最小允许值的范围值是由交互规划类型确定的,以一个握手动作为例,此时需要双方手部骨骼相接触,因此最小允许范围值为双方手部骨骼相对位置差值的绝对值小于4个网格单位),记录此时的父骨骼数据,退出循环;③计算雅克比矩阵与其旋转轴,根据结果求解雅克比矩阵的转置矩阵;④对骨骼关节速率进行积分,得到关节旋转值并更新记录;⑤重新判断感兴趣点与目标父骨骼的距离是否在步骤①定义的最小值允许范围内,若在此范围内,则记录父骨骼数据,退出循环。

3 实验

本文中的原始动作数据来源包括两部分:①从原始2 455个BVH动作文件中选取合适数据;②使用动作拼接技术对原始BVH动作进行拼接修改。由于实验方面使用动画制作软件Maya作为底层动画制作与生成平台,但Maya并不支持BVH动作格式,因此要想利用Maya完成角色动画,BVH数据需要经过人物关节坐标及角度标准化后,使用动作制作软件MotionBuilder转换成Maya可识别导入的FBX动作数据,并将其存储到交互动作数据库中。针对交互运动实验,采用1*1个单位的网格作为基本长度单位,其中人物模型高度为32个单位,躯干宽为4个单位,臂长为10个单位。添加动作后,人物最大运动姿态MAX为24个单位,最小运动姿态MIN为6个单位,旋转姿态为14个单位。程序运行在DELL酷睿双核图形工作站上,由Maya生成的动画原始文件通过10台曙光标配刀片服务器进行渲染合成。

对于短信内容“谢谢你将这本书借给我”,其交互运动定性规划xml信息如下:

该定性信息表示添加的2个虚拟人物为M_boy与M_girl,交互双方分别执行3个动作并进行组合。M_girl在动作准备阶段执行表示等待行为的动作,M_boy绑定交互物图书,并经过骨骼数据计算规划运动路径后走到合适位置,将书本递给M_girl完成交互行为,交互行为完成后,M_girl执行表示感谢行为的动作,M_boy执行表示谦虚状态的动作。其动画生成效果如图3所示。

图3 动画生成效果

4 结语

本文研究的主要内容是在手机3D动画自动生成系统中,采用基于Kinesiology的骨骼数据计算方法规划计算人物交互运动。首先根据主题及场景信息添加交互动作,运用扩展的FK及IK动态计算人物骨骼数据以及运动状态,进而动态规划虚拟人物运动路径与交互物路径,从而完成虚拟人物动作之间的交互响应,最终实现虚拟人与虚拟人之间、虚拟人与交互物之间的交互运动。但由于当前FBX动作库中含有的动作数量与种类较少,生成动画的多样性与丰富性受到限制,而且当前的骨骼计算准确度受限于动作数据的精细程度,因此接下来的研究重点是进一步扩充动作数据库,以及提高动作数据的精细度。

猜你喜欢
骨骼动画矩阵
做家务的女性骨骼更强壮
三减三健全民行动——健康骨骼
做个动画给你看
动画发展史
骨骼和肌肉
初等行变换与初等列变换并用求逆矩阵
我是动画迷
矩阵
矩阵
矩阵