アトリビュート パターンを使用してアトリビュートを作成する

 
 
 

アトリビュート パターン を使用して、ダイナミックまたは拡張子アトリビュートを作成することができます。 アトリビュート パターンとは、特定のノード、あるいはノード タイプに追加することができるダイナミックまたは拡張子アトリビュートについて記述したものです。 この機能を使用すると、addAttr または addExtension コマンドを個別に使用して各アトリビュートを作成する必要がなくなます。

この機能は pyJsonAttrPatternFactory.py プラグインによってサポートされます。

アトリビュート パターン ファイル

この機能を使用するには、まずパターン ファイルを作成します。 パターン ファイルは、ノードまたはノード タイプに追加されるアトリビュートをリストし、使用するプラグインによって定義されるどのフォーマットにも対応しています。 Maya プラグイン pyJsonAttrPatternFactory.py は、.json フォーマットをサポートします。 オプションとして、パターン ファイルの構文を記述するスキーマ ファイルを含めることもできます。

パターンは、applyAttrPattern コマンドを通じてノードまたはノード タイプにコピーされるアトリビュートを単に記述したものです。

パターン タイプにはプラグインによって定義されるものがあり、それらはプラグインがアンロードされない限り削除されません。

1 つのパターン ファイルは複数のパターンを含むことができ、パターンはそれぞれ複数のアトリビュートを含むことができます。 パターンを適用する場合は、サブセットではなくそのアトリビュートのすべてが適用されます。 サンプル スキーマファイルについては attrPatternSchema.json を、<maya installation directory>/devkit/plug-ins/scripted ディレクトリのサンプル パターン ファイルについては sampleAttrPatterns.json を参照してください。

アトリビュート パターン コマンド

パターン ファイルにリストされたパターンのセットを作成するには createAttrPatterns コマンドを使用します。 続いて、applyAttrPattern コマンドを使用し、パターン ファイルのいずれかのパターンにリストされたアトリビュートをノードまたはノード タイプにアタッチします。 applyAttrPattern コマンドを使用すると、ダイナミック アトリビュートまたは拡張子アトリビュートのどちらを作成するかを決定することができます。 コマンドの後にノード名をリストすると、ダイナミック アトリビュートが作成されます。 -nt フラグを使用してノード タイプをリストすると、拡張子アトリビュートが作成されます。

利用可能なパターン インスタンスおよびパターン タイプをリストするには listAttrPatterns コマンドを使用します。

パターンを使用してノードにアトリビュートを適用した後、アトリビュートはパターンに関連付けされなくなり、deleteAttrPattern コマンドではなく deleteAttr または deleteExtension コマンドによってのみ削除することができます。

アトリビュート パターンを使用してダイナミックまたは拡張子アトリビュートを作成するためのワークフロー アウトライン

  1. ノードまたはノード タイプに追加されるアトリビュートをリストするパターン ファイルを json フォーマットで作成します。
    ヒント:既定値をとらないフラグの値のみを設定します。 明示的に設定されないフラグは、その既定値をとります。
  2. 格納場所 <maya directory>/devkit/plug-ins/scripted/ を PYTHONPATH 環境変数に追加します。
  3. ウィンドウ > 設定/プリファレンス > プラグイン マネージャ(Window > Settings/Preferences > Plug-in Manager)を選択して、pyJsonAttrPatternFactory.py プラグインをロードします。
    注:代わりに、loadPlugin pyJsonAttrPatternFactory.py; コマンドを使用することもできます。
  4. パターン ファイルにパターンのセットを作成するには createAttrPatterns コマンドを使用します。
    注:パターン ファイルを必要としない単純なアトリビュートの場合、createAttrPatterns コマンドを使用し、-patternDefinition フラグと、パターンの記述を含むハードコードされた文字列を指定してパターンを作成することができます。
  5. パターンの中で概説されたアトリビュートを特定のノード(ダイナミック アトリビュート)またはノードタイプ(拡張子アトリビュート)にアタッチするには applyAttrPattern コマンドを使用します。
注:また、MPxAttributePatternFactory クラスを使用して新しいアトリビュート パターン タイプを定義することもできます。 ファクトリは、新しいアトリビュートの記述を含む MAttributePattern を作成します。

この機能の簡単なサンプル アプリケーションを以下に示します。

  1. パターン ファイルを以下のように作成し、.json ファイルとして保存します。
    [
               {
                  “name” : “samplePattern”,
                  “attribute” : [
                        {
                                  “name” : “sampleAttr”,
                                  “defaultValue” : 0.0,
                                  “attributeType”: “float”
                        }
                                ]
               }
            ]
    
  2. プラグイン マネージャ(Plug-in Manager)を介して、またはコマンド ラインで loadPlugin を使用して pyJsonAttrPatternFactory.py プラグインをロードします。
    loadPlugin pyJsonAttrPatternFactory.py;
  3. samplePattern を以下のように作成します。
    createAttrPatterns –pt “json” –pf “yourfile.json”;
    注:これで、listAttrPatterns; コマンドを入力すると、samplePattern がリストされます。
  4. ノードを作成し、そのアトリビュートをリストします。
    createNode addMatrix;
    // Result: addMatrix1 //
    listAttrs;
    // Result: [the addMatrix attributes] //
    
  5. applyAttrPattern コマンドを使用して パターン(すなわち、そのアトリビュート)をパターン ファイルからノードにアタッチします。
    applyAttrPattern –pn “samplePattern” “addMatrix1”;

    ダイナミック アトリビュート sampleAttr が追加されます。

  6. listAttrs コマンドを使用して、ダイナミック アトリビュートが追加されたことを確認します。
    listAttrs;
    // Result: [the addMatrix attributes] sampleAttr //