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函数 )
等节点,完成之后。会把相关文件放到网上去
节点路径
点击打开链接
看到 有个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函数 )
等节点,完成之后。会把相关文件放到网上去
节点路径
点击打开链接
相关文章推荐
- Android 众多优秀的下拉刷新
- Sublime的中文GBK显示乱码的解决方法
- mysql存储过程语法及实例
- PHP中把stdClass Object转array的几个方法
- 测试可滚动的结果
- leetcode 38. Count and Say
- "天天背单词"--的设计与实现(四)
- linux 下 apache启动、停止、重启命令
- Swift闭包详解
- 去出应用标题栏
- jaxb
- Myeclipes6.5 注册问题
- Linux进程间通信:消息队列
- lightoj 1116 - Ekka Dokka 简单数学
- A计划(广搜)
- 数据结构和算法10 之带权图
- iOS中NSAttributedString问题的一些解释
- ktime使用例子【原创】
- VB Open 函数详解 打开、关闭、读、写文件
- UIKit框架-基础控件Swift版本: 6.UITextField方法/属性详解