摘 要: 在三维动画制作软件中,传统的人工调整虚拟人动作的工作方式已经不再适合现在的计算机动画制作。针对这一问题,提出了一种采用Maya脚本语言编程来实现人物动画控制的用户界面,在该界面中,动画师可以通过选择按钮移动滑块进行关键帧的设置,从而产生骨架的运动,形成动画。该方法可以提供对制作人物特征有用的工具,使得人物动画的制作更简单。
关键词: Maya;MEL语言;人体建模;虚拟士兵动画
计算机三维动画技术是指使用计算机技术自动或半自动地生成动画的技术,它是计算机图形学与艺术相结合的产物。随着计算机硬件技术的快速发展和对计算机图形学理论的深入研究,三维动画技术已取得长足的进步,动画师可以借助计算机创作出具有高度真实感的虚拟场景和数字化人物。三维动画技术在工业、娱乐、旅游开发、军事等多种领域前景广阔。尤其是对于文物、遗迹在长期的保存过程中,无法避免自然消亡、磨损,利用数字化技术来模拟,可以避免人直接接触文物,对文物遗址也起到一个很好的保护和传播作用。
目前,国内外很多科研机构及公司利用自己的三维虚拟人运动及显示技术开发了一些非常实用的系统, 如美国宾夕法尼亚大学设计的JACK[1],英国诺丁汉大学设计的Sammie[2]等。这些系统都有自己的显示及控制虚拟人运动的方法, 也取得了比较好的效果,但在虚拟人的几何外形表示和显示方面还存在很多不足。本文借助Maya的脚本语言MEL表达式编程来实现人物运动的控制界面,使得动画的制作简单又自动化。
1 基于MEL的骨骼动画控制界面设计
1.1 建立虚拟士兵模型
国际上的虚拟人体建模方法主要有棒模型、表面模型和体模型3种[3],本文采用目前主流的表面模型建模方法。表面模型将人体分成骨架与皮肤, 皮肤位于骨架层之上。这一分层建模方法符合人体拓扑结构, 可以更精确地表达人体的信息。
Maya软件是目前最强大的整合3D建模、动画、效果和渲染的制作软件之一。它广泛地应用在电影、电视、广告、电脑游戏和电视游戏等的数位特效创作, 尤其是在角色动画的制作中。在Maya中建好的模型如图1所示。
1.3 用户控制界面的实现
Maya的MEL脚本语言是Maya提供给用户的一种嵌入式脚本语言,使用MEL语言,用户可以访问Maya自身的更多属性,灵活地执行更多Maya界面中提供给用户的菜单命令,甚至可以使用MEL提供给用户的界面编写功能来编写用户自己的小插件和菜单栏等。
1.3.1 载入绑定好的模型场景
模型已经装配有骨骼和皮肤,此骨架只是用来摆放模型的关节点。在透视面板中隐藏多边形模型,只单独查看关节点、IK句柄和定位器。这里关键是模型的脊柱控制,因为脊柱的骨骼节点比较多,容易变形。为了给模型添加一些定制属性,在脚本编辑器中执行以下命令,在属性编辑器中就可以看到图4所示的属性。
其生成代码如下:
m_backRoot.rotateY=(l_foot.translateY*2)
-(r_foot.translateY*2);
m_backRoot.translateX=(-l_foot.translateY/4)
-(-r_foot.translateY/4);
第1条命令是当右脚r_foot在Y轴方向移动时,表达式将每只脚在Y轴上的平移量乘以2,然后将所得的结果相减,以决定沿着Y轴旋转关节点的程度。第2条命令是将r_foot和l_foot在Y轴方向上平移量的负值除以4,并将左脚减去右脚作为将脊柱平移开较高的那只脚的量。
1.3.3 创建控制人物动画的用户界面
本文创建人物动画控制用户界面包括以下几个部分:
(1)创建视窗,使用下面的命令:
window-w 450-h 500-title "mrBlah Controls;
showWindow mrBlahControls;
其中,第1条命令是为该窗口创建框架和标题,最后一条命令为启动该窗口。可以看到场景中生成了一个空的视窗。
(2)创建滑轨控制器,使用下面的命令:
floatSliderButtonGrp-label "Twist"-field true-buttonLabel "Key"-buttonCommand "select -r spineCtrl;-minValue-20.0 -maxValue 20.0
-value 0.0 Twist;
其中,floatSliderButtonGrp创建控制一个浮点数值的滑块,-field true标记提供一个与之关联的文本框,Value表示的是滑块的最小值与最大值。
(3)创建横向和纵向布局,使用下面的命令:
columnLayout-rs 距离数 布局名;rowLayout-rs 距离数 布局名;
其中,columnLayout命令在窗口中将很多控件从上到下进行排列,rowLayout命令在窗口中将控件从左向右进行排列。
经过以上命令,就创建了一个滑块控件,其效果图如图7所示。
(4)创建按钮,使用下面的命令:
button-w 参数-h 参数-l “按钮名” 按钮变量名;
本文中创建的按钮有Right arm、Left arm、Waist、Right foot和Left foot。在布局了以上的界面之后,最重要的就是把人物的骨骼控制器与按钮和滑块结合起来,从而实现允许用户对窗口中所选择的定位器进行关键帧的设置。
2 仿真实验结果与分析
本文选用Maya软件进行实验,采用其脚本语言MEL编程实现了人物动画控制界面。图8是人物的初始状态,没有对其进行关键帧设置。其中,控制界面中的按钮HiRes是平滑显示覆盖于关节点上的模型,这里没有加入头部信息;LoRes是粗糙显示覆盖于关节点上的多边形小块,并显示关节点本身;Joints是仅显示关节点。在实验中为了操作方便,采用仅显示关节点的模型。图9是人物骨骼节点发生变化的情况,可以看出,在选择了某一个需要的按钮之后,滑动上面的滑块,骨骼就会发生变化,这样动画师实现对动作进行关键帧的设置就比较直观而且容易了。
计算机动画是计算机图形学领域的一个重要方向, 本文结合专业动画软件Maya对虚拟人动画进行了研究。采用MEL语言表达式生成了可以控制虚拟人动画的用户界面,同时完成了人物骨骼的连接,从而简化了动画制作过程。但是在文章中没有添加士兵头部的动作表情,因此更加逼真的动画效果有待进一步研究。
参考文献
[1] BADLER N I, PHILLIPS C B, WEBBER B L. Simulating humans: computer graphics, animation, and control[M]. London: Oxford University Press, 1999.
[2] KINGSLEY E C, SCHOFIELD N A, CASE K. SAMMIE- a computer aid for man-machine modeling[J]. Computer Graphics, 1981,15(3):163-169.
[3] 王兆其.虚拟人合成研究综述[J].中国科学院研究生院学报, 2000,17(2):89-98.
[4] 罗汉.Maya MEL动画编程从入门到精通[M].北京:兵器工业出版社,2005.
[5] WILKINS M R, KAZMIER C, OSTERBURG S. MAYA动画师MEL脚本编程全攻略[M].唐俊东,王东安,译.北京:电子工业出版社,2004.
[6] 姚俊峰.三维动漫游戏人物角色仿真技术[M].北京:科学技术出版社,2009.