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)
Leave a Reply