On this page |
概要 ¶
サービスブロックは、PDGサービスとフィードバックループを組み合わせて使用します。 サービスブロックは、反復回数が固定された1個以上のループを作成し、サービスワーカープロセスをそのループに割り当てます。 サービスプロセスはそのループ内でロックされ、そのループが完了するまではグラフ内の他のワークアイテムで使用されなくなります。 そのループ内の反復は、クックがBeginノードから始まりEndノードで終わる深さ優先順で逐次クックされていきます。
ブロック内のPDGサービス互換のノードの Cook Type ドロップダウンメニューを Service に変更し、そして、 Run on Service Block パラメータを有効にすることで、 そのループに割り当てられているサービスプロセス上でそのノードが実行されるように構成することができます。 Command Send TOPノードは常にそのノードを含んだサービスブロック上で実行されます。 Attribute CreateやFile Patternなどの他のノードは従来通りに実行されますが、それらのワークアイテムは、そのループで課せられた深さ優先のクック順に従います。
PDGには、いくつかのビルトインのサービスブロックが含まれています
How to ¶
サービスブロックの作成 ¶
-
TOPネットワークエディタ内で⇥ Tabを押して、 Maya Service Block TOPやHoudini Service Block TOPなどの サービスブロック ツールを選択します。
このツールは、 Block Begin ノードと Service Block End ノードを配置します。
-
Block Beginノードを選択します。パラメータエディタで、セッションの数を指定する方法を選択します:
-
セッションの数は、ブロック内の各ループが持つワークアイテムの数を決めます。 デフォルトでは、 Number of Sessions パラメータで指定された反復回数だけ実行されます。 Beginノードに上流のアイテムが存在すれば、このブロックは、入力のワークアイテム毎にsession_countサイズのループを作成します。
-
Session Count from Upstream Items を有効にすることで、上流アイテム毎に1回の反復の単一ループを作成することができます。
-
同じループから複数のセッションが直列でクックされます。つまり、ブロックは、最初のセッションを上から下までクックした後に次のセッションを開始します。
-
異なるループからのセッションは並列で実行することができます。
-
-
-
Block Beginノードと Service Block Endノードの間にCommand Sendノードを接続して、そのノードをループの一部にします。
-
このCommand Sendノードは、スクリプトコードをサービスプロセスに送信することができます。
-
-
サービスブロックのタイプによっては、そのブロック内で他のサービスベースのノードを実行することができます。
-
例えば、このブロックがHoudiniサービスを使用している場合、そのブロック内にHDA ProcessorやROP Fetchを含めることができ、そのノードを共有サービスプロセス上で実行するように構成することができます。
-
そのサービスを使用して実行できない他のノードを含めることができ、その場合は、通常のスケジューリングワークフローが使用されます。
-
Houdiniは、ブロック内のノード周辺に境界を描画して、そのブロックを可視化してくれます。
Shared Server (廃止) ¶
メモ ¶
-
Beginノードは、サービスワーカープロセスをブロック内にロックするワークアイテムを生成します。これによって、グラフ内の他のワークアイテムがそのブロックで実行されているオペレーションに干渉しないようにすることができます。
-
ブロックの最後のEndノードのワークアイテムが評価されると、サービスワーカーはロック解除されます。その時点より前にグラフがキャンセルまたはクックが停止されると、ロックされているすべてのサービスプロセスがロック解除されます。
-
Beginノードの Reset Service パラメータでは、サービスプロセスの状態が各ループの反復の開始時にリセットされるように設定することができます。
-
各サービスプロセスの状態は、PDG Servicesリストを使用して検査することができます。
-
ブロックのBeginノードとEndノードは、その関係性をわかりやすくするために同じカラーを設定してください。ビルトインのサービスブロックツールで配置されるデフォルトのノードのカラーはツールによってカラーが異なります。 そのノードのカラーを変更することができます。 これは、入れ子化したループと区別するのに役立ちます。
ブロックを囲んだ境界は、Endノードのカラーと同じになります。
サンプル ¶
以下のディレクトリには、HoudiniサービスブロックとMayaサービスブロックの使い方について説明したHIPファイルのサンプルが入っています。
-
$HFS/houdini/help/files/pdg_examples/top_houdinipipeline
-
$HFS/houdini/help/files/pdg_examples/top_mayapipeline