XSIユーザーから観たMELスクリプトについて 其の一
とうとう来ました。
そう、MAYAです。
もう進むしかないんです。
ということで、タイトルにある通りMELについて書いて行きたいと思います。
っていっても、基本的にここのコードを目で見て書いてるだけなんですが、、、
あ、SIのコードも比較で書いていきます。
まずはXSIのスクリプトはとても解りやすいです。
なので、便利な関数など色々簡単に扱えます。
ではMAYAはどうでしょうか?
簡単なスクリプトで実践してみましょう。
ではまずはMELから。
global proc makeSphere(int $n) { int $m; sphere; scale $n $n $n; sphere; $n -= 1; scale $n $n $n; $m = 2 * $n +1; move $m 0 0; sphere; $n -= 1; scale $n $n $n; $m += 2 * $n +1; move $m 0 0; }
物としては非常に簡単なものです。
球を作成して、大きさを引数で指定。
さらに球を作成して、一個前に作成した球の横に配置していくものです。
簡単に復習してみましょう。
global proc makeSphere(int $n)
プロシージャの宣言になります。
プロシージャとはSIでいう関数です。
引数には型を設定する必要があります。
あと変数も同様で型を宣言しなくてはいけません。
上記でいうと、今回は数値を扱うので、「int $n、int $m」
としています。
文字列なら「string」とかにします。
あと、毎回変数に「$」を付けないといけないのは
本当に面倒ですね。。。
こんな感じでした。
なんとなく理解できました。
まぁ初歩中の初歩なんで。
で、これをXSIで再現しますと、こんな感じになります。
makeSphere(10,9); function makeSphere(n,num) { var m; var posx = 0; var Offset = n + 1; var Sphere = CreatePrim("Sphere", "NurbsSurface"); SetValue(Sphere+".sphere.radius", 1); Scale(Sphere, n, n, n); for(var i = 0; i < num ; i++) { Logmessage(i+"個目") var Sphere2= CreatePrim("Sphere", "NurbsSurface"); SetValue(Sphere2+".sphere.radius", 1); n -= 1; Scale(Sphere2, n, n, n); m = 2 * n + 1 + posx ; Translate(Sphere2, m, 0, 0, siRelative, siGlobal, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 0, null); posx = Sphere2.kinematics.Local.posx.value; } }
SI側ではFORで球を引数で指定できるようにしています。
いやぁ。。。
いやぁ。。。。
いやぁ。。。。。
XSIいいっすねぇ~。。。
※後にこの気持ち変わりますw
まぁ始まったばっかりなんで、仕方がないか。。。