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)アトリビュートはこのカスタマイズされたスライダを使用します。