XSIユーザーから観たMELスクリプトについて 其の四
では次。
キーフレームについて。
これは私には重要な所ですね。
MAYAでキーフレームは
setKeyframe -at "ry" $name[0];
こんな感じでキー設定します。
「-at」で以下のアトリビュートにキーを打つって感じらしいです。
コードにすると、
global proc circleAnimation1(float $rad,int $frame) { int $i; float $r = 0.0; string $name[]; $name = `sphere`; setAttr($name[0] + ".tx") $rad; setAttr($name[0] + ".rotatePivotX") (-$rad); for($i = 0 ; $i < $frame ; $i++) { currentTime $i; setAttr($name[0] + ".ry") $r; setKeyframe -at "ry" $name[0]; $r += 10.0; } }
これを実行すると円運動がキーフレームされてます。
ちょっと気持ち悪いです。。
何故か?
setKeyframe -at "ry" $name[0];
このコードだけ、キー打つことは行けますが、
フレームを指定できない所です。
多分他のやり方でできるんだろうとは思いますが、
どうしても気になる。。。。
あ、コードは省きますが、
こんな事もできます。
一個前の記事でやった螺旋のアニメーション版です。
さておき
SIだと、
circleAnimation1(10.0,100); function circleAnimation1(rad,frame) { var r = 0.0; var Sphere = CreatePrim("Sphere", "NurbsSurface"); SetValue(Sphere+".sphere.radius", 1); SetValue(Sphere+".kine.local.posx", rad, null); TranslatePivot(Sphere,0,0,0); for(var i = 0 ; i < frame ; i++) { Rotate(Sphere, 0, r, 0 , siRelative, siGlobal, siObj, siXYZ, null, null, null, null, null, null, null, 0, null); SaveKey(Sphere+".kine.local.roty",i); r += 10.0; } }
ほぼ一緒な気がしますね。
こんな感じで、キー設定自体は
そこまでな気がしました。
問題はここからの応用ですね。。
それはこれから長い道のりが待ってます汗
では…