【Maya】移动、缩放、旋转、万向节旋转、冻结(未完成)
但在计算机的世界中,想要计算物体的旋转角度是需要有一定的算法的,比如在Maya中,如果我们使用物体坐标系进行旋转,先沿着X轴旋转时物体的X通道旋转角度(Rotate X)也跟着变化,这时候如果进行第二次沿着Y轴旋转,则物体的Rotate X、Y、Z三个通道是都在变化的。两种模式一对比,我们不难发现,万向节旋转的方式更便于我们对物体进行操作。重复一下这一节开篇时对万向节旋转的描述:万向节旋转模式(G
本章目录
知识结构
快捷键
切换移动坐标轴:按住W + 按住左键 + 拖拽选中。Object:自身坐标;World:世界坐标;Axis --> Parent:轴向模式—父物体轴向(惯性坐标)。
切换缩放坐标轴:按住R + 按住左键 + 拖拽选中。Object:自身坐标;World:世界坐标。
切换旋转坐标轴:按住E + 按住左键 + 拖拽选中。Object:自身坐标;World:世界坐标。
修改万向轴轴向顺序:选中物体后按Ctrl + A,选择Attribute Editor选项卡,选择当前选中对象的名称(例:pCube1)选项卡,下拉选择Rotate Order。
位移
改变坐标系
方式1:双击按钮1,点选下拉菜单2,选中自己需要的模式。
方式2:使用快捷键:按住W + 按住左键 + 拖拽选中:切换移动坐标轴。Object:自身坐标;World:世界坐标;Axis --> Parent:轴向模式—父物体轴向(惯性坐标)。
注意: 在 Maya 2015 和早期版本中,“父对象”(Parent)模式称为“Local”(局部)模式。
不同坐标系的区别
当物体沿世界坐标的某个轴移动时,其坐标只有当前选中的轴有变化。当物体沿物体坐标的某个轴移动时,其坐标则可能X、Y、Z同时在动(物体坐标与世界坐标不一致的情况下)。
归零的区别
世界坐标下归零,物体回到世界原点。物体坐标下归零,物体回到父物体原点(没有父物体则回到世界原点)。
子物体沿父物体坐标轴移动(惯性坐标)
选中子物体,按住W + 按住左键 + 拖拽选中Axis + 继续拖拽选中Parent,这时移动就是沿着父物体的坐标轴移动了。
缩放
改变坐标系
切换缩放坐标轴:按住R + 按住左键 + 拖拽选中。Object:自身坐标;World:世界坐标。Axis --> Parent:轴向模式—父物体轴向(惯性坐标)。
使用对象坐标进行缩放
当物体在世界坐标下缩放时会弹出警告(Warning: Non object-space scale baked onto components),并且缩放通道栏不会记录缩放的数据,特别是当物体的坐标与世界坐标不一致的情况下。建议进行物体缩放操作时使用物体本身的坐标系,不要去使用世界坐标系。
旋转
改变坐标系
按住E + 按住左键 + 拖拽选中**:**切换旋转坐标轴。Object:自身坐标;World:世界坐标。
世界坐标旋转
完全沿着世界坐标轴做旋转。
物体坐标旋转
沿着物体自身坐标轴旋转。
【重点】万向节旋转(Gimbal)
万向节本身应该是旋转的一部分,但由于这部分内容比较难于理解,所以单独提出来详细的解释一下。
万向节旋转模式(Gimbal)的旋转方式是完全按照通道栏的X、Y、Z轴进行旋转的,与物体坐标旋转的最大区别是万向节旋转沿某个轴旋转时其他轴的数据不会改变。
为什么会有万向节这种东西
刚开始了解到万向节旋转时我也是一头雾水,既然这个旋转方式会产生轴向的锁定,那为什么还要有这种方式呢?直接用对象旋转不香吗?
其实,万向节这种旋转方式之所以存在,是为了方便我们去计算数据。举个例子,当我们在现实中拿着一个苹果,将这个苹果转到另外一个角度时,我们只需要关注苹果的某一个面朝向哪个方向就可以了。但在计算机的世界中,想要计算物体的旋转角度是需要有一定的算法的,比如在Maya中,如果我们使用物体坐标系进行旋转,先沿着X轴旋转时物体的X通道旋转角度(Rotate X)也跟着变化,这时候如果进行第二次沿着Y轴旋转,则物体的Rotate X、Y、Z三个通道是都在变化的。显然,这样的方式我们是无法直观的通过改变数据来进行旋转的,为了便于应用,就有了严格按照通道数据进行旋转的万向节旋转。
实例解释
下面对物体坐标旋转模式(Object)和万向节旋转模式(Gimbal)进行对比,看看有什么区别。
物体坐标旋转:
在Maya中创建一个物体,将旋转模式调整为物体坐标(Object),此时旋转通道值(Rotate X、Y、Z)都是0。
将物体沿Y轴旋转,此时旋转通道Y(Rotate Y)的值改变了。
将物体沿Z轴旋转,此时所有旋转通道值(Rotate X、Y、Z)都做了改变。
问题出现了,现在我是通过Maya用鼠标进行拖拽实现了物体的旋转,如果我想通过设置通道参数(Rotate X、Y、Z)的方式进行旋转,我该如何设置呢?按照上面的物体坐标(Object)旋转模式来看,很可能我只是想要一个简单的左转就要同时修改三个参数,并且还要通过复杂的计算才能获得这三个数的值,这明显是不利于开发的。而万向节旋转则帮我们解决了这个问题,请看下面的例子。
万向节旋转:
还是那个物体,将旋转模式调整为万向节坐标(Gimbal),此时旋转通道值(Rotate X、Y、Z)都是0。
将物体沿Y轴旋转,此时旋转通道Y(Rotate Y)的值改变了,并且我们发现,物体上X轴和Z轴的夹角也跟着改变了。
将物体沿Z轴旋转,此时只有Rotate Z的值改变了。
重复一下这一节开篇时对万向节旋转的描述:万向节旋转模式(Gimbal)的旋转方式是完全按照通道栏的X、Y、Z轴进行旋转的,与物体坐标旋转的最大区别是万向节旋转沿某个轴旋转时其他轴的数据不会改变。
两种模式一对比,我们不难发现,万向节旋转的方式更便于我们对物体进行操作。其实旋转有很多种方式,但是多数都不便于开发者通过改通道数据(Rotate X、Y、Z)的方式进行操作,所以才需要有万向节旋转。
Maya中计算旋转的方式是基于空间向量的,可能是叉乘,可能是欧拉角或者四元数之类的计算方式,具体的实现方式我们不用过分纠结,只需要知道万向节旋转这种方式是为了让数据更直观,更便于用代码操作运动。
这么看起来感觉万向节旋转很好啊,但实际上,万向节旋转还存在一个万向节死锁的问题,具体细节请参考我的另外一篇文章【Unity】Unity 欧拉角、四元数、万向节死锁
切换万向轴模式
选中物体后按Ctrl + A,选择下图选项卡,其中的Rotate Order参数就是用于修改万向轴旋转的轴向顺序。
冻结
通过冻结命令可以将物体的通道在不改变当前位置及形变的情况下重置为0。
更多内容请查看总目录【Maya】Maya学习笔记目录整理
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)