On this page | |
Since | 17.5 |
このノードは、ワークアイテム生成フェーズ中に(プロセス内で、または、スケジュールが組まれたジョブとして)Pythonスクリプトを実行するワークアイテムを生成します。 この挙動は、Evaluate Script Duringメニューを使って設定することができます。
このスクリプトがワークアイテム生成段階で実行されるように設定されている場合、そのコードは、そのワークアイテムが生成された後に即座に評価されます。 そのワークアイテムがクックされている間は、何も余分な処理は行なわれません。 このモードを使用することで、 Attribute Createノードを使用することなくプログラム的にアトリビュートを作成することができます。
他の評価モードのどれかが選択されていれば、ワークアイテムは、クックされた時にそのスクリプトコードを評価します。 プロセス内で実行されたスクリプトは、現行Houdiniセッション内の他のオブジェクトや設定だけでなく、PDGグラフに関する膨大な情報にアクセスすることができます。 このスクリプトがプロセス外で実行された場合は、そのスクリプトに関連付けられたワークアイテムのアトリビュート、そのスクリプト自体がインポートした何かにのみアクセスすることができます。
このノードは、常に上流のワークアイテム毎にちょうど1個のワークアイテムしか作成しません。 各ワークアイテムは、Python Codeフィールドの内容をワークとして実行します。 独自にワークアイテムの設定を調整したいのであれば、代わりに Python Processorノードを使用してください。
Tip
$HH/help/files/pdg_examples/top_pythonscript
のサンプルでは、このノードを使ってプロセス内ワークアイテムとプロセス外ワークアイテムの両方の扱い方を説明しています。
パラメータ ¶
Script ¶
Generate When
このノードがワークアイテムを生成するタイミングを決めます。 このノードがどの生成モードを必須にしているのか、もしくは、ワークアイテムを動的に生成させる必要があるのかどうか分からないのであれば、通常では、これを“Automatic”のままに設定してください。
All Upstream Items are Generated
このノードは、すべての入力ノードが自身のワークアイテムを生成した時にワークアイテムを生成します。
All Upstream Items are Cooked
このノードは、すべての入力ノードが自身のワークアイテムをクックした時にワークアイテムを生成します。
Each Upstream Item is Cooked
このノードは、入力ノード内のワークアイテムがクックされる度にワークアイテムを生成します。
Automatic
入力ノードの生成モードに基づいて生成モードが選択されます。 入力ノードのどれかがその入力のクック時にワークアイテムが生成されている場合、このノードには Each Upstream Item is Cooked が設定されます。 そうでない場合、 All Upstream Items are Generated が設定されます。
Evaluate Script During
Run on Service Block
このノード内のワークアイテムを、親のサービスブロックが存在すれば、そのサービスブロック上で実行させるかどうかを決めます。
Always
このノード上の他のサービス設定に関係なく、常にワークアイテムをブロックのサービス上で実行します。
Match
Service Name がブロックで使用されているサービス名にマッチした場合にのみ、ワークアイテムをそのブロックのサービス上で実行します。
Never
ワークアイテムをブロックのサービス上で実行しません。
Service Name
Cook Type を Service に設定した場合、このパラメータを使用して、そのサービスの名前を指定します。 サービスの使用方法の詳細は、PDG Service Managerのドキュメントを参照してください。
以下のパラメータは、スクリプトコードの実行に使用するPython実行可能ファイルとその実行可能ファイルに渡す引数を設定します。
これらのパラメータは、Evaluate Script Duringメニューの Cook (Out-of-Process) オプションによって、このノードがプロセス外で実行するように構成されている時に のみ 利用可能です。
Python Bin
スクリプトの実行に使用するPython実行ファイルを決めます。
Hython
hython
を使用してスクリプトを実行します。
PDG Python
PDG Pythonを使用してスクリプトを実行します。
Custom
独自のPython実行ファイルを使用してスクリプトを実行します。
Virtual Environment
仮想環境に関連付けられているPythonインタープリタ上でスクリプトを実行します。
Custom Python Bin
Python実行ファイルのパスを決めます。
このパラメータは、 Python Bin が Custom に設定されている場合にのみ利用可能です。
Venv Path
Python Bin が Virtual Environment に設定されている場合、このパラメータには、スクリプトの実行時に使用する仮想環境のパスを指定します。
Python Arguments
インタープリタの挙動を設定するためにPython実行ファイル自体に渡される追加引数を指定します。
デフォルトでは、このノードは、プロセス外Pythonタスクの引数に-u
を入れます。
この-u
引数は、標準出力バッファを無効にします。
Script Arguments
Pythonスクリプトに渡される引数を指定します。
これらの値は、スクリプトからsys.argv[1:]
を介してアクセス可能です。
Reset Python Path Variables
有効にすると、Houdiniで定義されているPYTHONHOME
とPYTHONPATH
の環境変数が外部Pythonプロセス内でリセットされます。
これは、Houdiniに組み込まれているPythonと互換性のないバージョンのPythonを使用する時に必要になります。
Load as Native Work Item
デフォルトでは、PDGはワークアイテムをpdgjson.WorkItem
オブジェクトとして読み込みます。
このpdgjson.WorkItem
オブジェクトは、ワークアイテムのJSONデータを包みこんだ薄いPythonラッパーを使用してプロセス内Python APIを模倣しています。
このタイプのワークアイテムは、HoudiniベースのPythonインタープリタだけでなく、どのPythonインタープリタでも読み込むことができます。
ただし、hython
をPythonインタープリタとして使用してOut-of-Processをクックする場合、このトグルを有効にすることで、ジョブ中にフルでIn-ProcessワークアイテムをロードするようにPDGに指示することができます。
Batch Type
バッチを有効にするかどうか、このノードがどのタイプのバッチを作成するべきかを決めます。
None
ノード内のワークアイテムは通常通りにクックされ、バッチ処理されません。
Fixed
Batch Size パラメータで決定された固定サイズのバッチが、このノードがタスクを生成する度に作成されます。
Dynamic
サイズ指定されていないバッチが、このノードがタスクを生成する度に作成されます。 スクリプトコード自体が、そのスクリプトが実行された時にバッチにサブアイテムを追加することで、そのバッチのサイズを判断します。
Run Script Code
Python Code を、バッチ内のサブアイテム毎に1回実行しPDGがそのバッチの寿命を管理するべきなのか、 または、コード側で手動でそのバッチサブアイテムを管理するのか決めます。
Batch Size
Batch Type が Fixed に設定されている場合、このパラメータは、バッチ内のサブアイテムの数を決めます。
Setup Script
Run Script Code が Once per Sub Item に設定されている場合、このパラメータを使用することで、バッチ処理自体が処理される前に、一回実行されるPythonコードのブロックを指定することができます。
Expand Variables in Script
デフォルトでは、PDGはスクリプトパラメータをRaw文字列として評価します。
つまり、バッククォート内の$variables
やエクスプレッションはそのままにスクリプトの一部として含まれます。
このパラメータを 有効 にすると、PDGはスクリプトを評価する時に即座に変数/エクスプレッションを展開します。
バッククォートで閉じられた変数やエクスプレッションは、最終スクリプトでは、それが評価された値に置換されます。
Expand Variables in String Attributes
有効にすると、PDGがワークアイテムをスタンドアローンのPythonプロセスに読み込む際に文字列アトリビュート内の$変数
を展開します。
この変数展開は、PDG_DIR
やPDG_TEMP
といったPDG特有のトークンだけでなく環境変数にも対応しています。
このパラメータは、 Evaluate Script During が Cook (Out-of-Process) に設定されている場合にのみ利用可能です。
ワークアイテム毎に実行されるPythonコード。
プロセス外でスクリプトを実行すると、このコードはディスクに保存され、Python BinまたはCustom Python Binで指定されたPythonインタープリタによって実行されます。
このスクリプトは、APIを通じてそのスクリプトに関連付けられたワークアイテムの名前、インデックス、フレーム、アトリビュートにアクセス可能なwork_item
変数にアクセスすることができます。
さらに、intData
, floatData
, strData
の便利関数を使用することで、そのワークアイテムのアトリビュートを照会することができます。
また、このスクリプトに、グローバルアトリビュートを照会することができるgraph
変数にアクセスすることができます。
プロセス外ワークアイテムの場合、このgraph
オブジェクトはアトリビュートデータを照会するためのメソッドのみが含まれ、
プロセス内アークアイテムの場合、この変数には、そのワークアイテムが属しているpdg.Graphが設定されます。
プロセス内またはワークアイテム生成ステージでスクリプトを実行すると、そのスクリプトはHoudiniに埋め込まれているPythonインタープリタを使って実行されます。
work_item
変数だけでなく、self
とparent_item
の変数も利用可能です。
self
変数は、そのワークアイテムを所有しているノードの参照で、parent_item
変数は、その親の参照またはNone
です。
キャッシュ化と出力ファイル ¶
Cache Mode
ワークアイテムから目的のファイル結果がレポートされるように、プロセッサノードがそのワークアイテムを制御する方法を決めます。
Automatic
目的の結果ファイルがディスク上に存在すれば、そのワークアイテムはスケジュールに組まれずにクック済みとマークされます。 そのファイルが 存在しなければ 、そのワークアイテムは通常どおりにスケジュールに組まれます。 上流のワークアイテムの依存関係がクック中に新しいファイルを書き出す場合、このノード内のワークアイテムのキャッシュファイルもout-of-date(古い)としてマークされます。
Automatic (Ignore Upstream)
Automatic と同様ですが、上流のファイルの書き込みは、このノード内のワークアイテムのキャッシュファイルを 無効にしません 。 そして、このノードは自身のワークアイテムの出力ファイルのみをチェックします。
Read Files
目的の結果ファイルがディスク上に存在すれば、そのワークアイテムはスケジュールに組まれずにクック済みとマークされます。 そのファイルが存在しなければ、そのワークアイテムは失敗とマークされます。
Write Files
目的の結果ファイルがディスク上に存在していても、ワークアイテムが常にスケジュールに組まれ、その目的の結果ファイルを無視します。
Copy Inputs to Outputs
このノード内のワークアイテムが入力ファイルを出力ファイルリストにコピーするかどうかを決めます。
Never
入力ファイルを出力ファイルリストにコピーしません。
Always
常に入力ファイルを出力ファイルリストにコピーします。
If Script Doesn’t Add Outputs
デフォルトでは、Python Scriptが独自で何も新しい出力ファイルを 追加しない 場合にのみ入力ファイルがコピーされます。
Expected Outputs From
必要な出力ファイルの指定方法を決めます。
Attribute Name
ファイルパス(s)を含んだアトリビュートの名前を指定します。
このパラメータは、 Expected Outputs From が Attribute Name に設定されている場合にのみ利用可能です。
Custom File Tag
有効にすると、すべての出力ファイルにカスタムタグ値が割り当てられます。 無効にすると、PDGは、ファイルにタグが既に設定されていればそのタグを使用し、タグが存在しなければファイルの拡張子に基づいて自動的にタグを取得します。
Expected Outputs
ファイルリストエントリーの数を決めます。
このパラメータは、 Expected Outputs From が File List に設定されている場合にのみ利用可能です。
Output File
ファイルのパスを指定します。
Schedulers ¶
TOP Scheduler Override
このパラメータは、このノードのTOPスケジューラを上書きします。
Schedule When
有効にすると、このパラメータを使用して、このノードのどのワークアイテムをスケジュールに組むのかを決めるエクスプレッションを指定することができます。 そのエクスプレッションが指定されたワークアイテムに対して0を返すと、そのワークアイテムはスケジューラに組まれずに、即座にクック済みとしてマークされます。 そのエクスプレッションが0以外の値を返すと、そのワークアイテムは従来どおりにスケジュールに組まれます。
Work Item Label
このノードがワークアイテムにどのようにラベルを付けるのかを決めます。 このパラメータによって、固有でないラベル文字列をワークアイテムに割り当てることができ、そのラベルを使用してアトリビュートパネル、タスクバー、スケジューラジョブ名のワークアイテムを区別することができます。
Use Default Label
このノード内のワークアイテムは、TOPネットワークからデフォルトのラベルを使用します。 デフォルトが設定されていない場合は、それらのワークアイテムにはラベルは付きません。
Inherit From Upstream Item
ワークアイテムは親ワークアイテムのラベルを継承します。
Custom Expression
ワークアイテム毎に評価される Label Expression カスタムエクスプレッションをワークアイテムのラベルに設定します。
Node Defines Label
ワークアイテムのラベルをこのノードの内部ロジックで定義します。
Label Expression
有効にすると、このパラメータを使用して、このノードで作成されたワークアイテムに独自のラベルを指定することができます。
このパラメータには、ワークアイテムアトリビュートの参照またはビルトインのプロパティを含めたエクスプレッションを使用することができます。
例えば、$OS: @pdg_frame
は、フレーム値に基づいて各ワークアイテムのラベルを設定します。
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 ¶
CreateAttributes Example for Python Script TOP node
このサンプルでは、Python Script TOPを使用してワークアイテムアトリビュートを作成する方法を説明しています。
PythonScript Example for Python Script TOP node
このサンプルでは、Python Script TOPを使用して、プロセス内またはプロセス外でPythonコードを実行する方法を説明しています。
See also |