クイック・リファレンス

MEL コマンドの種類

シーンコマンド
もっとも良く使われるコマンドで 500 種類くらいがあります。 シーンとその環境を操作するために使われます。
アドミニストレーションコマンド
ファイルの入出力や OS へのアクセスに使用されます。
ユーザーインターフェースコマンド
ボタン、ウインドウ、メニューなどの作成・制御に使います。
関数
動きや、パーティクルの位置、その他の特別な効果を作るために使われます。
配列、カーブ、数学関数、乱数、色変換などの機能をもつ関数があります。

MEL コマンドの実行方法

コメント

コメントの部分は読み飛ばされて、実行されません。
コメントは 2 種類あります。

整数
2, 125, -33 など
ブーリアン(Boolean)
if 文などで条件の部分で使われる論理値
MEL では、1 , on , true が同じものとして扱われます。
0 , off , false も同じものとして扱われます。
16進数
整数の前に 0x をつけたもの
0x10, 0xff など
浮動小数点数
1.0, 3.14, -0.23333 など
文字列
" (ダブルクォート)で囲まれた部分
"abc", "12345", "MELはたのしい" など

変数の型

matrix 以外は配列にすることができます。

int
整数
float
浮動小数点数
string
文字列
vector
ベクトル
matrix
2 次元配列

ノードの種類

シェイプノード
形状を定義
トランスフォームノード
移動・回転・スケールなどを定義
インプットノード
オブジェクトのジオメトリなどを作成・変形するためのノード
シェーディングノード
シェーディングやテクスチャーのためのノード
セット・パーティションノード
セットノードは、 オブジェクト・コンポーネント・アトリビュートをまとめて 1 つのグループにするノードです。
パーティションノードは、 セットノードをまとめてグループにするノードです。

ノード関係のコマンド

createNode
ノードを作成します。
shadingNode
ノードを作成します。 シェーダ・テクスチャ・ライト・ポストプロセス・ユーティリティなどのノードを作成します。
listNodeTypes
ノードの種類をリストアップします。
nodeType
ノードの種類を返します。
nodePreset
ノードの現在のアトリビュートの値をファイルに保存します。
setNodeTypeFlag
ノードが GUI に表示されるかどうかを設定します。
selectedNodes
セレクトされているノードのリストを返します。

アトリビュートの種類

Static
ノードに固有で削除できないもの
たとえば、トランスフォームノードの 移動X (translateX) アトリビュートは削除できません。
Dynamic
追加・削除できるもの
パーティクルシェイプの rgpPP などが Dynamic アトリビュートで、 addAttr コマンドで追加、deleteAttr コマンドで削除できます。
Custom
ユーザが定義できて追加・削除できるもの
addAttr コマンドで追加、deleteAttr コマンドで削除します。

アトリビュート関係の基本コマンド

実行例

制御構造の種類と例

if , while , do while , for の条件部分は、 0 , false , off 以外のものが与えられたときに成り立ちます。

基本的なプリミティブ

キーフレームアニメーションの手順

  1. currentTime で現在の時間を設定
  2. オブジェクトのアトリビュートを変更
  3. setKeyframe でキーフレームを決定
  4. 1. から 3. を必要なだけ繰り返し

パスアニメーションの手順

  1. アニメートされるオブジェクトをセレクト
  2. パスとなるカーブをセレクト
  3. pathAnimation コマンドでパスアニメーション作成
select nurbsSphere1;
select -tgl curve1;
pathAnimation -startTimeU 0 -endTimeU 300;

ライトの種類

返り値の受け取り方

手続きの形

[...] の部分はは省略可能です。

[global] proc [返り値の型] <手続きの名前>( [引数, ...] )
{
	[MEL文]
	[return 返り値;]
}

プロシージャを作る時の注意

MEL によるカスタマイズ

変数の型変換表

変換される型
int float string vector matrix
int OK OK OK <<$i, $i, $i>> NONE
float 整数部分 OK OK <<$f, $f, $f>> NONE
string 整数部分(数字でなければ0) OK(数字でなければ0) OK OK(vectorかfloatでなければ0) NONE
vector ベクトルの長さの整数部分 ベクトルの長さ 3つのfloat OK OK([1][3]のみ)
matrix ベクトルの長さの整数部分([1][3]より小さい時) ベクトルの長さ([1][3]より小さい時) NONE OK([1][3]より小さい時) OK
true, yes は 1, false, no は 0 になります。

ベクトルの演算子

+, +=
プラス
-, -=
マイナス
*, *=
int, floatとのはスカラー積、ベクトル同士は内積
/, /=
除算
%, %=
剰余
^, ^=
外積
||, &&, !
論理演算子
==, !=, >, <, >=, <=
関係演算子

マトリクスの演算子

+, +=
プラス
-, -=
マイナス
*, *=
乗算

レンダリングのパラメータ

ウインドウの構成要素

Controls の一覧

レイアウトの一覧

コマンドを定義するためのオプション

ドラッグ&ドロップ時のコールバック

コントロール、レイアウト、メニューなどで、 マウス中ボタンを押してドラッグ&ドロップを行うときに実行されるプロシージャです。

-dragCallback
プロシージャの引数と、その意味は以下のとおりです。
global proc string[] プロシージャ名(string $dragControl, int $x, int $y, int $mods)
$dragControl
マウス中ボタンが押されたコントロール、レイアウト、メニューなどの名前
$x
マウス中ボタンが押された位置の X 座標
$y
マウス中ボタンが押された位置の Y 座標
X, Y 座標は、コントロール、レイアウト、メニューなどの左上が (0, 0)
$mods
マウス中ボタンが押されたときに、同時に押されていたキー
0
なし
1
Shift
2
Ctrl
3
Ctrl + Shift
このプロシージャは、文字列の配列を返す必要があります。
-dropCallback
プロシージャの引数と、その意味は以下のとおりです。
global proc callbackName(string $dragControl, string $dropControl, string $msgs[], int $x, int $y, int $type)
$dragControl
マウス中ボタンが押されたコントロール、レイアウト、メニューなどの名前
$dropControl
マウス中ボタンが離されたコントロール、レイアウト、メニューなどの名前
$msgs
-dragControl のプロシージャが返したメッセージ
$x
マウス中ボタンが離された位置の X 座標
$y
マウス中ボタンが離された位置の Y 座標
X, Y 座標は、コントロール、レイアウト、メニューなどの左上が (0, 0)
$type
イベントのタイプ
1
移動
2
コピー
3
リンク

(使用例)
以下の MEL スクリプトを実行するとした図のようなウインドウが表示されます。 Drag ボタンの上でマウス中ボタンを押して、 Drop ボタンの上にドラッグ&ドロップすると、 dragCallback と dropCallback の引数を スクリプト エディタ に表示します。

global proc string [] dragTest(string $dragControl, int $x, int $y, int $mods)
{
	string $msgs[];

	print ("drag dragControl" + $dragControl + "\n");
	print ("drag x " + $x + "\n");
	print ("drag y " + $y + "\n");
	print ("drag mods " + $mods + "\n");
	$msgs[0] = "dragtest";
	return $msgs;
}
global proc dropTest(string $dragControl, string $dropControl, string $msgs[], int $x, int $y, int $type)
{
	string $s;

	print ("drop drapControl " + $dragControl + "\n");
	print ("drop dropControl " + $dropControl + "\n");
	for($s in $msgs)
	{
		print ("drop msgs " + $s + "\n");
	}
	print ("drop x " + $x + "\n");
	print ("drop y " + $y + "\n");
	print ("drop type " + $type + "\n");
}
window -title "Drag and Drop";
columnLayout;
button -label "Drag" -h 50 -w 100 -dragCallback "dragTest";
button -label "Drop" -h 50 -w 100 -dropCallback "dropTest";
showWindow;

パネルの種類

ダイアログの種類

ウインドウの管理

参考


Home | Contents
Mail