完美动力首页 > 技术分享 >
干货||Maya角色特效之变形化身效果
在系列电影《X战警(X-Men)》中,有一名角色让人过目难忘,印象深刻,那就是魔形女(Mystique)。她是一名变种人,可以改变自身细胞和组织结构,使得她可以变化成任何人的样子,包括虹膜、指纹、皮肤纹理、声音甚至性别;身上的穿着也可以模仿任意服饰的质感,甚至眼镜。当然,我们都知道这是三维特效制作出来的,属于角色特效。现实生活中并不存在这样的变种人。从电影特效艺术的角度来看,每当魔形女变形化身时,昙花一现的变身过程,惊艳了观众的双眼。这就是电影特效艺术的魅力!


现在,我们向经典致敬!在三维动画软件Maya中,制作一个相似的角色特效动画效果。与电影《X战警》中的魔形女变形化身效果相似,但又有所不同。电影《X战警》中的魔形女变形化身效果,实际上是表面翻皮动画效果。在翻皮的过程中,从一种角色造型变换成另一种角色造型。而我们要做的变形化身效果,是角色表面以针刺状凸起再回落。在这一起一落之间,从一种角色造型变换成另一种角色造型。


在Maya平台下,首先我们准备好两个角色模型。这两个角色模型,要造型不同,但是要拓扑结构相同。通俗来讲,两个角色模型的体积造型不同,但是它们的表面结构(顶点、棱边、组成面)和表面UV坐标相同。在准备角色模型时,注意到上述问题,可以方便地制作出角色从一种造型变换成另一种造型。如果两个角色模型,造型不同,拓扑结构也不相同,那么从一种造型变换成另一种造型时容易出错。因此,在准备两个角色模型时,应该要注意该问题。



这两个完整角色模型是两个组。在大纲视图中,将这两个组展开,将两个组中除人头以外的其他元素全部选择,将这些元素隐藏。只留下两个人头模型。


在Maya建模模块下,选择这两个人头模型,执行菜单命令“网格->平滑”以这种方式,增加模型的面数,让这两个人头模型更加平滑,更加精细。这有利于后续特效动画的制作。然后对这两个人头模型删除历史。



在大纲视图中,选择两个组。将两个组的位置放回到世界中心。然后选择第一个组(变形后的造型),将其隐藏。第二个组(变形前的造型)依然显示。这样,我们就可以做变形化身的角色特效动画了。


在Maya绑定模块下,选择第一个组中变形后的人头模型,加选第二个组中变形前的人头模型,执行菜单命令“变形->融合变形”。这样就给第二个组中变形前的人头模型添加了一个融合变形器。该变形器是blend1。


选择第二个组中变形前的人头模型。在该模型的变换通道栏中,找到变形器blend1的形状节点blendShape1面板,对融合变形的权重值做关键帧动画。在第24帧(第1秒),该融合变形的权重值为0。在第72帧(第3秒),该融合变形的权重值为1。

在大纲视图中,将第二个组中变形前的两个眼睛模型显示出来。按照上述同样的制作方法制作两只眼睛的变形动画。

选择第一个组中变形后的左眼模型,加选第二个组中变形前的左眼模型,执行菜单命令“变形->融合变形”。这样就给第二个组中变形前的左眼模型添加了一个融合变形器。该变形器是blend2。

选择第二个组中变形前的左眼模型。在该模型的变换通道栏中,找到变形器blend2的形状节点blendShape2面板,对融合变形的权重值做关键帧动画。在第24帧(第1秒),该融合变形的权重值为0。在第72帧(第3秒),该融合变形的权重值为1。

选择第一个组中变形后的右眼模型,加选第二个组中变形前的右眼模型,执行菜单命令“变形->融合变形”。这样就给第二个组中变形前的右眼模型添加了一个融合变形器。该变形器是blend3。

选择第二个组中变形前的右眼模型。在该模型的变换通道栏中,找到变形器blend3的形状节点blendShape3面板,对融合变形的权重值做关键帧动画。在第24帧(第1秒),该融合变形的权重值为0。在第72帧(第3秒),该融合变形的权重值为1。

将以上操作步骤做好后,在Maya下播放动画,我们可以看到一个人头变形动画就做好了。在这之后,我们就可以制作角色表面以针刺状凸起再回落的动画效果了。

回到起始帧。在场景视图中,选择人头模型。点击鼠标右键,在右键菜单中执行面编辑模式。让人头模型进入面编辑模式。

打开Maya脚本编辑器,我们可以看到该窗口分为上下两栏。上栏为信息反馈栏,下栏为脚本程序的编辑区。我们在Maya下所做的操作,在信息反馈栏中都有对应的操作程序反馈。我们可以在信息反馈栏中提取想要的操作程序,复制粘贴到脚本程序的编辑区,可以保持原样,也可以调整修改。以此来使用这些脚本程序,为我们的制作服务。

接下来,我们要在脚本编辑器的信息反馈栏中提取想要的操作程序。该信息反馈栏中反馈回来的操作程序比较多,查找起来不方便。为了方便查找相应的脚本程序,我们先将信息反馈栏清空。当你再执行相应操作时,在脚本编辑器的信息反馈栏中只会看到当前的操作对应的程序。这样,我们查找起来比较方便。

在场景视图中,选择人头模型的所有面。这样,就会在脚本编辑器的信息反馈栏中出现一句程序:select -r skin_b.f[0:22983];这句程序就是刚才在场景视图中选择人头模型的所有面对应的程序。后续操作要用到这一句程序,因此将它复制粘贴到脚本程序的编辑区。


在Maya建模模块下,选择人头模型,执行菜单命令“编辑网格->挤出”。

在人头模型的变换通道栏中,找到挤出操作polyExtrudeFace1面板。在该面板中,将保持面的连接性设置为禁用,将局部比例设置为0.1。这样,我们在场景视图中可以看到,模型的每个面挤出后向各自的中心收缩。如果收缩后沿每个面的法线方向凸起,就可以形成针刺状的空间造型。


在场景视图中,选择人头模型。点击鼠标右键,在右键菜单中执行面编辑模式。让人头模型进入面编辑模式。

在脚本编辑器中,将刚才提取出来的程序“select-r skin_b.f[0:22983];”执行一次。具体操作方法是,在脚本程序的编辑区选择这句程序,执行快捷键Ctrl+回车键。这样,就可以将这句程序执行一次。

程序“select -rskin_b.f[0:22983];”执行之后,回到场景视图中。我们可以看到,人头模型上,所有向各自中心收缩的面将被选择。也就是说,做完建模中的挤出操作后,可以通过这一句脚本程序选择挤出前的所有面。这是一种快捷操作。

在Maya绑定模块下,当人头模型上挤出前的所有面都被选择时,执行菜单命令“变形->纹理”。我们给所有选中的面添加了一个纹理变形器。该变形器是textureDeformer1。

在场景视图中,点击鼠标右键,在右键菜单中执行对象模式。让人头模型回到物体编辑模式。

在大纲视图中,选择纹理变形器textureDeformer1。

在纹理变形器textureDeformer1的属性通道栏中,在纹理变形器属性面板下,将方向设置为法线。这样,收缩后的每个面沿法线方向凸起,就可以形成针刺状的空间造型。在纹理上关联2D纹理中的噪波纹理。该噪波纹理是noise1。这样,就可以用噪波纹理来实现针刺状空间造型的随机起伏。


在纹理变形器textureDeformer1的属性通道栏中,在纹理变形器属性面板下,将强度设置为12。这样,针刺状空间造型的凸起效果会比较明显。

选择噪波纹理noise1。在噪波纹理的属性通道栏中,在效果属性面板下,勾选反转。让噪波纹理noise1黑白反转,这样得到的效果会好一些。

在噪波纹理noise1的属性通道栏中,在噪波属性面板下,将频率设置为3。这样,针刺状空间造型的凸起效果不会让人感到过于琐碎。

在噪波纹理noise1的属性通道栏中,在噪波属性面板下,对阈值属性做关键帧动画。在第24帧(第1秒),阈值为1。在第48帧(第2秒),阈值为0。在第72帧(第3秒),阈值为1。

在噪波纹理noise1的属性通道栏中,在噪波属性面板下,对时间属性创建表达式。具体操作是,在时间属性上,点击鼠标右键,在弹出的右键菜单中,执行创建新表达式。

在打开的表达式编辑器中,写入如下表达式:noise1.time=time;该表达式所起的作用是,在播放动画时,让噪波纹理noise1的时间属性随时间的改变而改变。这样,播放动画时,噪波纹理将发生随机变化,从而针刺状空间造型在人头模型的表面上呈现出随时间变化而随机凸起回落的动画效果。

对噪波纹理noise1的时间属性创建表达式后,我们可以看到,噪波纹理noise1的时间属性对话框将呈现紫色。也就是说,在Maya下,某一节点的某一属性呈现紫色,说明该节点的该属性上写过表达式。

当把上述操作都完成以后,播放动画,就可以看到我们想要的角色特效动画效果了。这样,我们就实现了与电影《X战警》中的魔形女变形化身效果相似的角色特效,但又与电影中的变形化身效果有所不同。这是我们的原创角色特效动画效果。以此,向经典致敬!