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

Python モジュールで定義されたコールバックを使用してアトリビュートのコントロールを作成するには、次の操作を行います。

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

次の例では、floatSlider コントロールが Python AEaddFloatSliderModule によって作成され、変更コマンド AEaddFloatSliderModuleCB を使用しています。コールバック AEFloatSliderModule は、モジュール AEaddFloatSlider.py に定義されます。

import maya.cmds as cmds


def AEaddFloatSliderModule(	plug, sliderLabel, annot ):

	cmds.rowLayout( nc=2 )
	val = cmds.getAttr( plug )
	cmds.text( label=sliderLabel )
	slider = cmds.floatSlider( annotation=annot, v=val )
	def AEaddFloatSliderModuleCB( *args ):
		val = cmds.floatSlider( slider, q=1, v=1 )
		cmds.setAttr( plug, val )
	cmds.floatSlider( slider, e=1, cc=AEaddFloatSliderModuleCB )
	cmds.setParent( u=1 )

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

Python モジュールの位置を指定する

この手順により、Python モジュールを含むディレクトリへのパスが Maya に提供されます。PYTHONPATH 環境変数を、モジュールのパスと場所に設定します。

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

テンプレート ファイルを作成するときに、アトリビュート宣言に <description language="cb"> タグを追加するか定義を表示し、Python プロシージャへのコールバックを指定します。

Python モジュール AEaddFloatSlider.py に Python コールバック AEaddFloatSliderModule を指定するには、py.AEaddFloatSlider.AEaddFloadSliderModule と宣言します。この宣言は、 py.<ModuleName>.<ProcedureName>というフォーマットを使用します。

前述の Python モジュールで定義されているカスタム スライダ コントロールを白熱光青(Incandescence Blue)アトリビュートに追加するには、次のコマンドを使用します。

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

関連項目