MEL入門008 変数と配列ついて

  • 変数について

簡単な例です。算数で下記のような式を習ったことがあると思います。

A=1
B=3

この場合A+B=4

Aに1を代入、Bに3を代入する。

変数とはこのAとBのように代入できるものです。

上記内容をMELに置換え、スクリプトエディタで書くと


//A=1
int $A=1;
//B=3
int $B=3;
//A+B=の答えを表示
print ($A+=$B) ;


文の先頭に // を付けるとはコメント文になり、その行は実行しません。


重要1 変数は必ず最初に$を付けます。
重要2 変数は型を指定します。intは整数です。小数点を含む数値はfloatです。
文字を代入する場合はstringです。文字は文字列といい、""で囲みます。

  • 配列について

複数の数値を代入する場合は配列を使用します。


重要3 配列の最後にはが付きます。[0]、[1]、等数値を入れることもあります。


string $selOBJ= `ls -sl`;


重要4 コマンドを含むスクリプトは `` で囲みます。


$selOBJ が配列です。このスクリプトは選択しているオブジェクト名またはノード名を $selOBJ に入れます。

pSphere1、pSphere2を作成し
pSphere1、pSphere2の順に追加選択し

string $selOBJ= `ls -sl`;

を実行すると

// Result: pSphere1 pSphere2 //

と表示されます。


string $selOBJ= `ls -sl`;
print $selOBJ[0];
を実行すると
pSphere1が表示され
$selOBJ[0]は1番目に選択しているオブジェクト名が代入されており


string $selOBJ= `ls -sl`;
print $selOBJ[1];
を実行すると
pSphere2が表示され
$selOBJ[1]は2番目に選択しているオブジェクト名が代入されていることが確認できます。


配列を使用して選択している2つのオブジェクトをバックカリング表示に変えてみましょう。


pSphere1を選択し、アトリビュートエディター(Ctrl+A)で pSphereShape1のタブを選択し
backfaceCullingをoffからFullに変更すると
スクリプトエディタに下記が表示されます。


setAttr pSphereShape1.backfaceCulling 3;


戻すと下記が表示されます。


setAttr pSphereShape1.backfaceCulling 0;


pSphereShape1を
$selOBJ[0]にすれば1番目に選択したオブジェクトで使用できるようになり
$selOBJ[1]にすれば2番目に選択したオブジェクトで使用できるようになります。


選択している2つのオブジェクトをバックカリング表示にするスクリプトは下記です。


string $selOBJ= `ls -sl`;
// 配列を使用した記述方法は setAttr $selOBJ[0].backfaceCulling 3そのままではなく、下記になります。
setAttr ( $selOBJ[0]+ ".backfaceCulling ")3;
setAttr ( $selOBJ[1]+ ".backfaceCulling ")3;


この記述方法の違いは重要です。覚えておきましょう。
元に戻す場合は


string $selOBJ[]= `ls -sl`;
// 配列を使用した記述方法は setAttr $selOBJ[0].backfaceCulling 3ではなく 下記になります。
setAttr ( $selOBJ[0]+ ".backfaceCulling ")0;
setAttr ( $selOBJ[1]+ ".backfaceCulling ")0;


このスクリプトは2つ目までの選択オブジェクトに対して実行します。