欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

3dmax使用MAXScript调整对象的轴位置

程序员文章站 2022-07-12 18:36:19
...

        在3DMAX中可以通过层次(Hierarchy)面板调整轴的位置,也就是对象的局部坐标系原点,如下图所示
3dmax使用MAXScript调整对象的轴位置
       但是当物体很多而且移动的位置又是物体的顶部底部等位置时,使用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编辑器中将上面所有功能都放到一个界面中
3dmax使用MAXScript调整对象的轴位置
       另存为ms,运行后可以看到如下界面,点击相应的按钮即可
3dmax使用MAXScript调整对象的轴位置
       如果没有出错,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

 

相关标签: 3DMAX