On this page |
このノードは、ワークアイテム生成フェーズ中に、プロセス内で、または、スケジュールが組まれたジョブとしてPythonスクリプトを実行するワークアイテムを生成します。 この挙動は、 Evaluate Script During メニューパラメータを使って設定します。
このスクリプトがワークアイテム生成段階で実行されるように設定されている場合、そのコードは、そのワークアイテムが生成された後に即座に評価されます。
そのワークアイテムがクックされている間は、何も余分な処理は行なわれません。
このモードを使用することで、Attribute Createノードを使用することなくプログラム的にアトリビュートを作成することができます。
それ以外の場合、他の評価モードのどれかが選択されていれば、ワークアイテムは、クックされた時にそのスクリプトコードを評価します。 プロセス内で実行されたスクリプトは、現行Houdiniセッション内の他のオブジェクトや設定だけでなく、PDGグラフに関する膨大な情報にアクセスすることができます。 このスクリプトがプロセス外で実行された場合は、そのスクリプトに関連付けられたワークアイテムのアトリビュート、そのスクリプト自体がインポートした何かにのみアクセスすることができます。
このノードは、常に上流のワークアイテム毎にちょうど1個のワークアイテムしか作成しません。
各ワークアイテムは、 Python Code フィールドで指定されたスクリプトをワークとして実行します。
独自にワークアイテムの設定を調整したいのであれば、代わりにPython Processorノードを使用してください。
パラメータ
Script
Work Item Generation
このノードが静的または動的なワークアイテムのどちらを生成するかどうか。 このノードのワークアイテムが静的に計算可能かどうか、もしくは、動的に生成させる必要があるかどうか分からないのであれば、通常では、これを"Automatic"のままに設定してください。
Dynamic
このノードが常に動的なワークアイテムを生成します。つまり、上流のワークアイテムが判明するまで待機し、その上流のワークアイテムから新しいワークアイテムを生成します。
Static
このノードが常に静的なワークアイテムを生成します。つまり、ネットワークを実行する前にパラメータ(と上流の静的なワークアイテム)に基づいて必要だと思われるだけの数のワークアイテムを生成します。
Automatic
入力が静的(静的なプロセッサ、静的な入力のみを使ったパーティショナー、マッパー)な場合、このノードは静的なワークアイテムを生成し、そうでない場合、動的なワークアイテムを生成します。
Evaluate Script During
このノードに保存されているスクリプトコードが評価されるタイミングを決めます。 このスクリプトは、クックステージ中に実行したり、スケジューラによるプロセス外で実行したり、Houdiniセッションと同じプロセス内で実行することができます。 他の方法として、ワークアイテムを生成している時にこのスクリプトを実行することができます。
Copy Inputs to Outputs
このオプションを有効にすると、Python Scriptノードは自動的に入力ファイルを出力ファイルリストにコピーします。 これは、スクリプト内で新しく出力ファイルを追加する予定がなくて、同じ入力を下流のノードに渡したい場合に役立ちます。
以下のパラメータは、スクリプトコードの実行に使用するPython実行可能ファイルとその実行可能ファイルに渡す引数を設定します。 これらのパラメータは、 Evaluate Script During オプションを Cook (Out-of-Process) に設定して、このノードがプロセス外で実行するように構成されている時にのみ利用可能です。
Python Bin
プロセス外でスクリプトを実行すると、このパラメータがスクリプトの実行に使用するPython実行ファイルを決定します。
Custom Python Bin
Python Bin を Custom に設定すると、このパラメータが評価されて、Python実行ファイルのパスを決定します。
Python Arguments
インタープリターの挙動を設定するためにPython実行ファイル自体に渡される追加引数。
Script Arguments
Pythonスクリプトに渡される引数。
これらの値は、スクリプトからsys.argv[1:]
を介してアクセス可能です。
Reset Python Path Variables
このトグルを有効にすると、Houdiniで定義されているPYTHONHOMEとPYTHONPATHの環境変数が外部Pythonプロセス内でリセットされます。 これは、Houdiniに組み込まれているPythonと互換性のないバージョンのPythonを使用する時に必要になります。
Python Code
ワークアイテム毎に実行されるPythonコード。
プロセス外でスクリプトを実行すると、このコードはディスクに保存され、指定したPythonインタープリターによって実行されます。
このスクリプトは、APIを通じてそのスクリプトに関連付けられたワークアイテムの名前、インデックス、フレーム、アトリビュートにアクセス可能なwork_item
変数にアクセスすることができます。
さらに、intData
, floatData
, strData
の便利関数を使用することで、そのワークアイテムのアトリビュートを照会することができます。
プロセス内またはワークアイテム生成ステージでスクリプトを実行すると、そのスクリプトはHoudiniに埋め込まれているPythonインタープリターを使って実行されます。
work_item
変数だけでなく、self
とparent_item
の変数も利用可能です。
self
変数は、そのワークアイテムを所有しているノードの参照で、parent_item
変数は、その親の参照またはNone
です。
Schedulers
TOP Scheduler Override
このパラメータは、このノードのTOPスケジューラを上書きします。
Work Item Priority
このパラメータは、現行スケジューラがこのノード内のワークアイテムの優先度を設定する方法を決めます。
Inherit From Upstream Item
ワークアイテムは、親ワークアイテムの優先度を継承します。ワークアイテムに親ワークアイテムがなければ、その優先度は0に設定されます。
Custom Expression
ワークアイテムの優先度は、 Priority Expression の値に設定されます。
Node Defines Priority
ワークアイテムの優先度は、このノード自身の内部優先度計算に基づいて設定されます。
このオプションは、
Python Processor TOP,
ROP Fetch TOP, ROP Output TOPのノードでのみ利用可能です。
これらのノードは、各自のノードロジックで実装された優先度設定スキームを定義しています。
Priority Expression
このパラメータは、 Work Item Priority が Custom Expression に設定されている時にのみ利用可能です。
このパラメータには、ワークアイテムの優先度を設定するためのエクスプレッションを指定します。 このエクスプレッションは、ノード内のワークアイム毎に評価されます。
Examples
example_top_pythonscript Example for Python Script TOP node
このサンプルでは、PDG/TOPのPython Scriptノードの使い方について説明しています。
See also |