スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
みなさんお待ちかねの初心者用 Mel 講座。

今回も引き続きプロシージャについてご紹介します。

当然ですが、
一度宣言したプロシージャは何度でも実行する事ができます。

global proc rotateBox()
{
float $randNum = `rand 0.0 360.0`;
string $boxNodes[]=`polyCube -depth 4.0 -name "box"`;
setAttr ($boxNodes[0]+".rotateY") $randNum;
}

rotateBox;
rotateBox;
rotateBox;


プロシージャの内容は前回と同じです。
呼び出しを3回行っているので、実行すると同じ内容を3回繰り返します。

場合によってはこれでも便利なのですが、
これでは全く同じ内容のものを繰り返す事しかできません。

そこでコマンドの引数のように
プロシージャにも引数を持たせる事ができるのです。

記述の方法は至って簡単で、以下の様に
プロシージャを宣言する時の括弧の中で変数を宣言するだけです。
この変数のスコープはそのプロシージャ内になります。

global proc rotateBox(float $dep)
{
float $randNum = `rand 0.0 360.0`;
string $boxNodes[]=`polyCube -depth $dep -name "box"`;
setAttr ($boxNodes[0]+".rotateY") $randNum;
}

rotateBox(3.0); //or, rotateBox 3.0;
rotateBox(5.0); //or, rotateBox 5.0;


呼び出しをする時はコマンドの時と同様に

rotateBox 3.0;

の様に記述するか、もしくは

rotateBox(3.0);

のように記述します。

これを実行することで polyCube の depth が 3.0 として作られたものと
5.0 として作られたものの2つができるのです。

引数を複数用意するには『,(コンマ)』で区切ります。

global proc rotateBox(float $dep, string $boxName)
{
・・・・・・


呼び出すときは

rotateBox 2.0 "graberry";

もしくは

rotateBox(2.0, "graberry");

のように記述します。

お分かり頂けましたか?

次回はプロシージャの戻り値についてご紹介します。


参考:
 Autodesk Maya オンラインヘルプ : プロシージャ
 Autodesk Maya オンラインヘルプ : プロシージャを定義する
 Autodesk Maya オンラインヘルプ : プロシージャを呼び出す
 Graberry Blog : プロシージャについて①

演習:
 前回の演習内容で作成したプロシージャ『fakeOfDuplicateValues』の
 複写するアトリビュート名を引数にして、
 fakeOfDuplicateValues("rotateX");
 として実行すると translateX ではなく
 rotateX の値が複写されるようなものに書き換えてください。
コメント
管理者のみ閲覧可能にする
Profile
HN らい

都内某社テクニカルディレクター
都内某専門学校講師
都内某企業講師
元中国某社S3Dスーパーバイザー
Contact
(ENGLISH OK. 可以用中文。)
Categories
Archives
RSS Link
QR Code