人体运动数据处理及合成中的关键算法
上QQ阅读APP看书,第一时间看更新

1.1 人体动画纵览

角色动画自诞生到现在,历经了100多年的发展,从1914年Winsor McCay手绘生成的Gertie the Dinosaur,到2010年著名好莱坞导演James Cameron执导的3D影片Avatar,实践表明这是一门需要大量专业知识、训练和创作灵感的艺术。时至今日,很多电影已经不再像传统影视作品那样需要投入大量的真实演员,相反地,越来越多的动画师和电脑工程师开始参与创作。一方面,人们对角色动画有大量的需求,另一方面,完成高质量的角色动画需要投入大量的人力,人体动画研究的目的是为了解决这对矛盾,在保证生成高质量动画的同时,尽可能地减少动画师的工作量。

人体运动的生成与控制是人体动画研究的重点,目的是为了让虚拟人运动更加贴近真实的人类行为。粗略地分,人体运动的生成与控制经历了如下几个发展阶段:运动学控制、简单动力学控制、运动捕获、物理控制器以及运动捕获数据与物理模拟相结合等。下面对这些发展阶段中的方法进行简要介绍。

1.1.1 运动学控制

运动学是从几何角度(通常不涉及物体的物理属性和施加在物体上的力)来描述和研究物体位置随时间变化的力学分支。在人体动画领域,虚拟人一般被视为由关节和骨骼组成的刚体模型,运动学方法研究的对象是这些刚体的运动轨迹、位移、速度、加速度以及关节和骨骼的转动过程、角速度、角加速度等。早在20世纪80年代初期,就已经出现了人体动画的交互式设计工具以及控制虚拟人行走的模型。在这一时期,有两个非常著名的系统:美国宾夕法尼亚大学的Badler等[1]开发的JACK系统和美国俄亥俄州大学图形学实验室的Girard等[2]研制的PODA系统。这些系统的运动控制过程一般是这样的:首先根据人体的运动规律计算出末端执行器的运动轨迹,然后使用逆向运动学技术求解出相应的关节角度,最后通过插值计算得到最终的人体运动,如图1.1所示。运动学控制方法存在两个较为明显的缺点:(1)末端执行器的运动轨迹以及人体其他关节的约束很难显示定义;(2)在约束指定不当的时候,生成的运动常会违背力学规律,无法反映人体运动在动力学方面的特性。

图1.1 Maya中的FK/IK及末端效应器设置

1.1.2 简单动力学控制

与运动学研究的对象不同,动力学主要研究作用于物体的力与物体运动之间的关系,研究对象一般是运动速度远小于光速的宏观物体。人体动画研究中广泛使用的是刚体动力学,在这样的动力学系统中,人体被抽象成由关节和骨骼连接起来的机械连杆结构,通过给关节或者骨骼施加力或力矩来驱动人体运动[3]。早期的动力学控制都非常简单,主要使用一些数值方法,如牛顿—欧拉方法或拉格朗日方法计算简单的关节链或部分人体关节。事实上,对于人体这样一个靠自身肌肉来驱动的复杂自激励系统,现阶段生物力学方面的研究还未完全掌握其内在机理,并且人类对其自身运动的物理规律也没有完全获悉,纯粹依靠求解动力学方程来生成人体运动,除了计算量非常大之外,最终生成的结果与真实的人体运动也存在不小的差距。

1.1.3 运动捕获

运动捕获设备的出现及广泛应用,很大程度上解决了上述两种方法所面临的问题。通过在人体特定位置(一般是靠近关节的地方)绑定光或电磁装置,运动捕获设备能够以极高的速率记录这些标记点的位置,再通过逆向运动学算法,计算出人体各个关节的旋转角度,进而得到真实的人体运动。在这类系统中,具有代表性的是Vicon公司的Vicon Motion Systems,如图1.2和图1.3所示。一般而言,基于运动捕获数据的人体运动生成算法,得到的动画质量都非常贴近真实的人体运动,在所有方法中,这类方法的真实感是最强的。但是,这种方法也有比较明显的缺点,即所获取的运动数据只能在某些特定环境下使用,一旦应用场景发生改变,这些数据便很难被直接使用。所以,最大限度地重用已有的运动数据是基于运动捕获数据人体动画研究的一个重点。针对运动数据重用问题,研究者提出了很多不同的方法,如运动编辑、运动混合、运动连接和运动图等。

图1.2 Vicon光学摄像头

图1.3 Vicon软件界面

1.1.4 物理控制器

物理模拟或基于控制器方法用于动画生成,最早可追溯到Armstrong[4]和Wilhelms等[5]的研究,自那时起,这类方法就开始被应用于一些自然现象和织物等的模拟,如火焰、流体、服装以及早期人体动画中的“布娃娃”等。直到近些年,才出现了真正意义上使用物理控制器生成虚拟人全身运动的方法。这类方法一般由3个部分组成:物理模拟器、物理定义的虚拟人和运动控制器[6]。物理控制器方法非常复杂,涉及的参数也很多,因此,常与机器学习方法[7]或其他方法相结合来优化控制参数。与直接控制虚拟人关节运动不同,这类方法将动画的生成过程视为一个累积过程,虚拟人在虚拟环境中的所有运动都是物理模拟的直接结果,与环境之间的交互也只发生在有力和力矩产生的时候。现在较为成熟的物理控制器主要用来模拟人类的行走或跑步运动,根据它们处理问题时对象抽象层次的不同,主要分为两大类:(1)关节空间中的物理控制器方法,通常需要对每个关节使用比例微分(PD)控制器,并且这些控制器由一个高维状态机调度[3,8~12],通过模拟运动捕获数据得到的物理控制器,如图1.4所示[4],图1.4利用物理控制器并结合脚印约束实现差异化运动控制,图1.4(a)从运动捕获数据中重建转身行为,并将其应用于一个缓慢前进行走的控制器,图1.4(b)通过增加髋关节从左到右的偏移角度,从运动捕获数据中重建一个行走控制器,使虚拟人能够以对角方式前进,在PD控制器的基础上,为了消除生成结果的抖动及僵硬化现象,文献[13~15]引入最优化方法来自动调节参数;(2)任务空间中的物理控制器方法,早期这类控制器主要用于机器人手臂的运动控制[16,17],由于这类方法是基于零空间投影的,因此,很难处理单一约束。Lasa等[18]提出的基于特征的运动控制器,对上述方法进行了一定的扩展,只需要少量的特征便可以控制虚拟人平衡和末端执行器运动。

图1.4 通过模拟运动捕获数据得到的物理控制器

1.1.5 混合方法

运动捕获数据和物理模拟相结合的方法,被称为混合方法,这类方法除了能保证人体运动的真实感之外,还可以增强虚拟人对外界环境扰动的反应能力。根据这两种方法在运动生成中主导地位的不同,该类方法可以分为两种:一种以运动捕获数据为主,同时增加物理模拟过程,使虚拟人可以对外界环境的扰动产生反应[19,20],如图1.5所示[19];另外一种以物理模拟为主,将运动捕获数据作为参照,使用路径跟踪的方法来增强物理模拟结果的真实感[21,22],如图1.6所示[22],图1.6展示了结合运动捕获数据,可以构造出不同风格的物理控制器,上、下两行分别表示不同的风格。

图1.5 连续施加两次扰动外力

图1.6 风格化物理控制器