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

今回はプロシージャについてご紹介します。

プロシージャとはプログラミングの世界で『(サブ)ルーチン』と言われるもので、
C言語なら『関数』,Java なら『メソッド』,
そして Mel では『プロシージャ』など、
言語によって呼び名が異なりますが概念的には同じものです。

簡潔に言うとルーチンとはプログラムの処理をひとまとめにしたものです。
多くのプログラムではある特定の処理を繰り返し使用する事が大きな利点になります。
Maya でも1つのツールを何度でも使えるから便利なわけですよね。

したがってプログラムの一部をひとまとめにして名前をつけておく事で
何度も呼び出せるようにするのです。

では実際にやってみましょう。

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


簡単にプログラムの説明からするので
とりあえず一行目は無視してください。

float $randNum = `rand 0.0 360.0`;

rand 関数はランダムな値を取得するものです。
引数に 0 と 360 を入れているので 0 から 360 までの間のランダムな値をとってくれます。

string $boxNodes[] = `polyCube -depth 4.0 -name "box"`;

ポリゴンの Cube を作成してその名前を変数に格納します。
コマンドのマニュアルにもありますが、これらプリミティブオブジェクトの作成コマンドは
トランスフォームノードとシェイプノードを戻り値として持つため
配列型変数に代入しないとエラーが起きるので注意してくださいね。

setAttr ($boxNodes[0]+".rotateY") $randNum;

これは前回の内容にもあったので分かりますね。
Cube の rotateY を $randNum の値にします。



さて。

今までならこうしてプログラムを書いたら中括弧で括っただけでしたが、
今回はこれに名前をつけてあげましょう。

それがこの一行目です。

global proc [プロシージャ名] ()
{
・・・・・・・・・
}


この様に記述します。
中に何もありませんが、プロシージャ名の後の括弧を忘れずに入れてください。
今回は『rotateBox』という名前をつけました。

では実行してみてください。
見た目は何も起こりませんね。
これはプロシージャを宣言
言わば『rotateBox』というツールを Maya に追加するという作業です。
したがってエラーさえ起こっていなければ正常に実行されています。

Script Editor で新しいタブを開いて『rotateBox』と打って実行してみてください。
これでやっと中身が実行されましたね。


納得のいくツールが完成したらこのように自分で Maya に追加するのではなく、
スクリプトを全部選択して Save Script (Ctrl + s)で
%MAYA_SCRIPT_PATH% に mel ファイルを保存することで
Maya が起動した時に自動的にツールが追加されるようになります。

したがって『rotateBox』などという、プロシージャの名前だけを入力すれば
(もしくはシェルフやマーキングメニューなどに登録すれば)
すぐに使用できるようになるのです。

ツールを完成させたら忘れずにこの方法で保存しておきましょう。


次回はプロシージャのもっと便利な使い方についてご紹介します。


参考:
 Autodesk Maya オンラインヘルプ : プロシージャ
 Autodesk Maya オンラインヘルプ : プロシージャを定義する
 Autodesk Maya オンラインヘルプ : プロシージャを呼び出す
 Autodesk Maya オンラインヘルプ : rand
 Autodesk Maya オンラインヘルプ : polyCubeコマンド
 Graberry Blog : Maya 環境変数についてのまとめ

演習:
 前回の内容で作成したツールを『fakeOfDuplicateValues』という名前のプロシージャにし、
 <ドライブ名>:\Documents and Settings\<ユーザ名>\My Documents\maya\scripts
  に保存し、Script Editor に『fakeOfDuplicateValues』と打ち込んで実行する事で
 中身がきちんと実行される事を確認してください。


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

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