グローバルのレジストリを取得するには、以下のようにします:
reg = pdg.TypeRegistry.types()
メソッド ¶
静的メソッド ¶
findFile(file_name)
→ str
Static method
PDG検索パスからファイルを検索し、そのファイルの絶対パスを返します。 ファイルが見つからなかった場合、このメソッドはNoneを返します。
globFiles(extension, subdirectory, full_path=False)
→ list
of str
Static method
PDG検索パスから、subdirectory
内にある指定したextension
の拡張子を持つすべてのファイルを検索します。
full_path
がTrue
の場合、この関数は絶対パスのリストを返し、False
の場合はファイル名のみのリストを返します。
ファイルが見つからなければ、リストは空っぽです。
globPythonModules(unique=True, full_path=False)
→ list
of str
Static method
PDGカスタムタイプ検索パス上のすべてのPythonモジュールを検索し、そのモジュール名のリストを返します。
これらのPythonモジュールは、$HOUDINI_PDG_DIR/types
にあります。
unique
をTrue
に設定すると、同じ名前のモジュールが検索パス上の別々の場所で複数見つかったとしても、固有のモジュール名のみが返されます。
Pythonは、同じ名前の複数のモジュールの中で検索パス順で最初に見つかったモジュールしかインポートすることができません。
unique
をFalse
に設定することで、そのような問題のデバッグをすることができます。
full_path
がTrue
の場合、結果は絶対パスのリストで返されます。
moduleSkipList()
→ list
of str
PDG Pythonモジュールをインポートする時にスキップするファイルとディレクトリの名前のリストを返します。 このリストは、HOUDINI_PDG_TYPE_SKIPLIST環境変数を使用して定義します。
searchPath()
→ list
of str
Static method
PDGノードタイプとPDGノードテンプレートの検索パスを返します。
インスタンスメソッド ¶
addExtensionTag(extension, tag)
ファイル拡張子からマッピングをファイルタグに追加します。
addParentType(type, type_name)
指定したtype
を親/互換ありとマークします。
type
にはpdg.BaseTypeインスタンスを、type_name
には既存タイプのstr
名を指定してください。
addParentTypes(type, type_names)
指定したタイプを、指定したtype
の親/互換としてマークします。
type
にはpdg.BaseTypeインスタンスを、type_names
にはstr
タイプ名のリスト
を指定してください。
addTag(tag)
該当するファイルの拡張子を外したタグを追加します。 このタグは、ファイルタグのグローバルリストに追加され、ファイル拡張子 → タグのマッピングには追加されません。
addTagViewer(tag, viewer, multiviewer=False)
指定したファイルタグとビューアアプリケーション名(例えば、“mplay”や“gplay”)のマッピングを作成します。
このアプリケーションは、ワークアイテムInfoパネルからタグ付き出力ファイルを開いた時に使用されます。
multiviewer
をTrue
に設定すると、PDGは、アプリケーションにはファイル名のリストが渡されるものと想定し、同じアプリケーションインスタンス内で複数のファイルを開くようになります。
extToTag(extension)
→ str
指定したファイル拡張子のファイルタグを返します。
filteredTags(prefix)
→ list
of str
指定した接頭辞のタグのリストを返します。例えば、file/geo
やfile/image
。
isMultiViewer(tag)
→ bool
指定したタグのビューアアプリケーションが複数のファイルを開くことができる場合はTrue
を返します。
isViewable(tag)
→ bool
指定したファイルタグがビューアに関連付けられていればTrue
を返します。
例えば、デフォルトでfile/image
タグはHoudiniに同梱されているmplay
アプリケーションを使ってビューイング可能なので、isViewable("file/image")
はTrue
を返します。
その一方で、isViewable("file/customfile")
は、そのファイルタグ向けのカスタムビューアがインストールされていない限りFalse
を返します。
nodeCallbackType(type_name)
→ pdg.NodeCallbackType
指定したtype_name
のpdg.NodeCallbackTypeを返し、なければNone
を返します。
pathToTag(file_path)
→ str
指定したファイルパスのファイルタグを返します。
pathToViewer(file_path)
→ str
指定したファイルパスのビューアアプリケーション名を返します。
pathToExt(file_path)
→ str
指定したパスに対して既知のアーカイブ接尾辞(例えば、bgeo.sc
)を付けることができれば、そのフル拡張子を返します。
pySerializationModule
: str
Property
シリアライズの過程でPDG Python Objectアトリビュートを読み込んで保存する際に使用されるモジュールの名前。
デフォルト値は空っぽの文字列です。これは、単純なrepr
とeval
をベースにしたシリアライズスキームを使ってオブジェクトが保存されることを意味します。
tagToViewer(tag)
→ str
指定したファイルタグのビューアアプリケーション名を返します。
registerCacheHandler(tag, handler)
指定したタグを使ってカスタムキャッシュハンドラーを登録します。 必要な出力ファイルがディスク上に存在するのかをワークアイテムがチェックする時、これは、ビルトインのキャッシュファイルチェックを呼び出す前にカスタムハンドラーをコールします。 ハンドラーは、指定したタグにより多くマッチしたものから優先してコールされます。
例えば、file/geo/collision
出力タグを持ったファイルは、まず最初にfile/geo/collision
ハンドラーをチェックし、次にfile/geo
ハンドラーをチェックします。
どれかのハンドラーがpdg.cacheResult.Hitまたはpdg.cacheResult.Missを返すと、評価が停止し、その結果が使用されます。
どのハンドラーもそれらの結果のどれかを返さなかった場合またはカスタムハンドラーが見つからなかった場合、PDGは、単にそのファイルがディスク上に存在するかどうかをチェックしてそのファイルをキャッシュ化するかどうかを決めます。
もっと例を知りたいのであれば、独自のファイルタグとハンドラーを参照してください。
registerDirtyHandler(handler, handler_type=pdg.dirtyHandlerType.Any, scheduler_filter=[], node_filter=[], requires_outputs=False, is_global=False)
カスタムワークアイテムをDirty handler
に登録します。
このハンドラーには関数またはコール可能オブジェクトを指定します。
この関数は、指定したhandler_type
に基づいてワークアイテムがDirty(変更あり)または削除される度にコールされます。
このhandler_type
にはpdg.dirtyHandlerType
の値を指定します。
scheduler_filter
とnode_filter
の引数を使用することで、ハンドラーを、指定したタイプのノードまたはスケジューラが所有しているワークアイテムに制限することができます。
handler_type
にpdg.dirtyHandlerType.Files
を設定し、requires_outputs
をTrue
にすると、ワークアイテムの1つ以上のファイルが削除された場合にのみハンドラーがコールされます。
is_global
フラグをTrue
にすると、ワークアイテム毎ではなく、ワークアイテムの数に関係なく、Dirtyオペレーションの度に1回だけハンドラーが呼び出されます。
例えば、以下のハンドラーは、ropfetch
ノードのワークアイテムが削除される度にコールされます:
def func(work_item, file_list): print(work_item) type_registry.registerDirtyHandler(func, handler_type=pdg.dirtyHandlerType.Delete, node_filter=['ropfetch'])
registerHashHandler(tag, handler)
#deprecated
この関数は廃止されました。代わりにpdg.TypeRegistry.registerStatHandlerを使用してください。
registerPreflightHandler(handler, generate_graph=False)
グラフがクックされる度に呼び出されるカスタム関数を登録します。
この関数は、グラフクック内の他のオペレーションが実行される前にコールされます。
generate_graph
がTrue
の場合、静的なワークアイテムが生成された後に、このハンドラー関数がコールされます。
この関数がFalse
を返した場合、または、例外を引き起こした場合、グラフはクックを続けません。
例えば、以下のpreflightハンドラーは、グラフに関する基本的な情報をプリントした後にクックを開始します:
import pdg def preflight(context, options): print("Preflight for context {}".format(context.name)) print(options) for node in context.graph.nodes(): print("Node: {} ".format(node.name)) print("Work Items: {}".format(node.workItems)) return True type_registry.registerPreflightHandler(preflight, True)
Houdiniを起動した時に独自ハンドラーをインストールする方法の例は、独自のファイルタグとハンドラーを参照してください。
registerStatHandler(tag, handler)
指定したタグを使ってカスタムファイル統計用関数を登録します。 ハッシュ値もファイルサイズ値もないファイルがワークアイテムに追加されると、PDGは、そのファイルのハッシュ値/ファイルサイズ値を決めるために、指定したタグにマッチしたカスタム統計用関数を呼び出します。 ハンドラーは、指定したタグにより多くマッチしたものから優先してコールされます。 統計用関数が追加されていない場合、または、どもカスタム統計用関数もファイルタグにマッチしなかった場合、ファイルの更新時刻とディスク上のファイルサイズを使用するビルドインメソッドが代わりに使用されます。
例えば、file/geo/collision
出力タグを持ったファイルは、まず最初にfile/geo/collision
ハンドラーをチェックし、次にfile/geo
ハンドラーをチェックします。
マッチした統計用関数がハッシュ/サイズのどちらかでゼロ以外の値を返せば、その値が使用され、他のカスタム関数はコールされません。
カスタム統計用関数がどちらもゼロを返せば、PDGはゼロ以外の値を返す関数が見つかるまでマッチした関数のリストを掘り下げ続け、最終的にはビルドインの更新時刻の実装を使用します。
統計関数がハッシュ/サイズの片方で値を返しもう片方で値を返さない場合、PDGはビルトインのロジックを使用してその足りないフィールドを計算します。
たくさんのサンプルは、独自のファイルタグとハンドラーを参照してください。
registerModuleTypes(module, quiet=False)
指定したモジュールからカスタムタイプを登録します。
registerDSOTypes(dso_path)
指定した共有ライブラリパスからC++タイプを読み込みます。
registerNode(type_object, node_type, name=None, label=None, category=None, static_gen=True, sub_type=_pdg.nodeSubtype.Normal)
→ pdg.NodeCallbackType
カスタムノードタイプを登録します。
type_object
にはPythonクラスオブジェクトを、node_type
にはpdg.nodeTypeを指定してください。
デフォルトでは、name
とlabel
には小文字でそのPythonクラス名が設定され、category
は空っぽのままになります。
static_gen
フラグは、このノードの Generate When パラメータをAutomatic
に設定した時に静的ワークアイテムの生成を優先させるのかどうかを指定します。
registerPythonPath(path, update_tops)
指定したパスのPythonモジュールから、登録されたタイプを読み込みます。
registerScheduler(type_object, name=None, label=None, parm_category=None, node_category='Schedulers')
→ pdg.SchedulerType
カスタムスケジューラタイプを登録します。
type_object
にはPythonクラスオブジェクトを指定してください。
デフォルトでは、name
とlabel
とcategory
には小文字でそのPythonクラス名が設定されます。
category
は、スケジューラのプロパティ(Job Parms)の配置先を決めるのに使用され、それらのプロパティのspare_category
に相当します。
node_category
は、HoudiniのTabメニュー内でこのノードが見つかる場所です。
registerRegenerationHandler(handler)
ノードがワークアイテムの再生成をする必要がある時に呼び出されるカスタムハンドラーを登録します。 このハンドラーによって、PDGはワークアイテムの再生成プロセスを完全にスキップしたり、または、再生成を有効にしつつアトリビュートの変更が原因のキャッシュファイルの無効化をスキップすることができます。
このハンドラーには、2つの引数(ノードとワークアイテムのリスト)を受け取る関数を指定してください。 その関数は必ずpdg.regenerateResultで定義された列挙エントリーのどれかを返してください。
registerTransferHandler(tag, handler, use_mod_time=False)
ワークアイテムまたはスケジューラがファイルをリモートディレクトリにコピーする必要がある時に呼び出されるカスタムハンドラーを登録します。
そのカスタムハンドラーは、必要に応じてファイルをコピーするのか、それとも、デフォルトのファイルコピーロジックに依存するのか選択することができます。
そのカスタムハンドラーは、指定したtag
で始まるファイルに対してのみコールされます。
use_mod_time
がTrue
の場合、そのカスタムハンドラーはさらにPDGが内部で使用している変更時刻キャッシュ化ロジックを使用します。
False
の場合、そのカスタムハンドラー関数は、ファイルを再度コピーする必要があるのか判断するための独自のキャッシュ化ロジックを組む必要があります。
registeredType(reg_type, name)
→ pdg.BaseType
指定したpdg.registeredTypeとタイプ名のPDGタイプオブジェクトを返します。
registerWorkItem(type_object, name=None, label=None)
→ pdg.WorkItemDataType
カスタムワークアイテムタイプを登録します。
type_object
にはPythonクラスオブジェクトを指定してください。
デフォルトでは、name
とlabel
には小文字でそのPythonクラス名が設定されます。
registerService(type_name, type_label, command)
→ pdg.ServiceType
カスタムサービスタイプを登録します。
type_name
は、そのサービスタイプの識別子で、固有な名前にしてください。
type_label
は、そのサービスに関して人に分かりやすい名前を指定してください。
command
は、PDGサービスマネージャがクライアントインスタンスを起動するのに必要なコマンドライン引数を指定した文字列を指定してください。
reloadCustomHandlers(existing=True)
Pythonを介して登録済みのすべてのカスタムハンドラー(例えば、キャッシュハンドラー、ファイル統計ハンドラー、事前点検ハンドラー)をリロードします。
それらのハンドラーが定義されているモジュール(s)もリロードされるので、ディスク上のスクリプトファイルへの変更もPDGで反映されます。
existing
がTrue
に設定されていれば、PDGは、以前に登録されていて且つ最低でも1個のカスタムハンドラーを含んでいるモジュールのみをリロードします。
existing
がFalse
に設定されていれば、PDGは、検索パス上のすべてのモジュールをリロードし、それらのモジュール内で見つかったすべてのハンドラーを再登録します。
schedulerType(type_name)
→ pdg.SchedulerType
指定したtype_name
のpdg.SchedulerTypeを返し、なければNone
を返します。
serviceType(type_name)
→ pdg.ServiceType
指定したtype_name
のpdg.ServiceTypeを返し、なければNone
を返します。
setDefaultWorkItem(item_type)
デフォルトのワークアイテムタイプを、指定したpdg.WorkItemTypeオブジェクトに設定します。
setPySerializationModule(module_name)
Pythonオブジェクトアトリビュートをシリアライズ/デシリアライズする際に使用するモジュールの名前を設定します。
ファームに送信するワークアイテムデータを保存する時、デフォルトでは、オブジェクトのrepr
が使用されます。
カスタムモジュール名を指定すると、代わりにそのモジュール内のdumps
関数とloads
関数を使用して、それぞれオブジェクトの保存と読み込みを行ないます。
例えば、このモジュールにpickle
を設定することで、Pythonのビルトインのシリアライゼーションを利用することができます。
別の方法として、モジュール内に独自のシリアライゼーションを記述して、HoudiniのPythonパスからそのモジュールにアクセスすることもできます。
tags
: list
of str
Property
すべてのファイルタグのグローバルリスト。
typeNames(reg_type, include_aliases=False)
→ list
of str
指定したpdg.registeredTypeのタイプ名のリスト。
include_aliases
がTrue
の場合、他の具体的なタイプのエイリアスであるタイプ名までもが出力リストに含まれます。
workItemDataType(type_name)
→ pdg.WorkItemDataType
指定したtype_name
のpdg.WorkItemDataTypeを返し、なければNone
を返します。