当前位置:首页 期刊杂志

基于OptiTrack动作捕捉的像素化角色动画系统

时间:2024-05-04

杜平川

(四川大学计算机学院,成都610065)

0 引言

随着角色动画技术的发展,基于动作捕捉的角色动画被广泛的应用到游戏、电影、艺术数字化等多个领域。如在电影《指环王》中的“咕噜”、电影《猩球崛起》中的“凯撒”、游戏《战神4》中的大量游戏场面等,都是先基于动作捕捉设备捕捉真实演员的肢体及面部运动数据,再通过动画技术来模拟肢体和面部数据等特征,从而使得角色动画更加栩栩如生。而在上述电影级别要求的动画制作中,所采用的软件仿真系统很大程度上都比较复杂,相对开发的成本也比较高,因此在一些画质要求相对较低的动画系统中并不适用。本文针对上述工业级角色动画系统存在的缺点,提出并实现了一种低成本的基于OptiTrack运动捕捉的像素化角色动画系统。

1 基于OptiTrack的运动捕捉

运动捕捉(Motion Capture)是指通过跟踪和记录真实的人体运动过程中,各个标记点在世界空间坐标系下的位置变换过程,以运动数据的形式保存下来,再基于得到的运动数据驱动虚拟人运动[1]。目前存在并广泛应用的主流运动捕捉设备一般包括传感器、信号捕捉设备、信号处理设备以及数据传输设备四个部分。根据其中传感器和信号捕捉设备的原理不同,又可以被分为机械式、声学式、电磁式和光学式。但通过对比捕捉数据的灵敏度及精确度,光学式运动捕捉设备要远优于其他三种。因此在本文提出的系统中,采用了由美国OptiTrack公司所涉及研发的大空间光学追踪系统,整套设备主要由8个OptiTrack公司生产的Prime 13系列摄像头(如图1、表1)、穿戴式光学定位工具及部分配件组成。见图1。

图1 OptiTrack Prime13摄像机

表1 OptiTrack Prime13摄像机参数

本文搭建的动作捕捉系统实验工作地点室内场地如图2所示。由于动作捕捉系统设备环境要求将摄像头安装在300cm以上高度,实验采用圆形横截面金属材料杆搭建了摄像头平台,考虑到不同实验场景下摄像头的位置调整需求,摄像头平台安装在了距离地面和屋顶分别约300cm及50cm的位置。然后将摄像机安装在设备所配置的三维云台底座上,再将云台固定到摄像头平台的金属材料杆上。根据光学式运动捕捉原理将云台及摄像头调整到合适的角度和朝向,并调节摄像头的帧频、曝光时间、LED光源亮度等参数,使得摄像机捕获区域内不存在过高亮度的干扰点。见图2(图中光色光圈为摄像头LED环)。

图2 OptiTrack搭建场景示意图

通过均匀布置在场地四周的光学式摄像头,记录穿戴有光学标记点的运动物体的运动轨迹,并将运动数据以图像的形式记录下来。然后使用计算机对该图像数据进行处理,即可以得到并输出在每一帧图像的时间点上每一个光学标记点的空间三维坐标(X,Y,Z)如表2所示,见表2。

表2 动作捕捉光学点坐标数据格式

同时,当捕捉的运动对象是人体时,OptiTrack官方提供的Motive还可以输出相应的骨骼节点位置及旋转等数据如表2所示,使得所捕获的运动数据能正确地应用在其他平台上。见表2。

2 动画重定向

为了能使用基于运动捕捉系统得到的真实人体运动数据驱动虚拟人角色运动,需要通过动画重定向的方式将真实人体运动数据重新映射到虚拟人角色上。2009年,Poirier等人[2]提出了通过匹配给定的谷歌运动信息与虚拟角色Mesh之间的拓扑关系来使得谷歌适应角色模型的方法,但是这种办法要求输入的人形模型保持特定的某种姿势,如T-pose或者A-pose。这种前提条件不满足普适性。所以在此基础上Pantuwong等人[3]在2012年提出了一种通过提取输入3D模型的骨骼解剖学信息,自动生成角色逆运动学骨架并与已有的骨骼模板对应绑定的算法。解决了Poirier等人提出的方法中的输入模型特定姿势限制。此外,Abdul-Massih等人[4]在2017年提出一种将角色Mesh分成多个独立的身体组(Group of bodies),再通过身体组映射实现动画重定向的方法。划分出的身体组相对独立,因此还需要添加约束并进行更多的计算才能得到较好的重定向结果。这两种方法相对来说效果更好,但与此同时,相应的成本开销也就更大。为了达到以较小的代价实现动画重定向效果,本文提出的系统采用了Unity引擎中提供的特定动画重定向方案。该方案要求用于动画重定向的必须是人形(Humanoid)的骨骼系统,它在内部定义了一套骨骼模板,并要求所有的角色动画骨骼都必须映射到这套模板上才能由同一个运动数据来驱动并产生动画。

表3 OptiTrack输出骨骼节点数据格式

人形(Humanoid)骨骼的类似性,满足了动画从一个类人骨架映射到另一个类人骨架的需求。在Unity引擎中,可以选择Humanoid方式导入类人骨骼系统,这种导入方式提供了自动绑定功能,自适应地将导入的人形骨骼通过关节点及关键骨骼数据一一对应的方式与所需要复用到的类人骨骼模型文件相映射。从而达到运动数据复用的效果。

3 体素化及骨骼动画

在数字图形及角色动画表现方法中,像素表现方式是较为基本和常见的一种。如在游戏《我的世界》(Minecraft)中,整体的角色模型以及世界场景构建都是由像素组成。本文提出的系统也参考了像素艺术及其表现手法,选择了基于动作捕捉的运动数据构建像素角色动画。相比于传统如游戏《我的世界》中的像素动画,由动作捕捉数据驱动的运动模型更具有真实性,保留了像素艺术这一表现手法的基础上同时提高了动画质量。在本文提出的系统中,主要通过体素化的方式,将普通的Mesh文件进行实体体素化后,再通过骨骼动画的形式由骨骼驱动体素化粒子运动从而得到像素化的角色动画。

3.1 体素化

体素化是将物体的几何形式表示转换成最接近该物体的体素表示形式,输出包含体素位置的体素数据集合。体素化的主要过程为:首先计算模型包围盒,根据包围盒决定划分的网格数量。然后遍历每一个网格,通过遍历三角形计算三角形到提速网格中间的距离,再与设定好的阈值对比来确定是否被占用。从而得到模型体素化后的数据。主要实现如下:

3.2 骨骼动画

骨骼动画,也被称为骨骼蒙皮动画,主要是指由骨骼运动数据驱动的角色动画技术。Thalmann等人[5]早在1987年就提出了一种针对局部皮肤运动进行插值计算的皮肤变形算法(Skeleton Driven Deformation,SDD)。Lander J等人[6]于1998年提出了线性混合蒙皮算法,通过求解每一个顶点在每一块骨骼影响下的位置变换,并对所有的位置变换加权求平均得到最终结果。但这种算法其缺陷在于,对于旋转角度较大的关节处,混合后的新顶点丢失了向量长度信息,因此会产生失真如皮肤塌陷、“糖纸效应”等现象。此后为了改善线性混合蒙皮算法的缺陷,Weber等人[7]提出通过在关节处增加辅助骨骼来抵消过大的旋转角度的方法。上述方法也是目前工业界常用的骨骼蒙皮动画技术。在本文提出的系统中,主要是基于Lander J等人提出的线性混合蒙皮方法,并且由于采用了像素化的表现形式,较好地避免了如皮肤塌陷等现象。主要实现方式是先采用Dijkstra最短路径算法将模型的表面体素与经过动画重定向后的模型骨骼绑定。再通过IK((Inverse Kinematics)反向动力学,基于模型骨骼的运动数据计算表面体素的每一帧所在位置。

由于涉及到了大量位置的计算,所以在实际的系统开发过程中,本文将体素位置计算的过程放在Computer Shader中,通过GPU并行的方式进行计算加速。计算主要过程如下述代码:

4 系统运行效果

完成运动数据捕捉并解决了运动数据复用的情况下,本文基于Unity引擎开发了三维角色动画系统。本系统主要分为四个模块:动作捕捉模块、动画重定向模块、体素化模块、骨骼动画模块。通过动作捕捉模块捕获真实人体运动数据,再基于Unity引擎的动画重定向方案将人体运动数据与虚拟角色绑定,最后基于体素化及骨骼蒙皮动画绘制出了像素化的角色动画。所得到的虚拟像素化角色运动效果如图3所示。

图3 基于OptiTrack动作捕捉的像素化角色动画系统效果

5 结语

本文给出了基于动作捕捉的像素化角色动画系统中主要算法如体素化、骨骼动画的实现,并基于Opti-Track动作捕捉系统设备搭建和实现了像素化角色动画系统,本系统相对于普通的像素动画来说能更加方便快捷地实现更加真实的像素角色动画,并可以达到动画自定义的效果,具有一定的实际意义。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!