张师榕,张 振,2,3,赵转哲,2,3*,刘永明,2,3,阚延鹏
(1.安徽工程大学 机械工程学院,安徽 芜湖 241000;2.安徽工程大学 人机自然交互和高效协同技术研究中心安徽省新型研发机构,安徽 芜湖 241000;3.安徽工程大学 先进数控和伺服驱动技术安徽省重点实验室,安徽 芜湖 241000)
近年来,随着家用个人计算机(Personal Computer,PC)性能的提高以及计算机硬件的飞速发展,计算机图形(Computer Graphics,CG)逐渐进入大众视野,现已广泛应用于如三维计算机图形(3D Computer Graphics,3DCG)设计、数据可视化(Data Visualization)、电影广告和游戏视频等诸多领域。目前,我们已经可以在个人计算机上利用三维动画制作软件(如Blender、Metasequoia和MikuMikuMoving等)制作3DCG。Unity3D游戏开发平台的发布使得全尺寸3D游戏的开发进入普通家庭,为众多动画制作爱好者提供了方便。
三维人体动画是3DCG产品制作中最吸引人也是难度最高的技术之一,其制作方法大致分为使用图形用户界面(Graphical User Interface,GUI)和机器人用户界面(Robot User Interface,RUI)两种。国内外相关学者在这些领域做了大量的研究,如郭松基于Unity3D游戏开发平台,设计了一款面向广大消费者的3D虚拟试衣系统。首先利用Unity3D软件的布料系统,随后构造基本碰撞球体,重组人体力学碰撞模型,在力学仿真环境中提高了用户的真实体验度。吴铃等提出了一种利用BVH(Biovision Hierarchy)文件驱动三维人体动画的方法,在OpenGL软件中使用三维模型构建人体动画,实现了三维人体动画的模拟。Li等提出了一种根据上下文的手势生成方法,将中文手语文本翻译成虚拟动画,具有较高的准确度和可理解性,为耳聋人群获得信息和服务提供了便利。陈姝等提出了一种实时的人体三维动画方法,该方法基于H-Anim标准,首先研究了人体肢体层次结构,接着重构并计算了由Kinect获取的运动数据,最后根据关节旋转矩阵对三维虚拟人物进行驱动。结果表明,所提算法能够精确地实现人体运动的重构。彭刚等基于超声波测距技术介绍了3D输入设备的设计原理,采用渡越时间测量结合自动增益控制的方法,经过空间解析几何运算,确定输入设备在空间坐标系中的位置和姿态,根据按键所处的状态确定要实现的操作。
尽管以上方法均可以生成理想的动画序列,但通常采用GUI方法使用鼠标对3D动画模型进行调整时,其模型越复杂,需要消耗的时间也越长,动画制作效率较低;使用RUI方法虽然可以将机器人的移动输入为3D模型的运动,甚至可以复制细微的动作,但除了类人动物之外(例如动物和幻想生物)的3D模型输入难度较大,对动画制作者水平要求较高。因此,为了克服上述两种方法的弊端,研究根据人体上肢运动角度范围,开发了一种基于运动捕捉的多自由度机械臂输入设备。以Unity3D为开发平台,通过GUI和RUI两种方法对虚拟人物模型的不同动作姿势进行生成,对比两种方法耗费的时间,对该设备的有效性进行实验验证。
关键帧动画提取方法是三维动画视频生成的一种常见的基本方法。所谓关键帧动画,就是将动画中关键动作所在的那一帧指定为关键帧。关键帧是对整个动画序列的总结和概括,在相邻两个关键帧之间的部分称为中间帧或内插帧,可以采用特定的插值方法计算得到,从而使动画达到比较流畅的效果。利用该方法生成动画的过程如图1所示。由图1可知,首先指定两个关键帧frame A和frame B作为动画序列的开始状态和结束状态,由计算机在两个关键帧之间插入空白帧。通常在设置关键帧时,需要使用鼠标或键盘来对3D模型姿势进行调整来达到预期的效果。当前,关键帧提取方法主要基于聚类算法、优化算法和曲线算法三种。在内插帧则一般使用线性插补和贝塞尔曲线插补的方法,并且可以进行精准控制,如匀速运动、加速运动,从开始到结束的平稳运动或剧烈运动。
图1 关键帧动画
利用运动捕捉技术生成动画通常是将传感器放置在表演者具有运动特征的部位(例如人体关节)上,将传感器运动轨迹转化为抽象运动,使三维虚拟人物拥有同步的动画动作,从而生成预期的动画序列。目前,常见的运动捕捉技术可分为电磁式、机械式、光学式和声学式四种。采用运动捕捉方法制作动画的实施案例如图2所示。由图2可知,实施案例效果逼真流畅,还原度较高,但其运动幅度有限,如果是难度较大的动作,对于实验者要求则较高。
图2 运动捕捉技术
通常使用GUI方法生成关键帧动画时,需要通过使用鼠标或键盘等调整虚拟人物的动作来生成理想的动画序列,对操作者熟练度和专业性要求较高。使用RUI方法生成动画序列时,用户将机器人作为动作姿势的输入设备与计算机端3D动画模型实时同步,通过改变机器人的状态生成理想的动画序列,RUI方法示意图如图3所示。
图3 RUI方法示意图
研究根据人体手臂关节实际运动角度范围,开发了一种可以与3D模型同步运动的多自由度机械臂作为动画制作的输入设备,其三维模型及实物图分别如图4所示。在三维模型中,分别在肩部和腕部设有2个自由度,肘部设有1个自由度。在图4a中,①代表电机,安装在模型的端口及关节处,为设备的正常工作提供必要的动力;②代表模型骨架,用于模拟人体手臂骨骼并固定电机及传感设备。另外,由于角速度传感器或角度传感器仅能检测当前角速度或角度,而加速度传感器可以检测到相对于地面的角度,因此研究采用加速度传感器作为数据输入。在图4b中,电机选用Tower Pro Pte Ltd公司的微型电机SG-90,骨架使用ABS树脂材料通过3D打印进行制造,加速度传感器型号选用KXR94-2050。在机械臂伸展状态下,其总长度约为275 mm,最大宽度约为90 mm,总重量约为115 g。
图4 设备模型及实物图
Unity3D是一个实时3D互动开发平台,具有Unity Technologies公司开发的以Java、C#或C++作为脚本语言的内置集成开发环境。研究以Unity3D为平台,以其提供的虚拟人物模型为实验样本,对虚拟人物的动作姿势进行生成。该虚拟人物模型的皮肤形状和骨骼信息如图5所示。
图5 虚拟人物模型
与人体手臂关节类似,机械臂的关节同样存在一定的运动范围。研究参考日本康复医学会提供的人体关节运动角度范围和测量方法,比较了人体上肢关节参考运动角度范围和该机械臂输入设备的运动角度范围,如表1所示。
表1 人体关节与机械臂运动角度范围比较
虚拟人物模型初始及预生成姿势如图6、图7所示。在设置3D虚拟人物模型的初始姿势(见图6a)后,根据人体上肢的基本运动形式,选取了人体上肢常见的5种动作姿势作为预生成姿势(见图6b~图6c、图7a~图7c)。实验者分别使用RUI和GUI两种方法对5种动作进行生成,分别记录花费的时间并对比,步骤如下:
(1)受试者用3 min来熟悉实验设备和操作流程。
(2)受试者根据给定的姿势b,使用机械臂输入设备进行动作的生成。
(3)在完成姿势b的同时,受试者可查看姿势c的动作。随后,使用同样的方法在动作b的基础上进行动作c的生成。
(4)重复上述(1)到(3)的步骤,直至5个预生成姿势全部完成,统计时间并记录。
(5)受试者使用GUI的方法,进行上述(1)到(4)的步骤并计时。
实验邀请5位受试者(分别记为A,B,C,D和E)进行试验,记录其Unity3D使用经验的有无,实验结果如表2所示。其中,“生成每个姿势所需时间”下方的箭头表示两种动作的转变。由表2可知,相较于GUI方法中鼠标操作生成规定动作姿势,使用研究设计的多自由度机械臂输入设备完成以上5种相同动作所需时间均有不同程度的缩短,分别为使用GUI方法的0.52倍、0.6倍、0.38倍、0.22倍和0.47倍;另外,对于从未使用过Unity3D软件的受试者D和E,使用该机械臂输入设备花费的时间明显较短,这表明对于普通用户而言,使用该机械臂输入设备完成指定的动画序列更为简单便捷,效果更为直观。
表2 实验结果对比
图6 虚拟人物模型初始及预生成姿势(a~c)
图7 虚拟人物模型预生成姿势(d~f)
研究根据人体上肢运动角度范围,设计了一种基于运动捕捉的多自由度机械臂输入设备,通过GUI和RUI两种方法生成5种相同的动作姿势,对两种方法花费的时间进行了对比。结果表明,使用该机械臂输入设备对于规定动作的生成更为迅速和便捷,这一结果在没有Unity3D使用经验的受试者身上更为显著。该机械臂输入设备的成功应用为动画制作领域的研究提供了一个较好的案例,同时也可将该方案应用于康复训练、游戏开发和影视动画等领域。