Houdini 18.0 タスクを実行する方法

コマンドサーバー

コマンドブロックは、リモートプロセス(例えば、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/pdg/examples/top_houdinipipeline

  • $HFS/houdini/pdg/examples/top_mayapipeline

タスクを実行する方法

基本

次のステップ

  • 外部のプログラムを実行する方法

    TOPノードで外部機能をラップする方法。

  • ファイルタグ

    ワークアイテムは、そのワークによって生成された"結果"を追跡します。各結果には、そのタイプのタグが付きます。

  • フィードバックループ

    For-Eachブロックを使用することで、ワークアイテムに対して一連のオペレーションをループで処理することができます。

  • コマンドサーバー

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

  • PDG Service Manager

    PDG Service Managerは、ワークアイテムのクック時間を短くするために使用される持続型Houdiniセッションのプールを管理します。

  • PDGとレンダーファームスケジューラの統合

    異なるスケジューラを使って、ワークのスケジュールを組んで実行する方法。

  • ワークアイテムのパフォーマンスの可視化

    ネットワーク内のワークアイテムの相対的なクック時間(またはファイル出力サイズ)を可視化する方法。

  • Event Handling

    PDGノードまたはグラフからイベントを制御するためのPython関数を登録することができます。

  • Tipsとテクニック

    TOPsを扱う上で役立つ一般情報と上手な使い方。

リファレンス

  • すべてのTOPsノード

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

  • Processor Node Callbacks

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

  • Partitioner Node Callbacks

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

  • Scheduler Node Callbacks

    Scheduler系ノードはワークアイテムを実行します。

  • Python API

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