スクリプトジョブ
スクリプトジョブ
scriptJobというMELコマンドを使用するとMAYAの中でイベントや状態の変化があった時に特定のコマンド・プロシージャなどを実行させることができる。
これを応用すると、あるオブジェクトを移動すると他のオブジェクトもいっしょに移動したりすることができる。
(乗物の車輪など)
主なオプション
- -conditionTrue "string" "script"
- "string"で表される状態がtrueになった時、実行されるコマンド"script"を設定する。
- -conditionFalse "string" "script"
- "string"で表される状態がfalseになった時、実行されるコマンド"script"を設定する。
- -conditionChange "string" "script"
- "string"で表される状態が変化した時、実行されるコマンド"script"を設定する。
状態がtrueからfalseに、またはfalseからtrueになった時に"script"を実行する。
- -event "string" "script"
- "string"で表されるイベントが起きた時、実行されるコマンド"script"を設定する。
- -attributeChange "string" "script"
- "string"で表されるアトリビュートに変化が起きた時、実行されるコマンド"script"を設定する。
- -parent "string"
- "string"で指定されたユーザーインターフェースが存在する間だけジョブが存在する。
そのユーザーインターフェースが消されるとジョブも消去される。
- -listEvents
- 使用できるイベントの名前を返す。
- -listCondisions
- 使用できるイベントの名前を返す。
- -listJobs
- 現在、存在するジョブを表示する。
- -kill number
- numberで表されるジョブを消去する。
主な状態の説明
-listConditionsで返ってくる状態の中から主なものを以下にあげてみる。
これらはオプションの
-conditionTrue、
-conditionFalse、
-conditionChange
などで使用できる。
- playingBack
- アニメーションキーフレームをプレイバックしているとtrueになる。
- SomethingSelected
- 何かをセレクトするとtrueになる。
- busy
- MAYAが何かを実行している時にtrueになる。
- writingFile
- ファイルを書き込んでいるとtrueになる。
- readingFile
- ファイルを読み込んでいるとtrueになる。
scriptJobの使用例1
scriptJobを使用してセレクトされたオブジェクトを消去するように設定してみよう。
- 適当に球などのオブジェクトを数個作っておく。
- Script Editor に以下のようなコマンドを打ち込んで実行する。
scriptJob -conditionTrue "SomethingSelected" "delete";
- このコマンドを実行した後にオブジェクトをセレクトすると、
セレクトされたオブジェクトが消去(deleteコマンドが実行)される。
- この後、ジョブを取り消したい時は、まずこのジョブの番号を調べる。
そのためには上の2でコマンドを実行した際に表示されたジョブ番号を覚えておくか、
scriptJob -listJobs;
を実行することによって番号を調べる。
- 番号がわかったら以下のコマンドを実行することによってセレクトしてもオブジェクトが消えなくなる。
例えば番号が21ならば
scriptJob -kill 21;
scriptJobの使用例2
次にscriptJobを使用してオブジェクトのX座標が10以上にならないようにしてみよう。
以下のスクリプトをmelディレクトリのscriptJob1.melに書き込んでScript Editorで実行すると、
作られた球をX座標が10以上の位置に移動してもX座標が10のところへ戻るようになる。
global proc limitXValue()
{
$x = `getAttr sphere1.tx`;
if($x > 10.0)
{
setAttr sphere1.tx 10.0;
}
}
sphere -n sphere1;
scriptJob -attributeChange sphere1.tx limitXValue;
練習
- 上の使用例2のスクリプトをX座標だけでなくY,Z座標も10以上の座標値をとらないように書き換えてみよう。(ファイル名はscriptJob2.mel)
まとめ
- scriptJobによってMAYAのイベント・状態・アトリビュートの変化をとらえることができる。
- その変化に従ってコマンド・プロシージャを実行することができる。
参考
Prev | Next
Home | Contents
abe@injapan.net