スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
大変長らくお待たせしました。
初心者向け Mel 講座。
引き続きプロシージャについてご紹介します。

前回はプロシージャに値を渡す『引数』についてご紹介しましたが、
プロシージャもコマンドと同様、戻り値を持つ事もできます。

global proc float pythagoras(float $a, float $b)
{
float $c = sqrt($a*$a + $b*$b);
return $c;
}

{
float $oblSide = pythagoras(3.0, 4.0);
// 5.0
}

戻り値を持つプロシージャを作るには proc の後に返す値の型を入れ
プロシージャの最後に return コマンドを使います

代入をする時はコマンドの時と同様に

float $oblSide = `pythagoras 3.0 4.0`;

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

float $oblSide = pythagoras(3.0, 4.0);

の様に記述します。

上のサンプルコードでは2つの値を受け取り、
三平方の定理を用いて計算した斜辺の長さを返します。
sqrt とは『スクエアルート』、つまり数学での『√(ルート)』と同じ意味の関数です。

0916_1.png

図の様に値を入れると計算された値が出てくる、というのは
中学校の数学で習った『関数』そのものですね。
C言語などではルーチンの事を『関数』と呼ぶのも納得です。

ちなみに既に宣言されているプロシージャの
引数や戻り値の数を変えて再び宣言しようとエラーが起きてしまうので注意が必要です。

最初のプロシージャの説明であった通り
プロシージャは何度も呼び出す事で大きな意味を持ちますが、
そうでなくてもこのように値を入れて計算したものを取り出す、
という事を活かしたプログラムを書けば
見た目もスッキリして分かりやすくなるので。
上級者になればなるほどプロシージャを上手に使って綺麗なプログラムを書くべきだと思います。


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

演習:
 2つのオブジェクトの名前を受け取って
 その translateY の値の平均値を返すプロシージャを作り、
 元のプロシージャで両オブジェクトの translateY を
 その値に設定するプログラムを書いてください。


コメント
管理者のみ閲覧可能にする
Profile
HN らい

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