田 博
(辽宁机电职业技术学院,辽宁 丹东 118009)
近年来动作捕捉技术已被广泛地应用于三维动画的制作,然而由于动作捕捉设备厂商和捕捉技术原理的不同,导致动作捕获数据的文件格式多种多样,且没形成统一的标准。常见的动作捕捉数据格式有 BVH、BVA、HTR、ASF/AMC等。[1]BVH(Biovision Hierarchy)是Biovision 等设备对人体运动进行捕获后产生文件格式的文件扩展名,是一种通用的人体特征动画文件格式,广泛地被当今流行的各种动画制作软件所支持。[2]BIP是3DS MAX Biped骨骼特有的文件格式,用来存储Biped骨骼的运动数据。无论是BVH还是BIP都是应用频率极高的动作数据文件,但这两个高应用频率的动作数据在进行数据转换时还存在着较大的困难。 3DS MAX的Biped骨骼在读取运动捕捉系统的BVH文件时,往往会出现无法识别轨迹名称的错误,这是由于动作捕捉系统采集的运动文件中骨骼的名称与3DS MAX Biped骨骼名称不同而导致的,这为3DS MAX用户使用Biped骨骼与动作捕捉数据制作动画带来了极大的困扰。如想实现BVH文件转化为BIP文件,我们需要经过一个较为复杂的文件转换过程,本文利用Autodesk公司的MotionBuilder软件对该过程进行了深入研究。
动作捕捉所采集的BVH文件虽然不能直接应用于3DS MAX的Biped骨骼,但是我们可以利用能够同时兼容BVH文件和Biped文件的中间介质性软件MotionBuilder来进行两者之间的数据转换。三维动画软件MotionBuilder具有很强大的功能,它提供了丰富的SDK(软件开发包)、内部集成了求解人体运动姿态的反向运动学方法、提供了Maya、Max、XSI等动画制作软件之间的文件互导方案FBX。[3]该软件可以迅速而流畅的导入动作捕捉设备所采集的BVH数据、3DS MAX的Biped骨骼所导出的FBX数据。转换过程中,需要将BVH文件和Biped文件规范化,即将两者都转换为MotionBuilder的标准化角色文件。首先将动作捕捉的BVH文件转换为MotionBuilder的标准角色文件、3DS MAX Biped骨骼所转化的FBX文件也转换为MotionBuilder的标准角色文件。其次在MotionBuilder中用动作捕捉所采集的BVH数据文件的动作来驱动3DS MAX Biped骨骼的运动。最后将被驱动的3DS MAX Biped以FBX格式导回3DS MAX软件从而来驱动Biped骨骼运动,并将其保存为BIP文件。
2.1 BVH文件转化为MotionBuilder的标准角色文件
将动作捕捉系统采集的BVH文件转化为MotionBuilder的标准角色文件,需要将BVH文件导入到MotionBuilder中,并进行骨骼名称的转化,使其符合MotionBuilder标准角色文件名称的要求,此操作环境为MotionBuilder,操作步骤如下:①导入BVH文件:执行菜单栏的“File”-“Motion file import”在对应文件夹下选择BVH动作文件,在弹出菜单下选择“import”。此时将会看到一个骨骼文件显示在场景窗口中;②将MotionBuilder标准的角色模版载入到场景:在“Asset Browser”面板中,将“Templates” -“characters”-“character”的角色模版拖进场景的空白区域,以使MotionBuilder标准的角色参与场景运算;③显示BVH骨骼名称:在“Navigator”面板中,展开“Scene”项,使场景中的BVH骨骼名称全部显示以备使用;④显示MotionBuilder的标准角色骨骼名称:选择“Navigator”菜单下的“characters”项,在其右侧的“character Definition”面板中,展开其Base(required)选项以显示MotionBuilder标准角色骨骼名称界面;⑤名称对位:选择“Scene”项下的BVH骨骼名称,使用鼠标左键拖动到右侧的Mapping List对应项下,从而使BVH骨骼名称转化为MotionBuilder的标准角色骨骼名称。骨骼名称对应表如表1所示;⑥完成名称匹配:将上一部的名称对应好以后,切换到“characters Definition”面板中的“Extract Naming Template”项,在弹出的“Create Naming Template ”对话框中单击“OK”以确定BVH骨骼名称转化为MotionBuilder的标准角色骨骼名称;⑦角色化BVH骨骼:将“character Definition”面板中左上角的“characterize”开启,在弹出的“Character”面板中选择“Biped”,以使BVH骨骼角色化,至此完成了BVH文件转化为MotionBuilder的标准角色文件的过程。
表1 骨骼名称对应表
2.2 3DS MAX Biped骨骼导入MotionBuilder
在3DS MAX中需要创建一个标准TPose的Biped骨骼(动作捕捉系统多以TPose为开始姿势),以使Biped骨骼的开始姿势与BVH角色动作文件开始姿势相匹配。此操作环境为3DS MAX,操作步骤如下:①3DS MAX与MotionBuilder单位匹配:选择3DS MAX执行菜单栏中的“自定义”-“单位设置”,将“显示单位”与“系统单位设置”均设置为“厘米”;②创建Biped骨骼并设置高度:执行“创建”面板中的“系统”-“Biped”创建一个Biped骨骼,在“运动”面板中开启“体形模式”并将“结构”中的高度修改为“170”cm左右(尽量与运动捕捉系统所采集的BVH文件人物身高相等);③将Biped骨骼调节为TPose:调整Biped骨骼的双臂到侧面平伸状态;④将Biped骨骼转化为“FBX”文件:执行菜单栏中的“文件”-“导出”,将“保存类型”选择为“FBX”文件类型并保存。
2.3 3DS MAX Biped骨骼转化为MotionBuilder的标准角色文件
将上一步存储的3DS MAX Biped骨骼以FBX格式导入到MotionBuilder中,以使BVH运动文件来驱动3DS MAX Biped骨骼,此操作环境为MotionBuilder,操作步骤如下:①载入3DS MAX Biped. FBX文件(3DS MAX Biped存储的FBX文件):在“Asset Browser”面板中单击鼠标右键,在弹出的对话框中选择“Add favorite path”,选择上一部我们存储的“3DS MAX Biped. FBX”文件夹。将其载入到“Asset Browser”面板中;②3DS MAX Biped文件合并进MotionBuilder场景:在上一部导入的“FBX”文件夹中选择3DS MAX Biped导出的FBX文件,使用鼠标左键将FBX文件拖拽入场景视图中,在弹出的对话框中执行“FBX Merge” -“No Animation”,在随后弹出的“Warning”对话框中选择“ok”以确定;③转化3DS MAX Biped.FBX文件为MotionBuilder的标准角色文件:在“Asset Browser”面板中选择 “Templates” -“characters”选项,在右侧的预制模版中选择“3DS MAX Biped Template”,使用鼠标左键将模版拖拽到场景视图的Biped骨骼的任意一段上。在弹出的对话框中选择“Characterize”以完成3DS MAX Biped. FBX文件转化为MotionBuilder的标准角色骨骼文件。
2.4 使用BVH动作驱动3DS MAX Biped.FBX文件
我们的目的即在于使用BVH运动文件来驱动3DS MAX Biped骨骼,此操作环境为MotionBuilder,操作步骤如下:①选择被驱动对象:在“Navigator”面板中展开“characters”选项并选择“Bip001”;②选择驱动源:在“character Controls”面板中,将“Source”切换为“Character”,此时可以看到Biped骨骼与BVH骨骼对位,并成功驱动其运动;③打印动作:在“Navigator”面板中选择“characters ” -“Bip001”,在其右侧打开“Character Settings” -“Plot Character”,在弹出的“Character”对话框中选择“Skeleton”,在随后弹出的“Character”对话框中选择“Plot”,完成动作打印;④删除BVH动作:在 “Navigator”面板中选择“characters” -“Character”并使用鼠标右键删除;⑤删除BVH骨骼:选择“Navigator” -“Scence”并展开,将“BVH:reference”中的所有文件使用鼠标右键删除。仅保留“Bip001”下的骨骼文件;⑥保存FBX运动文件:执行菜单栏中的“File”-“Save”,在文件类型中选择FBX文件并保存。
2.5 FBX运动文件驱动3DS MAX Biped骨骼并存储为BIP文件
将运动文件存储为FBX文件以后,需将其导入回3DS MAX加以使用,此操作环境为3DS MAX,操作步骤如下:①载入FBX文件:在3DS MAX中,开启我们之前制作的TPose形态的Biped文件并关闭“体形模式”,执行菜单栏中的“文件”-“导入”并选择我们上一步在MotionBuilder中保存的FBX文件。此时3DS MAX默认的时间往往不足,需要我们将时间延长到合适长度;②保存为BIP文件:在Biped修改面板中存储运动文件为BIP文件,以备将来建立动作文件库和应用于其他的Biped角色骨骼使用。
BVH动作数据文件虽然不能直接应用于3DS MAX Biped骨骼,但是可以通过MotionBuilder来对BVH文件进行数据格式的转换。首先将其转换为3DS MAX可读取的FBX文件,然后再利用FBX文件来驱动3DS MAX Biped骨骼,最后再将其存储为BIP文件即可。动画制作软件与动画数据格式众多,在制作动画的过程中经常需要进行动画数据格式的转换,找到合适的介质性软件是实现快速有效数据转换的关键。近年来随着网络游戏、手机游戏、虚拟现实等行业的发展,对3DS MAX Biped骨骼的应用频率越来越高,因其采用集成的整体骨骼模块,可以省略骨骼的架设和绑定IK的繁琐过程,极大的提高了工作效率。研究动作捕捉系统的BVH文件转换为3DS MAX Biped骨骼通用的BIP文件,不仅可以提高动画制作的工作效率,而且可以极大提高虚拟角色动作的真实性,对于BVH数据转换为BIP文件方法的研究不仅可以解决3DS MAX Biped用户使用BVH动作文件的困扰,对其它类型的动画数据文件转换也提供了一定的思路和参考,具有较强的现实意义。