MEL を使用してアトリビュート コントロールを作成する

MEL を使用してアトリビュート コントロールを作成するには、次の操作を行います。

アトリビュート コントロールを作成する

次の例では、floatSlider コントロールが MEL プロシージャ AEFloatSlider によって作成され、変更コマンド AEaddFloatSliderCB を使用しています。

global proc AEaddFloatSliderCB( string $plug, string $slider ) 
{ 
	float $val = `floatSlider -q -v $slider`; 
	setAttr $plug $val; 
} 

global proc AEaddFloatSlider ( string $plug,
string $label, string $annot )
{

	// Body of callback
	rowLayout -nc 2;
	float $val = `getAttr $plug`;
	string $slider;
	text -label $label;
	$slider = `floatSlider -annotation $annot -v $val`;
	floatSlider -e -cc ("AEaddFloatSliderCB \"" + $plug + "\" \"" + $slider + "\"")
 	$slider;
	 setParent

}

次のパラメータが、MEL プロシージャで使用されます。

MEL プロシージャをソースする

この手順により、プロシージャを含む MEL ファイルへのパスが Maya に提供されます。C:/myScripts というディレクトリにこのファイルを保存する場合、MEL コマンド ラインまたはスクリプト エディタ(Script Editor)に次のコマンドを入力します。

source "C:/myScripts/AEFloatSlider.mel";

ヒント: MEL ファイルは、コールバックで使用したプロシージャと同じ名前にすることもできます。こうすると、コールバックが最初に開始されるときに、ファイルがソースされます。たとえば、コールバックを global proc AEaddFloatSlider() と定義した場合、コールバック ファイルが Maya のスクリプト フォルダのうちの 1 つにAEaddFloatSlider.mel として保存されます。

MEL プロシージャに対するコールバックを定義する

テンプレート ファイルを作成するときに、アトリビュート宣言に <description language="cb"> タグを追加するか定義を表示し、MEL プロシージャへのコールバックを指定します。前述のプロシージャで定義されているカスタム スライダ コントロールを白熱光赤(Incandescence Red)アトリビュートに追加するには、次のように指定します。

<attribute name='incandescenceR' type='maya.float'>
    <label>Incandescence Red</label>
      <description language="cb">AEaddFloatSlider</description>
</attribute>
ユーザがアトリビュート エディタ(Attribute Editor)でアトリビュート ビューにアクセスすると、白熱光赤(Incandescence Red)アトリビュートはこのカスタマイズされたスライダを使用します。

関連項目