角色不仅要有身体上的动作,生动的脸部表情也必不可少。大多数情况下面部表情动画与身体部分的动画是分开制作的,那么如何在引擎中将不同部分的动画融合在一起进行播放呢?本文将介绍一种简单的方法实现该效果。

上图中角色的身体与面部在使用不同的骨骼动画:身体使用了一个闲置动画而面部则使用了一个眨眼睛动画,它们协同运作,尽可能的使角色贴近真实情况下的表现。

大概上个月的时候,我开始尝试在 UDK 中做出这个效果。先是找了很多网站,中文英文都试过了,却没有相应的结果,随后又翻遍了 UDN ,还是无果。之前我曾摆弄 Unity3D 调用剑灵的资源做出来过这个效果(使用脚本实现),没想到却卡在 UDK 上…在经过一段艰苦卓绝的斗争后,终于发现解决之道在于一个动画节点上。

注意:本文讲述的内容与 FaceFX 没有任何关系!

AnimNode_MultiBlendPerBone 是一个混合动画节点,位于 “过滤器(Filter)” 中,UDN 上有说明这个节点。简单点理解的话,就是这个节点可以用于在一套骨架上同时播放两个或更多的骨骼动画。

这时您可能会问了:”混合了两个动画要如何告诉模型哪个部分播放哪个动画呢?” 这里,我们需要对这个节点进行一些必要的属性设置:

Branch List 中的 Bone Name 是一个被用作蒙版的骨骼,您可以简单认为这个项是用来分割的,比如上图中我填入了 FaceRoot 表示 FaceRoot 之后的骨骼部分使用 Mask 0 分支的动画序列(B_Idle 是一个有眨眼睛效果的面部动画),另外该节点可以添加更多数量的 蒙板(Mask) 分支和 Bone Name ;

Per Bone Weight Increase 表示分配给这个骨骼的权重百分比,填入 1 表示 100% 权重,若为 0 则该蒙版无效;

Desired Weight 分配权重,1 最大,填 0 则无效化这个蒙版;

Rotation Blend Type 很重要的项,如果当您使用这个节点后导致部分或全部模型的空间位置错乱,请设置这个项,比如我在这里使用了 EBT_ParentBoneSpace 来修复模型错误。

OK 到此结束, 如果您正纠结于此, 希望本文可以为您答疑解惑.