孙新领,李扬波,马绍惠
(河南机电高等专科学校 计算机科学与技术系,河南 新乡 453000)
近年来,随着数字媒体处理技术的快速发展及计算机视觉硬件成本的进一步降低,计算机三维动画技术及其应用越来越普及且成熟,特别是在三维人体动画方面,运动捕捉技术的广泛使用生成了大量真实感三维运动数据,并广泛应用于影视动画、虚拟现实、计算机游戏及运动仿真等多个领域。由于运动捕捉技术获取数据容易、精度高、真实感强以及制作效率高等特点,使用该技术制作三维角色动画已成为主流趋势。
运动捕获技术的基本思想是采用特殊硬件设备实时捕获真实运动角色(演员、动物等)的三维运动数据,并将其映射到事先建立好的三维模型上,生成动画序列。从本质上而言,运动捕获技术是一种数据驱动的动画制作手段,包括基于运动捕获数据的编辑、合成、重用等技术[1]。商用人体运动捕获系统的普及,尤其是光学式运动捕捉系统的普及,使得获取真实感三维人体运动数据不再是制作真实感三维人体动画的瓶颈,可供重复利用的三维人体运动捕获数据库也已出现,这使得数据驱动方式成为制作真实感三维人体动画的重要手段。
运动捕捉技术的三维人体动画制作流程分为三维运动数据获取、数据重建、运动驱动等步骤。本文基于这一流程,采用大连东锐软件公司的被动式光学运动捕捉系统作为平台[2],讨论了运动捕捉技术在三维人体动画中应用的方法和技巧,包括摄像机标定、标记点跟踪和三维重建技术等,通过重建后的数据驱动Motion Builder中的虚拟角色,实现了一系列真实感人体动作的捕获与使用,使虚拟角色具有了生命。
人体的动作可以看成是人体各个关节点的动作,在运动捕捉系统中,一般把人体看成是由13~19个关节点组成的简单模型[3]。进行运动捕捉时,首先要在人体的各个关节点上粘贴固定一个特殊的反光材料,称为标记点(Marker)[4]。这些反光材料可以被特殊的摄像机所追踪。利用两台或两台以上的摄像机进行实时视频捕捉,从各个摄像机得到的序列图片中可以得到每一帧中标记点的运动情况。因此可以得到一个特定的点随着时间变化的连续运动轨迹。然后通过三维重建技术将这些点的运动轨迹还原为骨架模型的动作。本次测试使用的运动捕捉系统为大连东锐软件公司的DIMS9090,共8台近红外高清摄像机,用以采集三维动作数据。
在从摄像机所获取的二维图像信息计算三维空间结构的过程中,要利用视点的位置信息和视点的朝向信息,因此需要知道摄像机的各种参数,包括内部参数和外部参数[5]。这些参数的获取一般通过摄像机标定技术实现,该技术是计算机视觉系统中的一项重要技术。
为了精确地捕捉三维运动数据,进行了静态标定和动态标定。静态标定通过对放置在捕捉区域的静态标定仪的象限和位置信息的计算完成。标定时,静态标定仪要放置在所有摄像机视野的中心位置,本次测试放置如图1所示。静态标定仪的三个轴把捕捉空间划分为四个象限,其中XY 轴夹角方向为第一象限,从第一象限起按逆时针方向分别为二、三、四象限,每个象限对应两台摄像机。动态标定通过实验人员使用动态标定仪在捕捉区域运动,并对运动数据进行运算,实现摄像机的动态标定。动态标定的精确度要达到95%以上。静态标定和动态标定都是为了准确定位标记点的运动轨迹,同时也为了避免抖动、少点等问题,使捕捉的数据更准确。
图1 静态标定仪的放置
在光学运动捕捉系统中,标记点为发光球,通过粘贴在角色所穿衣服的关节位置来实现,使用安放于角色四周的一个或多个相机跟踪捕捉这些标记点。跟踪标记点的主要目的是能让系统识别此点代表哪个关节点,以便在还原数据时直接将骨架连接起来。然后利用三维重建技术就可以获得角色身上标记点的三维运动轨迹,形成三维运动数据。
为了数据捕捉的精确性,标记点必须覆盖所有需要捕捉的骨骼,反映出骨骼的自由度及标记点需尽可能与骨骼运动一致;为了提高数据的重建效率,避免缺点现象、标记点的交叉和遮挡等问题,标记点应摆放在不易被遮挡的地方,标记点间距离应大小不一及相关标记点间形成规则的几何图形。本次测试使用了21点标记法,具体标记位置和方式如图2所示。
图2 标记点贴法
进行了摄像机的标定和标记点的粘贴之后,接下来就是让演员做出不同的动作,并通过捕捉系统对动作数据进行采集。演员做动作时不要超出捕捉区,尽量不要遮挡标记点,动作速度要均匀,这样采集到的数据才丢点更少、更准确。
三维重建是指把图像的二维坐标还原到三维坐标,然后用这些三维坐标的数据驱动创建的虚拟模型。被动式人体运动捕捉系统捕捉方式简单快捷,采样效率高,但所获得的数据为一系列散乱数据,因此这些数据在使用之前首先需要对数据进行识别,确立数据点与标记点的对应关系,并对每一帧的数据点进行匹配或补点。
在本文中连接模板需要手动建立,选择无缺失点且容易辨认的一帧数据,逐一为每个点编号,把经过标定的这一帧数据作为匹配模板。对于同一个表演者捕捉的不同组的数据匹配模版可以共用,而不必为每组数据都确定一个新模板。本次测试选择让演员以T字形站立作为匹配模板,因为该姿势匹配容易、准确,且有利于后续在Motion Builder中使用捕捉的动作数据驱动虚拟角色。标记点数据匹配连接前和连接后的模板比较如图3所示。
图3 数据的匹配与连接
利用光学式捕捉的原始运动数据有四个特点:(1)采集到的信息仅有标记点的三维坐标信息,数据以散乱无序的形式存在;(2)由于标记点被道具、四肢、躯干或者其他标记点遮挡,存在缺失点数据,缺失点时常会连续缺失;(3)由于摄像延迟会出现噪声点;(4)运动员在做剧烈运动时,标记点相对于人体会出现位移,从而改变运动数据之间的拓扑结构[6]。因此,采集后的数据要进行三维重建。
三维数据重建是利用摄像机捕捉的前后帧的同一点的运动轨迹和空间关系实现,主要有技术有剔除噪声点、弥补缺失点对运动数据进行有序标定等。本系统是通过第一帧的模板自动对后续帧进行标记点运动轨迹匹配,从而在每一帧上都形成与模板一致的连接,每一帧都是运动轨迹的体现。经过重建后的三维数据通过数据格式转换后可以用于不同的角色动画制作环境。
采集后的数据要进行数据的格式转换,转换为制作角色动画所用软件能识别的数据格式。可供导出的数据类型有.trc,.csm,.bvh 等。导出的数据就可以导入到动作合成软件,并驱动虚拟角色运动了。
这一过程有两大步骤,一是数据与Actor的对位,二是数据与Actor的绑定。对位时需要先把.trc等格式的文件导入到动作合成软件Motion Builder中,然后把Actor拖入到视图面板中。完成后调整数据的位置与方位,同时对Actor的骨骼进行旋转缩放等操作,使Actor与数据精确对位,主要是通过对手臂、腿部的骨骼进行旋转缩放,与T 字形数据进行对位吻合。对位的准确度影响动作驱动的精确程度。精确对位后,就可以对数据与Actor匹配绑定了。绑定时首先创建标记点集,然后把数据点与Actor的驱动点进行匹配,所有数据匹配完成后,激活Actor,这时Actor已经能随数据而动,绑定完成。
数据与Actor绑定后,还需要Actor与虚拟角色进行匹配,一个Actor可以与不同的虚拟角色进行匹配,这样同一套数据就可以驱动不同的虚拟角色。为了测试整个流程的稳定性、易用性,进行了多次、多样运动驱动实验。其中,对一套武术动作进行了捕获与虚拟角色的驱动。图4显示了真人动作与同步的虚拟角色动作的几帧画面。实验表明,该流程操作准确规范,捕捉的数据稳定,噪点少,实现了真实动作驱动虚拟角色的运动。
图4 虚拟角色运动效果
根据光学式运动捕捉在三维人体动画中的应用流程,总结了摄像机标定、标记点放置、运动驱动的方法和技巧,有效地解决了运动捕捉过程中产生的数据抖动、数据点丢失、运动失真等问题。接下来要深入挖掘运动捕捉数据的修复与重用问题,并进一步研究动作数据在其他主流角色动画制作工具中的使用问题,做出更流畅、更逼真的角色动画。
[1]肖俊,庄挺越,吴飞.计算机视觉与机器学习技术在三维人体动画中的应用综述[J].计算机辅助设计与图形学学报,2008,20(3):281-290.
[2]大连东锐软件有限公司.东方新锐DVMC-8820 三维运动捕捉/分析系 统[EB/OL][2013-01].http://www.dorealsoft.com
[3]Bodenheimer B,Rose C,Rosenthal S,et al.The Process of Motion Capture:Dealing with Data.8th Eurographics Int[C].Workshop on Computer Animation and Simulation'97,Budapest,Hungary,Springer-Verlag Wien,1997.
[4][5]黄波士,陈福民,张金剑.一种改进算法的光学运动捕捉系统[J].同济大学学报(自然科学版),2005,30(10):1372-1376.
[6]吴升,张强,肖伯祥等.一种新的光学运动捕捉数据处理方法[J].计算机应用研究,2009,26(5):1938-1964.