在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