2009年から仕事でMAYAを勉強。MAYAはデフォルトでは使い勝手が悪い。逆にスクリプトを覚えてカスタマイズするとかなり強力なツールになることがわかってきた。

物覚えが悪いので勉強したことはリマインダとしてココに書き留めるようにする。

2009年6月16日火曜日

【MEL】グラフエディター制御

//////////////////////////////////////////////////////////////////
//チェックボックスでグラフエディターの設定をコントロール
//////////////////////////////////////////////////////////////////

//autoFit の設定
string $onc01 = "refreshEditor01(1)";
string $ofc01 = "refreshEditor01(0)";
//バッファカーブの設定
string $onc02 = "refreshEditor02(1)";
string $ofc02 = "refreshEditor02(0)";
//インフィニティディスプレイの設定
string $onc03 = "refreshEditor03(1)";
string $ofc03 = "refreshEditor03(0)";

//()の中は引数で、この値を変数として次のプロシージャに引き渡しています。

//チェックボックスウィンドウ表示
if (`window -ex GEOptionWindow`) deleteUI GEOptionWindow;
window -title "GraphEditor Option" GEOptionWindow;
columnLayout;
checkBox -label "カーブのオートフィット" -onc $onc01 -ofc $ofc01;
checkBox -label "バッファカーブ表示on/off" -onc $onc02 -ofc $ofc02 ;
checkBox -label "インフィニティ" -onc $onc03 -ofc $ofc03 ;
showWindow;
window -e -h 100 -w 180 GEOptionWindow;


//カーブのオートフィットを設定
proc refreshEditor01(int $fit)
{
animCurveEditor -edit -autoFit $fit graphEditor1GraphEd;
}

//カーブのバッファカーブ表示を設定
proc refreshEditor02(int $buf)
{
animCurveEditor -edit -showBufferCurves $buf graphEditor1GraphEd;
}

//カーブのインフィニティを設定
proc refreshEditor03(int $Inf)
{
animCurveEditor -edit -displayInfinities $Inf graphEditor1GraphEd;
}


この書き方はちょっとトリッキーで、カーブの設定毎に別プロシージャを呼んで設定を書き換えています。
本来は全ての変数要素を集めて一つのプロシージャでまとめて設定するのが正統派です。 でも正統派の書き方をするとこのコードよりはるかに長く、かつ複雑になります。これでいいならこのまま使うほうがシンプルでしょう。このスクリプトでは設定されなかったパラメータは前の状態を維持するという性質を利用しています。


.

0 件のコメント: