3dmax使用MAXScript调整对象的轴位置
程序员文章站
2022-07-12 18:36:19
...
在3DMAX中可以通过层次(Hierarchy)面板调整轴的位置,也就是对象的局部坐标系原点,如下图所示
但是当物体很多而且移动的位置又是物体的顶部底部等位置时,使用Maxscript脚本来修改就方便很多。例如将轴对齐到物体的中心,可以使用下列的脚本实现
for obj in selection do
(
obj.pivot=obj.center
)
新建一个ms脚本文件输入上面内容,在MAXScript菜单下运行这个脚本就可以看到所有对象的轴都移到了物体的中心。上面代码selection表示选中的所有物体,如果是对场景中的全部物体(包括不被选中的物体)进行调整只要将selection改成objects,obj.pivot是调整对象的轴位置,调整对象的世界位置则用obj.pos
通过修改obj.pivot的z值还可以将轴对齐到物体的底部和顶部,当然还可以调整x和y值随意移动轴位置。
对齐到底部
for obj in selection do
(
center = obj.center
center.z = obj.min.z
obj.pivot = center
)
对齐到顶部
for obj in selection do
(
center = obj.center
center.z = obj.max.z
obj.pivot = center
)
另一个使用比较多的是将所有对象的轴移到世界原点,这样导入到其他软件后他们的相对位置就不会发生变化
for obj in selection do
obj.pivot=[0,0,0]
为了方便操作,在可视化MAXScript编辑器中将上面所有功能都放到一个界面中
另存为ms,运行后可以看到如下界面,点击相应的按钮即可
如果没有出错,ms文件内容应该类似下面这样,记得加上最后一句createDialog AdjustAxisRollout,不然显示不出对话框
rollout AdjustAxisRollout "调整对象" width:162 height:200
(
groupBox grp1 "调整轴" pos:[12,20] width:129 height:147
button btnObjectCenter "对象中心" pos:[20,40] width:108 height:22
button btnObjectBottom "对象底部" pos:[20,70] width:108 height:22
button btnObjectTop "对象顶部" pos:[20,100] width:108 height:22
button btnWorldCenter "世界原点" pos:[20,130] width:108 height:22
on btnObjectCenter pressed do
(
for obj in selection do
(
obj.pivot=obj.center
)
)
on btnObjectBottom pressed do
(
for obj in selection do
(
center = obj.center
center.z = obj.min.z
obj.pivot = center
)
)
on btnObjectTop pressed do
(
for obj in selection do
(
center = obj.center
center.z = obj.max.z
obj.pivot = center
)
)
on btnWorldCenter pressed do
(
for obj in selection do
obj.pivot=[0,0,0]
)
)
createDialog AdjustAxisRollout