MAYA 程式速記 002 – 幾個 MEL 命令

move、 substring、 linstep


1. move

move -r 1 0 0;

是把物體沿X軸移動 1  (相對移動)

move 1 0 0;

是設定物體的 translateX = 1, translateY = translateY = 0  (絕對座標、世界座標)

2.  substring

substring $abc 1 5;

從字串abc 內切出第一到第五個元素。

string $Newabc = `substring $abc 1 5`;

從字串 abc 內切出第一到第五個元素,並存放到新的字串內。這種儲存命令輸出結果到一個新字串內的方法,同一般的 UNIX Shell 。

另外還有兩種方法也可以:

string $Newabc = substring($abc, 1, 5);
string $Newabc = eval("substring $abc 1 5");

3. linstep

以數學的說法,就是歸一化(Normalize),格式如下:

linstep 最小值  最大值  被檢驗的數;

  • 如果  被檢驗的數 > 最大值,那 linstep 會返回 1。
  • 如果  被檢驗的數 < 最小值,那 linstep 會返回 0。
  • 如果 最小值 < 被檢驗的數 < 最大值 ,那 linestep 會把被檢驗的數,按最大值最小值 的差做歸一化。換個說法,就是拿最小值當 0 ,拿 最大值當成 1 ,然後看看被檢驗的數可以塞到他們中間的哪裡。

參考範例:

linstep 3 5 9;
// Result: 1
// 9 大於 5 所以傳回 1
linstep 3 5 1;
// Result: 0
// 1 小於 5 所以傳回 0
// 下面就是介於 3~5 之間的範例喔!
// --------------------------
linstep 3 5 3.5;
// Result: 0.25 //
// (3.5-3)/(5-3) = 0.25 
// 簡單的說,就是拿 3 當 0,拿5 當 1 ,看看 3.5 值多少
// --------------------------
linstep 3 5 4;
// Result: 0.5 //
// (4-3)/(5-3) = 0.25 
// 拿 3 當 0 ,拿5 當1 ,看看 4 值多少,剛好在中間所以是 0.5
// --------------------------
linstep 3 5 4.5;
// Result: 0.75 // 
// (4.5-3)/(5-3) = 0.75
// --------------------------
linstep 3 5 4.2;
// Result: 0.6 // 
// (4.2-3)/(5-3) = 0.6
// --------------------------
linstep 3 5 4.1;
// Result: 0.55 // 
// (4.1-3)/(5-3) = 0.55
// --------------------------
linstep 3 5 4.8;
// Result: 0.9 // 
// (4.8-3)/(5-3) = 0.9
// --------------------------
// 會了吧? 這就是歸一化(Normalize)

You Might Also Like

Leave a Reply

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料