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 モジュールを含むディレクトリへのパスが Maya に提供されます。PYTHONPATH 環境変数を、モジュールのパスと場所に設定します。
テンプレート ファイルを作成するときに、アトリビュート宣言に <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)アトリビュートはこのカスタマイズされたスライダを使用します。