[Maya]修改坐标轴原点
keywords: Maya, modify pivot center, change axis center, move pivot, Match Pivots
方式一:Insert 或者 D
默认坐标轴原点在模型底部的正中间位置,
如果想改变坐标轴原点位置,先把物体挪开,然后再按下insert键或者D键:
此时就可以移动坐标轴:
确定好新的坐标世界坐标原点后,再按一次insert键或者D键,即可完成修改。
修改坐标轴位置或者朝向,需要启用Bake Pivot Orientation(Modify -> Transformation Tools -> Move Tool,或者Modify -> Bake Pivot -> Orientation),表示对坐标轴的修改是否继承到子节点(transform也是子节点的一种)。否则每当修改物体的位置或者朝向后,坐标轴又会被重置。


- 移动坐标轴时,希望一个网格一个网格的移动,而不是随意距离拖动,点击Snap to Grids(快捷键:按住X键不放);
- 也可以按住V键来吸附模型顶点或者关节joint;
- 转向时按住J键来以固定角度间隔旋转坐标轴;

方式二:Reset Transformation
先将物体移动后,先执行:Modify -》 Freeze Transformations,再执行:Modify -》 Reset Transformations。
执行后坐标轴原点就会自动变为初始时的位置。
其中:
- Freeze Transformations: 用于将translation和rotation归零,将scale归一。同时将坐标轴轴向设置成父节点相同的轴向,若没有父节点就将轴向设置成世界坐标系的轴向。
- Reset Transformations: 将坐标轴设置到父节点的坐标原点,若没有父节点就设置到世界坐标系原点。
Reset Transformation注意事项
Reset Transformations之所以能让坐标轴原点归零,是因为重置了物体Pivots下的Local Space和World Space。
在模型绑定(Rigging)时,有个常见错误:控制器和关节的坐标和转向我明明归零了,为什么当用控制器的OffsetParentMatrix驱动关节时,关节还是会形变扭曲?
原因要么是轴心没有Match Pivots,要么是之前修改过控制器轴心,导致Pivots的Local Space和World Space没有归零。
如果物体有父节点,则Reset Transformation会将轴心设置到父节点轴心位置,且轴向也改成相同。
方式三:Match Pivots
Q: 方式二中提到,Reset Transformations可将子节点的坐标轴改成与父节点坐标轴一致。但是,如果场景中的两个节点没有继承关系,但又想将A节点的坐标轴位置和朝向,设置成与B节点相同,如何设置?
A: Match Pivots
案例场景:
在动画绑定中,将一个控制器的坐标轴朝向设置为与目标关节的朝向,是一个常见操作,但是控制器和目标关节没有继承关系。如下图所示:左边为关节坐标轴,右边为控制器坐标轴。
先选中控制器,再选中关节,Modify -> Match Transformations -> Math Pivots,并勾选Orientation。
另外一个案例场景是全息影像动画,比如一台F1赛车模型,由数千个零部件组成,这些零件的坐标轴朝向要统一且坐标轴原点位置也要相同。
执行Match Pivots时如果不勾选Rotate,只勾选Orientation,则表示只匹配坐标轴朝向,不改变坐标轴原点位置。
注意:
1,执行Match Pivots之前,一定要对控制器执行Freeze Transformations,并且执行Delete History (Alt + Shift + D),最后再执行Match Pivots,否则控制器会出现偏移或旋转问题。
2,修改了坐标轴朝向之后,一般需要再执行Offset Parent Matrix,否则旋转并不会按照修改后的轴向旋转。比如你修改Rotate X,预期物体沿着X轴旋转,实际却沿着Y轴旋转。
方式四:Match Translation

Match Translation并不是修改坐标轴原点,而是用来匹配不同物体的坐标位置。
比如下面这种情况:想要将平面移到正方体的位置,但无法用上述方式一的方法,因为没有可以吸附的点或网格。
而且因为正方体继承在group下,想手动输入translate,将平面坐标改成与正方体一致,也行不通,因为正方体的坐标系是局部坐标系。
解决办法:Modify -> Match Transformations ->Match Translation.
方式五:Scaling反向

坐标轴相对物体居中

参考
官方文档:Change the pivot point - help.autodesk.com
庭院深深深几许?杨柳堆烟,帘幕无重数。---欧阳修《蝶恋花》