Maya 中 IK 控制器与骨骼分离的问题

最近收到一位同学发来的视频,描述了在 Maya 里如果将 IK 控制器拉远,会产生与所控制的骨骼分离的现象,而 Maya 的 FullBody IK (以下简称 FBIK)则不会有这样的问题,想知道这种问题是怎么产生的,并且应该怎么处理
我把给他的回信也贴这里,方便其他有需要的同学查阅

一,问题的根源:
这一现象是由 Maya 的底层机制所限制造成的。
首先明确一个知识点,就是 Maya 也是跟游戏里一样,有的概念,每一帧内都会把所需的计算都做一遍,然后再绘制到屏幕上。每一个事件都会触发一次帧计算,你拖动场景中的物体时,也会触发帧计算。
明白这一点后,剩下的就好理解了,如果有简单编程经验,应该知道程序执行是有顺序逐个语句进行的,Maya 计算也是这样,首先会根据父子关系,约束等等条件把要计算的物体排序,然后根据优先级逐个物体更新。具体到 IK 控制器上,就是先计算控制器的位置,然后根据控制器的位置来确定骨骼的角度。
但是,每个物体每帧只会计算一次
按照这个次序,在计算控制器位置的时候,骨骼末端的位置是未知的,只有骨骼角度计算完毕后,才能知道骨骼末端的位置,但此时由于控制器位置已经计算过了,所以不会再一次计算,也就产生了控制器和骨骼脱离的效果。

 
二,FBIK:
 
FBIK是一个插件性质的功能,而且由于是 autodesk 自家的,所以在整合 FBIK 到 Maya 的过程中他们很可能调整了许多 Maya 底层的逻辑,来实现控制器始终连在手上的效果,但逻辑上也不难理解,根据上面的解释,只要在计算完IK骨骼,确定了末端骨骼位置后,再更新一次控制器位置,就能实现这个功能。当然还需要做额外处理以避免控制器发生抖动。
三,能否在 Maya 默认逻辑内解决?
 
很遗憾,不能。
如果强制用某些表达式或约束来把控制器和骨骼末端位置绑定,Maya 会提示发生循环检测错误,即不能让 A跟着B走的同时,让B跟着A走,这是个悖论。即使通过某些手段实现了,也会发现只要一拖动控制器,骨骼就会乱抖,完全无法用于生产。
四,应该如何对待这个问题
直接忽略这个问题就好了,据我所知没有人因为 IK 控制会跟手臂分离这个问题而造成严重困扰,而且目前也没看到有哪个绑定工具在 Maya 默认框架内解决了这个问题,所以更简单的理解是大家并不在意它。
最后,个人学习 Maya 绑定知识是有必要的,但在当今的生产流程中,并不建议在缺乏专业团队支持的情况下,使用自定义的人型角色绑定,理由是自己手工做的绑定往往耗时耗力,还会有疏漏,而且动画导出导入,骨骼调整后的动作重新适配等等也存在很多暗坑,很容易产生重复劳动。
对于小团队,建议的解决方案是使用现成的绑定套件工具,如 Unreal4 引擎附带的 ARTv1 工具等,以提高效率。
另外如题图,ARTv1 的角色 IK 也会有这个现象,所以,不要太在意这个问题啦

《Maya 中 IK 控制器与骨骼分离的问题》有一个想法

发表评论

邮箱地址不会被公开。 必填项已用*标注