3dmax使用MAXScript調整對象的軸位置

        在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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章