XSIユーザーから観たMELスクリプトについて 其の三
続き
次は「アトリビュート」について。
SIではプロパティでしょうか?※パラメーター?
SIでは、
null.kine.local「.posx」
括弧の部分ですかね。
SIなら上記のやり方やいろんなやり方がありますが、
MAYAではどうでしょうか?
string $sname[] = `sphere`; float $tx = `getAttr (&sname[0] + ".tx")`;
これで
「sphere.translateX」が取得できました。
う~んSIとは大きく変わりませんが、
すごく違和感があります。
特にKineが無い所や、わざわざ「getAttr」しないといけない所。
逆にセットする場合はSIだと
SetValue("sphere5.kine.local.posx", 10, null);
これでローカルのPOSXに10移動してます。
ではMAYAでは
string $sname[] = `sphere`; setAttr ($sname[0] + ".tx") 10.0;
はい、getAttrの逆ですね、
気をつけないといけない部分は
「``」で括っていない所ですね。
Getはいるのにね。。。
あと、こんなやり方もいけるみたいです。
select nurbsSphere1; setAttr .tx 2.5; setAttr .ty 3.0; setAttr .tz 5.2;
これは便利ですね。
じゃ続けてもう一個
実践ぽいやつ。
まずはMAYA。
global proc spiralObjects1(float $rad,int $num) { int $i; float $r = 0.0; float $y = 0.0; string $name[]; for($i = 0 ; $i < $num ; $i++) { $name = `sphere`; setAttr($name[0] + ".tx") $rad; rotate -ws -p 0 0 0 0 $r 0; setAttr($name[0] + ".ty") $y; $r += 30.0; $y += 0.5; } }
これは球を螺旋状に配置していくスクリプトです。
これをSIに置き換えるとこんな感じ。
もっとスマートなやり方あるはずですが、ひとまず。
spiralObjects1(5.0,30); function spiralObjects1(rad,num) { var r = 0.0; var y = 0.0; for(var i = 0 ; i < num ; i++) { var name = CreatePrim("Sphere", "NurbsSurface"); SetValue(name+".sphere.radius", 1); SetValue(name+".kine.local.posx", rad, null); TranslatePivot(name,0,0,0); Rotate(name, 0, r, 0 , siRelative, siGlobal, siObj, siXYZ, null, null, null, null, null, null, null, 0, null); SetValue(name+".kine.local.posy", y, null); r += 30.0; y += 0.5; } }
ここまで見ていくと、簡単なやつは簡単に置き換えができそうです。
こんな感じでMAYAでかなり重要なアトリビュートの所でした。
では…