Houdini 19.5 PDG/TOPsを使ってタスクを実行する方法

コマンドサーバー

コマンドブロックは、リモートプロセス(例えば、HoudiniやMayaのインスタンス)を起動したり、サーバーコマンドを送信したり、サーバーをシャットダウンすることができます。

On this page

概要

“コマンドサーバー”は、長時間実行型のプロセスです。 コマンドサーバーを起動することで、(そのコマンドサーバーを開始してからシャットダウンする間まで)セッション内で複数のノード/ワークアイテムに対して連続して操作を行なうことができます。

これによって、HoudiniやMayaのインスタンスなどのリモートアプリケーションを起動して、そのインスタンスに対して一連のコマンドを送信することができます。 例えば、処理を開始したいジオメトリファイルを開いて、そのジオメトリに何かしらの操作を実行して、その結果を書き出すことができます。

(HDA ProcessorGeometry Importのノードも参照してください。これらのノードは、Houdiniジオメトリ生成ネットワークをコマンドサーバーとしてではなくて、“単発”で実行することができます)。

コマンドブロックは、フィードバックループブロックと同様です。 つまり、ブロック内のワークアイテムは、セッション内で順々に直列で実行されます。 ブロックパラメータは、複数の直列セッションを起動することができます。

Houdiniには、2つのビルトインのコマンドチェーンツールが同梱されています。 その1つが、持続型HoudiniインスタンスにPythonスクリプトを送信するツールで、もう1つが持続型MayaインスタンスにMELスクリプトを送信するツールです。 他にも、XML-RPCを使って、任意のサーバーを起動、停止、コマンドを送信することができるPythonベースのコマンドチェーンがあります。

Tip

Houdiniをコマンドサーバーとして使ってネットワークまたはアセットをコールする重要なメリットは、Houdiniを コンテンツ作成 ツールとして利用できるという事です。 例えば、Houdiniサーバーを使用することで、TOPネットワークの分岐で新しくHIPファイルを生成してから、その生成したHIPファイルを後でそのTOPネットワークで使用することができます。

How to

  1. TOPネットワークエディタで、⇥ Tabを押して“Maya Command Chain”などの“コマンドチェーン”ツールを選択します。

    このツールは、このサービスタイプ特有の“Server Begin”ノードと“Server End”ノードを配置します。

  2. Beginノードを選択します。パラメータエディタで、セッションの数の指定方法を選択します:

    • デフォルトでは、 Number of Sessions パラメータで指定された反復回数だけセッションが実行されます。Beginノードに上流のワークアイテムが存在すれば、このコマンドチェーンは、入力のワークアイテム毎にsession_countの回数だけ実行します。

    • Beginノードに静的なワークアイテムが存在すれば、 Session Count from Upstream Items を有効にすることができます。これを有効にすると、上流のワークアイテムの数がセッションの数に設定されます。これによって、入力のワークアイテム毎に1回だけブロック内のコマンドチェーンを繰り返すことができます。

    複数のセッションは直列でクックされます。 つまり、コマンドブロックは、1回目のセッションで上流から下流までをクックした後で、2回目のセッションを開始します。

  3. Beginノードがワークアイテムを動的に生成する場合には、さらにEndノードの Use Dynamic Partitioning も有効にしてください。

  4. BeginノードからEndノードの間にCommand Sendノードを接続することで、それらのノードをループの一部にすることができます。

Houdiniは、ブロック内のノード周辺に境界を描画して、そのブロックを可視化してくれます。

メモ

  • Beginノードは、1つ以上のサーバーセッションを開始するワークアイテムを生成します。このサーバープロセスは、“開始した”ワークアイテムが完了した後でも起動したままになります。

  • Endノードは、各セッションの最後の上流コマンドが完了した後にサーバーシャットダウンコードを実行します(このコードが実行される前にグラフのクックが停止された場合は、スケジューラが既知のサーバープロセスすべてを自動的に終了します)。

  • レンダーファームスケジューラを使用した場合、各サーバーセッションは1台のマシンにロックされます。

  • ブロックのBeginノードとEndノードは、その関係性をわかりやすくするために同じカラーを設定してください。ビルトインのコマンドチェーンツールで配置されたデフォルトのノードのカラーはツールによってカラーが異なります。そのノードのカラーを変更することができます。これは特に入れ子化したループと区別するのに役立ちます。

    ブロックを囲んだ境界は、Endノードのカラーと同じになります。

  • 新規に作成されたサーバーは、アクティブスケジューラに登録されます。スケジューラAPIを使えば、名前でサーバーを参照することができます。サーバー自体はワークアイテムによって起動されるのですが、サーバーを起動したワークアイテムのクックが完了した後でも、そのサーバーはそれ以降も実行中になります。

サンプル

以下のディレクトリには、HoudiniコマンドサーバーとMayaコマンドサーバーのブロックの使い方について説明したHIPファイルのサンプルが入っています。

  • $HFS/houdini/help/files/pdg_examples/top_houdinipipeline

  • $HFS/houdini/help/files/pdg_examples/top_mayapipeline

PDG/TOPsを使ってタスクを実行する方法

基本

初心者向けチュートリアル

次のステップ

リファレンス

  • すべてのTOPsノード

    TOPノードは、データをネットワークに送り込んでワークアイテムに変換し、色々なノードでそれを制御するワークフローを定義します。たいていのノードは、ローカルマシンまたはサーバーファーム上で実行可能な外部プロセスを表現しています。

  • プロセッサ系ノードコールバック

    プロセッサ系ノードはスケジューラで実行可能なワークアイテムを生成します。

  • パーティショナー系ノードコールバック

    パーティショナー系ノードは複数の上流ワークアイテムを単一パーティションにグループ化します。

  • スケジューラ系ノードコールバック

    スケジューラ系ノードはワークアイテムを実行します。

  • 独自のファイルタグとハンドラー

    PDGはファイルタグを使用して出力ファイルのタイプを決めます。

  • Python API

    ディペンデンシーグラフを扱うためのPython PDGパッケージのクラスと関数。

  • Job API

    ジョブスクリプトで使用するPython API

  • ユーティリティAPI

    Python pdgutilsパッケージのクラスと関数は、PDGノードでの使用だけでなく、スクリプトやプロセス外のジョブスクリプトでの使用も想定されています。