您的位置:首页 > 其它

maya 中球体自由旋转滚动

2016-04-13 15:42 155 查看
本人刚刚学习 有错误的地方 还请大神指出

看到 有个MakeRoll 节点 。用来处理球体自由滚动,于是自己根据那个节点的参数重新写了一个这样功能的节点。当然啦,没那老外的算法好。

我勉勉强强写出了类似的功能。下面是思路。

利用maya现有的节点,是能连接出球体滚动效果的.

首先,球的旋转咱们首先想到的问题是,球是随便运动的。也就是X,Y,Z都在转。没法搞啊。所以咱就自己创建出一个坐标系来,让球在运动的时候,

只有一个轴向在转。把移动数值转化为度数传递到这个M上去

所以主要思路就是把球的自身坐标(叫做Q吧)。转换到咱们自己创建出了的坐标(叫做M吧)。然后去旋转这个M坐标,再把M坐标转换到Q上面去。

第一步 创建出M

创建M坐标。创建的M坐标的宗旨就是,始终有一个轴向和求的运动方向是一致的

比如,图中 M的X轴和运动方向重合,此时
球就以Z轴旋转。



怎么定义这个M

咱们知道了运动方向,咱们就把这个运动方向定义为X轴(X,Y,Z都可以无所谓)。

在定义向上轴,这个轴咱定义为Y,Y就是经过X,并垂直于球所在的运动平面。

知道了X,Y。差乘求出Z。Z就是旋转的轴向。

公式。

这里,需要自己创建出一个矩阵Mm,比如,上面是Z轴旋转,那么这个Mm就只有Z的信息。咱们距离转化为度数就是传给这个矩阵。

Qm = Q*M的逆 (这个就是球相对于咱创建出来的矩阵,Q相对于M旋转了多少)

球旋转后的矩阵 = Qm * Mm
* Qm的逆 * Q

还有一个公式能达到同样的效果 :

咱不是可以得到球体的旋转轴
Z和位移距离并转化无弧度An

然后咱再得到球位移之前的球体的旋转值 Rotate

那么 球体位移之后的旋转就是 = Rotate
绕 Z 转了 An

(maya 里有个对应的API函数 )

等节点,完成之后。会把相关文件放到网上去

节点路径

点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: