Python グローバル ネームスペースを使用してアトリビュート コントロールを作成する

Python グローバル ネームスペースを使用してアトリビュート コントロールを作成するには、以下の手順を実行します。

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

次の例では、スライダ コントロールは Python グローバル ネームスペース手法を使用して作成されています。コールバックには AEFloatSliderGlobal という名前が付いています。floatSlider コントロールはこのプロシージャで作成され、変更コマンド AEaddFloatSliderGlobalCB を使用します。

def AEaddFloatSliderGlobalCB( plug, slider ):
	val = cmds.floatSlider( slider, q=1, v=1 )
	cmds.setAttr( plug, val )

def AEaddFloatSliderGlobal( plug, sliderLabel, annot ):
	cmds.rowLayout( nc=2 )
	val = cmds.getAttr( plug )
	cmds.text( label=sliderLabel )
	slider = cmds.floatSlider( annotation=annot, v=val )
	cmds.floatSlider( slider, e=1, cc=('AEaddFloatSliderGlobalCB( \"' + plug + '\", \"' + slider + '\" )' ) )
	cmds.setParent( u=1 )

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

Python プロシージャを定義する

Maya が使用できるように、ユーザは Python プロシージャを定義する必要があります。この作業は、スクリプト エディタ(Script Editor)Python タブにある上記の例のコードを実行することによって行うことができます。

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

カスタム テンプレート ファイルを作成する際に、アトリビュート宣言セクションに<description language="cb">フラグを追加し、Python プロシージャに対するコールバックを指定します。既定では、コールバックはテンプレート内の MEL で指定されます。

グローバル ネームスペースで AEaddFloatSliderGlobal という Python コールバックを指定するには、py.AEaddFloatSliderGlobal と宣言します。この宣言は、 py.<ProcedureName>というフォーマットを使用します。

前述の Python モジュールで定義されているカスタム スライダ コントロールを白熱光緑(Incandescence Green)アトリビュートに追加するには、以下のように指定します。

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

関連項目