maya 中球体自由旋转滚动

本人刚刚学习 有错误的地方 还请大神指出


看到 有个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
球旋转后的矩阵 = Qm * Mm * M
还有一个公式能达到同样的效果 :
咱不是可以得到球体的 旋转轴 Z 位移距离并转化无弧度An
然后咱再得到球位移之前的球体的旋转值  Rotate
那么 球体位移之后的旋转就是 =    Rotate 绕 Z 转了 An
(maya 里有个对应的API函数 


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

节点路径

点击打开链接



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值