2007年5月26日星期六

MEL笔记 2007-05-26

joint/ik旋转轴向+/- 180度的限制

如果使用ik handle来控制joint的旋转,会有一个+/-180度限制的问题。一般来说,这不是什么问题,如果通过表达式用这个旋转的角度来控制其他的物体的时候,很可能就会在某个转角出现“跳动(flip)”。
比如j1-j2是一个joint层级,j1是父,用ikhandle(sc/pr均可)来控制j1的转向。有如下表达式:
locator1.rx=j1.rx/4;

拖动ikhandle,j1的旋转不会出现跳动,但是locator1在j1旋转过某些位置(j1.rx超过180或者小于-180)的时候,就会发生跳动。

如何绕过这个问题呢?

j1-j2同上,locator1是j1-j2要指向的位置,locator2-locator3是旋转的驱动。
将j1 aim约束到locator1上,只约束y和z,在j1.rx创建如下表达式,
j1.rx=locator2.rx+locator3.rx;
这样基本上就可以了。


05年的maya master classes,starwar3的note里,介绍了一个prop工具,可以非常方便的制作手持物体的动画,可惜在没有更多的说明,除了一段屏幕录像和pdf中的2页简述,几乎不涉及任何实现。根据一些猜测和试验,现在差不多已经清楚如何实现,这个joint的问题就是在prop之后,控制手的旋转时遇到的问题之一。

没有评论: