概要
XGen は Python API を提供し、これにより Python シェルから XGen の内部データへのアクセスを可能にしています。これは Maya の内部でも外部でも使用できます。この API は Maya の内部に拡張されています。これは、Maya
内部に適用する処理(たとえば、ガイドの「名前」を承認してパッチを取得する)を可能にするためですが、それ以外には適用しないでください。XGen とのすべてのインタラクションは、この API を利用して、またはユーザ インタフェースから実行する必要があります。MPxCommandを介してのアクセス、および XGen 内に存在する可能性のある MEL 関数を介してのアクセスは保証されていません。
以下にすべてのメソッドを、戻り値のタイプと期待するパラメータ タイプを示す疑似構文で一覧表示します。メソッドの呼び出しは、Python で通常行う方法で行われます。順番にパラメータを渡しても、名前を使用して必要に応じて並べ替えてもかまいません。
API のインポート
この API は、ベース API と Maya API という 2 つの部分に分かれています。UI は独立した 1 つのコンポーネントですが、この API は基本的に、基底となる C++ コード、そしてベース API を構成する Python
レイヤー、さらに Maya 追加要素を取り込むためのもう1つの Python レイヤーで構成され、それに加えて Maya API を構成する予備の API 機能もあります。タスクにとって適切な API を取り込むことが重要です。そうしないと、予期せぬ結果になる場合があります。最善策は、次のようにして
XGen に判断してもらうことです。
これにより、Maya を検出する xgen モジュールが取り込まれ、任意で API の Maya レイヤが取り込まれます。Maya の内部と外部で実行されるスクリプトを使用していて、API の Maya 専用部分からメソッドを呼び出す場合は、それらを条件付きブロック内に配置する必要があります。これに安全に対処する方法は、次のように
XGen の Maya 検出を使用することです。
import xgen.xgGlobal as xgg
if xgg.Maya
# Do something maya specific like using XGen's Maya API
これは XGen グローバル モジュールを取り込みます。これには Maya を検出する機能があります。この設定が終わったら、その xgg.Maya を使用して自分が Maya にいて Maya コードをこれらの条件の範囲内で保護することを決定できます。
ベース API
次のメソッドは、Maya の内側でも外側でも使用することができます。これらは、基底となる XGen データに対し直接実行されます。その多くは、XGen へのさらに速いリンクが必要であれば、C++ の API として libXgAPI.so ライブラリから使用することもできます。
作成および削除
- string createDescription( string palette, string description, string primitive, string generator, string renderer, string method )()
- 新しいディスクリプションを作成し、該当する名前のパレットの中に配置します。パレットが存在しない場合は、それも作成されます。
- bool deletePalette( string palette )()
- 該当する名前のパレットを削除します。これによって、そのディスクリプション、パッチ、オブジェクト、FX モジュール、ガイドなどのすべてが削除されます。
- bool deleteDescription( string palette, string description )()
- 該当する名前のディスクリプションを削除します。これによって、そのパッチ、オブジェクト、FX モジュール、ガイドなどのすべてが削除されます。
オブジェクトのアクセス
- string[] palettes()
- string[] descriptions( string palette="" )()
- 指定のパレットに関するディスクリプションのリストを取得します。または、パレット名がない場合はシーン内のすべてのディスクリプションを返します。
- string palette( string description )()
- 指定のディスクリプションに関するパレットを取得します。これを実行するために、各パレットに関するディスクリプションのリストが検索されます。これは、すべてのディスクリプションに一意の名前が付いていることを前提にしています。
- string getActive( string palette, string description, string type )()
- ディスクリプションから指定のタイプのアクティブなサブタイプを取得します。戻り値はサブタイプ(たとえば SplinePrimitive や CardPrimitive)です。
- bool setActive( string palette, string description, string subtype, bool previewer=False )()
- ディスクリプションに対し指定のタイプのアクティブなサブタイプを設定します。指定されたサブタイプには完全な名前(たとえば CardPrimitive や FileRenderer)を付ける必要があります。
- string[] objects( string palette, string description, bool activeOnly=False )()
- ディスクリプションに関するすべてのオブジェクト(SpherePrimitive や GuideRenderer など)のリストを取得します。
- bool initInterpolation( string palette, string description, string fileName="" )()
- 指定されたディスクリプションのアクティブなプリミティブに対して補間を初期化します。ガイドが新しい位置に移動される、ガイドが追加される、ガイドが削除されるたびに実行する必要があります。
アトリビュートのアクセス
- bool attrExists( string attrName, string palette, string description="", string object="" )()
- Xgen オブジェクトのアトリビュートの有無をクエリします。
- string getAttr( string attrName,string palette, string description="", string object="" )()
- Xgen オブジェクトのアトリビュートの値を取得します。
- bool setAttr( string attrName, string value, string palette, string description="", string object ="")()
- Xgen オブジェクトのアトリビュートの値を設定します。
- string[] attrs( string palette, string description="", string object="" )()
- 指定されたノードに関するアトリビュートのリストを返します。これには、カスタム アトリビュートが含まれません。
- void addCustomAttr( string attrName, string palette, string description="", string object ="")()
- カスタム アトリビュートを追加するアトリビュートには、次のテンプレート パターンを使用して名前を付ける必要があります。custom_<タイプ>_<名前> または custom_<タイプ>_<名前>[#]配列が拡張子[#]で指定されている場合、その配列の各要素にアトリビュートが追加されます。一般的な使用法は、パレットまたは RenderMan レンダラのいずれかにアトリビュートを追加することですが、任意のオブジェクトを指定することができます。
- void remCustomAttr( string attrName, string palette, string description="", string object="" )()
- カスタム アトリビュートを除去するアトリビュートには、次のテンプレート パターンを使用して名前を付ける必要があります。custom_<タイプ>_<名前> または custom_<タイプ>_<名前>[#]配列は拡張子[#]で指定されている場合、その配列のすべてのアトリビュートが削除されます。
- string[] customAttrs( string palette, string description="", string object="" )()
- 指定されたノードに関するカスタム アトリビュートのリストを返します。
- string[] allAttrs( string palette, string description="", string object="" )()
- 指定されたノードに関するアトリビュートを網羅したリストを返します。
Fx モジュール
- string[] fxModules( string palette, string description)()
- 指定したパレットとディスクリプションに関する fx モジュールのリストを取得します。現在アクティブなプリミティブに関して、実行される順序でモジュールが返されます。
- string fxModuleType( string palette, string description, string name )()
- 指定された fx モジュールのタイプを取得します。アクティブなプリミティブに対してモジュールを検索します。
- string addFXModule( string palette, string description, string type, string name="" )()
- 指定されたディスクリプションのアクティブなプリミティブに関する fx チェーンの最後に新しい fx モジュールを追加します。モジュールが正常に追加された場合は、その名前が返されます。エラー時には、空の文字列が返されます。
- bool removeFXModule( string palette, string description, string name )()
- 指定されたディスクリプションのアクティブなプリミティブから、該当する名前の fx モジュールを除去します。成功すると「true」を、失敗すると「false」を戻り値として返します。
- bool moveFXModule( string palette, string description, string name, int dir )()
- Fx モジュールを移動します。モジュール名は、指定されたディスクリプションのアクティブなプリミティブにあるモジュールの検索に使用されます。見つかると、そのモジュールが「dir」の値に応じて上または下に移動します。負の値が「上」、正の値が「下」を意味します。
カリング(Culling)
- string[] culledPrimPatches( string palette, string description )()
- パレットとディスクリプションが指定されると、カリング済みのプリミティブがあるパッチの名前を返します。
- int[] culledPrimFaces( string palette, string description, string patchName )()
- パレットとディスクリプションとパッチが指定されると、パッチ名、カリング済みのプリミティブがあるパッチのフェースを返します。
- set(int) culledPrims( string palette, string description, string patchName, int faceId )()
- パレットとディスクリプションとパッチとフェース ID が指定されると、そのフェースのカリング済みのプリミティブ ID を返します。
バインド情報
- string[] boundGeometry( string palette, string description )()
- パレットとディスクリプションが指定されると、ジオメトリのバインドされた部分すべてに関し名前を返します。XGen では、次の項目もパッチ名前です。
- int[] boundFaces( string palette, string description, string patchName )()
- パレットとディスクリプションとパッチ名が指定されると、そのパッチからディスクリプションにバインドされているフェースのリストを返します。
ファイル入出力
- string importPalette( string palette, string deltas[], string nameSpace="" )()
- 指定された差分ファイルを適用して xgen ファイルからパレットを読み込みます。任意でこのパレットを、指定されたネームスペースに配置することができます。Maya では、wrapPatches と呼ばれる 4 番目の引数(既定値は true)があり、オプションとして使用できます。これを False に設定すると、パレットを取り込むことができ、パッチやガイドをロードしないようにできます。こうすると、パレットをジオメトリなしで取り込み、参照用に使用し、それを他の要素に転送するなどの操作ができます。
- bool exportPalette( string palette, string fileName )()
- 指定したパレットをディスク上の .xgen ファイルに書き出します。
- int createDelta( string palette, string newDelta )()
- 差分ファイルのリストの適用後に Maya にロードされた現在のパレットとバース パレットと比較してから、差分を新しい差分ファイルに書き出します。この関数は、ファイルが正常に書き込まれた場合 1 を返し、処理は成功したが書き込まれたファイルがない(処理前と変化がない)場合は
0 を返し、エラー(差分ファイルに無効な変更が見つかる)が発生すれば -1 を返します。
- bool applyDelta( string paletteName, string delta )()
- string importDescription( string palette, string fileName )()
- xdsc ファイルからディスクリプションを読み込み、パレットに挿入します。ディスクリプションは、パレットのネームスペースに配置されます。そのディスクリプションによって使用されたパレットのエクスプレッションがあれば、それが復元されます。名前の矛盾が見つかった場合は、新しいディスクリプションのエクスプレッションの値がパレットのエクスプレッションに配置され、古い値がエクスプレッションのコメントに配置されます。
- bool exportDescription( string palette, string description, string fileName, bool guides = false )()
- パレットからディスクリプションを(使用される可能性のあるパレット エクスプレッションも含む)、xdsc ディスクリプション ファイルの中に書き出します。guides フラグは予約されており、現在は使用されていません。
- string importFXModule( string palette, string description, string fileName )()
- FX モジュールを xgfx ファイルから読み込み、指定のディスクリプションのアクティブなプリミティブに挿入します。
- bool exportFXModule( string palette, string description, string name, string fileName )()
- 指定されたディスクリプションのアクティブなプリミティブから、該当する名前の FX モジュールを書き出します。
イベントのコールバック
- registerCallback( string name, string function )()
- 該当する名前の XGen イベントが発生した場合に呼び出される関数を登録します。イベント タイプには、PrePaletteCreate、PostPaletteCreate、PreDescriptionCreate、PostDescriptionCreate、および
CurrentDescriptionSet があります。
- deregisterCallback( string name, string function )()
- 該当する名前の XGen イベントが発生した場合に呼び出されないように関数の登録を抹消します。
メッセージ
- setMessageLevel( string type, int level )()
- 特定のタイプのメッセージに関する冗長レベルを設定します。タイプは、debug、warning、stats、quitOnError のいずれかになります。最初の 3 タイプについては、0 から 5 までレベルを設定できます(5 が冗長性が最も高い)。quitOnError には、ブール値を設定します(1 がオンで 0 がオフ)。
- int getMessageLevel( string type )()
- 特定のタイプのメッセージに関する冗長レベルを取得します。タイプは、debug、warning、stats、quitOnError のいずれかになります。最初の 3 タイプについては、0 から 5 までレベルが返ります(5 が冗長性が最も高い)。quitOnError では、返されるレベルが 0 か 1 になります(1 がオンで 0 がオフ)。
一般
- string version()
- 現在実行されている XGen のバージョンのバージョン番号を取得します。
- string rootDir()
- string iconDir()
- string globalRepo()
- string localRepo()
- string userRepo()
- string promoteFunc()
- string objNameSpace( string name )()
- 指定したオブジェクトのネームスペースを取得します。
- string stripNameSpace( string name )()
- オブジェクトからネームスペースを除去し、オブジェクトの名前だけを返します。
- string prepForAttribute( string value )()
- 埋め込まれた新規行とタブ文字の付いた文字列が指定された場合、この関数が文字列の各文字を同じ文字をエンコードしたものに置き換えます。これにより、文字列を 1 行に保存することができます。これは XGen ファイル内への保存やディスクリプション エディタでの編集には重要です。この関数では、prepForEditor と連結して使用した場合に、ラウンド トリップの文字列書式化とアトリビュートの格納が可能です。
- string prepForEditor( string value )()
- エンコードされたタブと新規行の文字の付いた文字列が指定された場合、この関数が文字列を文字が復元されるように変換して、文字列を複数行テキスト エディタの中で使用できるようにします。これにより、エンコードされた文字列を元のエディタ用の形式に復元することができます。この関数では、prepForAttribute と連結して使用した場合に、ラウンド トリップの文字列書式化とアトリビュートの格納が可能です。
Maya Extension の API
ベース API メソッドのすべてを Maya から使用できますが、次のメソッドを使用すれば API がさらに拡張されます。これらは、一般的にその状況では意味がないため、ベース API の一部としては提供されていません。たとえば、Maya で「ガイド名」を受け取り「パッチ名」を返すメソッドは標準
XGen に適用されません。これは、ガイドに名前がなく、単にジオメトリ名に合わせてパッチ名が付けられるためですそうは言っても、ベース API のメソッドのいくつかは Maya でオーバーライドされます。このため、Maya を使用しているときは常に、MayaAPI
を通じて API を参照することで正しいレイヤーが参照されるようにする必要があります。
- string guidePatch( string guide )()
- string guideDescription( string guide )()
- 指定された名前でガイドのディスクリプションを取得します。
- string guideIndex( string guide )()
- そのディスクリプション内のガイドのインデックスを取得します。
- string[] descriptionGuides( string descr )()
- 指定のディスクリプションに関するガイドを取得します。
- string[] descriptionPatches( string descr )()
- 指定のディスクリプションに関するパッチを取得します。
- string[] palettePatches( string palette )()
- 指定したパレット内に含まれるすべてのパッチのリストを取得します。
- string[] geometryPatches( string geometry )()
- ジオメトリの指定ピースにバインドされたパッチを取得します。
- string[] geometriesPatches( string geomList[] )()
- リスト内のジオメトリのいずれかにバインドされているパッチを取得します。この関数は、シーケンス内のジオメトリが多数ある場合、geometryPatches を呼び出すよりも効率的です。
- string geometryDescriptionPatch( string geometry, string desc )()
- ジオメトリのピースとディスクリプションが指定されると、バインドされた単一のパッチを返します。
- string[] geometryFacePatches( string geometry, string faceId )()
- ジオメトリのピースと faceId が指定されると、そのフェースに関連するすべてのパッチを返します。
- modifyFaceBinding( string palette, string description, string mode="Append" )()
- 現在のディスクリプションのフェースのバインドを修正します。アペンドする モードでは、選択されているフェースが、関連付けられたジオメトリにバインドされているパッチに追加されます。ジオメトリにパッチが存在しない場合は、新しいパッチが作成されます。置き換える モードでは、関連付けられたジオメトリに対して、選択されたフェースがパッチ内のフェースに置き換わります。そして、削除する モードでは、パッチが存在すれば、関連付けられたジオメトリに対してパッチからフェースが除去されます。バインドされたフェースが実行後のパッチにない場合は、パッチが除去されます。
- fixPatchNames( string palette )()
- パレット内のパッチのすべてに対し名前を更新します。ディスクリプションの名前が変更されるか、ディスクリプションがバインドされているジオメトリの名前が変更された場合、パッチもその名前を更新する必要があります。
- string nodeClass( string node )()
- Maya のノードがあれば、XGen オブジェクトの一般的なクラスを返します。ノードが XGen オブジェクトではない場合は、None を返します。
- bool renderable( string node )()
- オブジェクトがレンダリングできるものであれば、true を返します。これは、レンダリングできないオブジェクトにシェーダを割り当てるようなことを避けるために使用できます。
- string[] findSelectedPatches()
- 現在の選択リストに関連するすべての XGen パッチを返します。ガイド、パッチ、ディスクリプション、ジオメトリなどのすべてが、関連するパッチに解決されます。
- string[] bakedGroomManagerBake( string pal, string desc )()
- ベイク処理済みのグルーム マネージャの位置になるまで現在のグルームをベイク処理します。これにより、スタティックなグループが含まれる各ディスクリプションのバインドされたジオメトリに対して XPD ファイルができます。ディスクリプションは残り、ベイク処理済みのグルーム
マネージャがアクティブになります。
- setExportAsDelta( bool value, string pal=None )()
- パレットを全体として書き出すか差分ファイルとして書き出すかをコントロールします。渡された値が true に設定されていれば、パレットに変更があったときにのみ、差分ファイルがパレットに書き込まれます。パレットを渡されていない場合は、シーン内のすべてのパレットが新しい値に設定されます。
Maya MPX API
以下に MPxCommand を示します。これは、XGen API の一部を成し、Maya でのみ利用できます。
- bool xgmGuideGeom -guide string [-numVertices] [-basePoint | -controlPoints] [-lockBasePt]()
- bool xgmPatchInfo -patch string [-description | -geometry | -faceIds | -rename string]()
- bool xgmBakeGuideVertices [-resetPivots]
- ベイク処理がガイドの中を編集します。すべての微調整が除去されます。