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 )
Maya が使用できるように、ユーザは Python プロシージャを定義する必要があります。この作業は、スクリプト エディタ(Script Editor)の 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)アトリビュートはこのカスタマイズされたスライダを使用します。
