星期三, 2月 16, 2011

maxscript 裡對物件 transform 的控制

max裡中代表物件在3d坐標中的位置的transform是經由object transform跟物件本身的transform推算出來的。


transform 是一組由四個向量組成的陣列值
在MAX中可用
matrix3 1

的到如下的東西(就是 matrix3 預設值啦)
(matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0])

而transfrom這東西在 get 和 SET 時給你的都是以世界軸為主,
所以在設定時就相當的方便,

就算你要要設定父物件是a物件的b物件的位置,想要他對齊一個c物件,你也只須要寫一行

b.transform = c.transform

就搞定了,而不用去管c物件有沒有父物件。


但如果你遇上了想讓物件跟pivot二個不一樣時,那就還要借助上object offset 這個 transform

在設定 rigging control 時
很常會遇到一個情況就是…例如:
spine的控制器對齊spine骨頭之外,外觀要對齊世界坐標軸向,
我們可以用
spineControl.transform = spineBone.transform
之外再加上
spineControl.objectoffsetrot = (((matrix3 1) * inverse spineControl.transform) as quat)
就可以讓控制器在"外觀上"是和世界標對齊的~


ps: 最後的那個 as quat 可以不用寫,max會自已幫你轉換。

沒有留言: