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

Tipsとテクニック

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

On this page

クッキング

  • 大規模なデータセットに対してネットワークを走らせる前に、小規模なデータセットを使ってすべてが上手く動作するのかテストしてください。

  • ネットワークをクックする前に、どんな感じでワークが処理されるのか把握したいのであれば、 Taks ▸ Generate Static Work Items (Static vs. Dynamicを参照)を使用します。

ワークアイテム

読み込み時間

HDA Processor TOPノードと ROP Fetch TOPノードのワークアイテムは、 プロセス外で 実行されます。 つまり、これらのプロセッサ系ノードは、ワークアイテム毎に新しくHoudiniセッションを起動する必要があります。 その結果、実ワークの処理時間よりも、ワークアイテムの プロセスを起動する時間 の方が長くなる場合があり、ワークアイテムの読み込み時間が遅くなってしまいます。

この問題を回避する方法が2つあります:

  • ROP Fetch TOPHDA Processor TOPバッチクッキング に対応しています。これは、複数フレームのワークアイテムを1プロセスでクックする処理です。例えば、 ROP Fetch TOP ノード、 ROP Geometry TOPノードだと All Frames in One Batch パラメータを有効にしたり、他のプロセッサ系ノードでも同様の機能があって、フレーム毎に1プロセスを使用するのではなく、1プロセスで全フレーム範囲をクックさせることができます。

  • ROP Fetch TOPHDA Processor TOPPDG Services に対応しています。PDG Servicesは同時に複数のワークアイテムをクックすることができる持続型プロセスのプールです。PDG Servicesでは、そのサービスワーカープロセスが事前に作成されてワークアイテムで再利用されるので、Houdiniセッションを起動する時間も抑えられます。

アトリビュート

  • “Pull”アトリビュート参照を使用してください 。パラメータ内に@attribute構文を使用することで、処理内容を制御することができます(Pull参照とPush参照を参照してください)。“Pull”アトリビュート参照を使用した方がアトリビュートをプッシュしたり、カスタムノードを記述するよりも非常に簡単であり、その上、PDGには解析後にクックを再開することができる重要な機能があります。例えば、@attribute構文を使用しないと、PDG側でどの出力ファイルの名前が変更されるのか予測できないです。

  • インタラクティブなHoudiniでは、アトリビュート参照は、現在選択されているワークアイテムからアトリビュートを参照します 。HIPファイル内の他のネットワーク(ジオメトリを生成するSOPネットワークやレンダリングをコンポジットするCOP2ネットワークなど)に@attribute値があると、それらの参照の“現行”値は、ネットワークインターフェース内で選択されているワークアイテムによって駆動されます。

    例えば、SOPネットワークの出力を表示するようにビューアペインを設定してから、TOPネットワーク内のワークアイテムをクリックすると、ワークアイテム別に異なる出力ジオメトリを表示することができます。

    このメリットを利用すれば、迅速に出力ジオメトリを確認することもできます。 Show Outputシェルフツールは、Geometryオブジェクトを作成し、その中にFile SOPを作成してから、そのFileノードのパスに`@pdg_output`(このパスは文字列パラメータなので、エクスプレッションをバッククォートで閉じる必要があります)を設定します。 ビューア内でネットワークを表示した時に、TOPネットワーク内のワークアイテムをクリックすることで、その出力ジオメトリを表示することができます。 出力ジオメトリの検査が終わったら、そのオブジェクト/ネットワークを削除することができます。

    詳細は、アトリビュート参照を参照してください。

シミュレーション

  • 並列でシミュレーションフレームを生成しないでくださいROP Geometry Outputノードを使ってシミュレーション出力を生成する時は、 ROP Fetch タブに進んで、 All Frames in One Batch を有効にしてください。

    このオプションを無効にしたままにすると、フレームが別々に並列で生成されます。 しかし、シミュレーションは計算したいフレームまですべてのフレームをクックしなければなりません。 このオプションを無効にしてしまうと、フレーム2を計算するためにHoudiniがフレーム1とフレーム2をクックしなければならず、フレーム3を計算するためにフレーム1、フレーム2、フレーム3をクックしなければならなくなります。 これは非常に非効率です。

出力ファイル

詳細は、ファイルパスを参照してください。

  • 一時的な“作業進行中”ファイルと“最終出力”ファイルを別々のディレクトリに分けるようにしてください。例えば、中間ジオメトリファイルを__PDG_TEMP__/geo内に、最終ジオメトリファイルを__PDG_DIR__/geo内に生成するようにしてください。こうすることで、重要な出力ファイルが検索しやすくなり、強制的にリビルドするためにそれらの一時ファイルを一括でクリアすることができます。

  • 破壊的なファイル操作(移動/名前変更、削除)をしないほうが良いです。これらのファイル操作を行なってしまうと、ファイルを見失なってしまって、ディペンデンシーシステムに余計なワークを発動させてしまいます。

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

基本

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

次のステップ

リファレンス

  • すべてのTOPsノード

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

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

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

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

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

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

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

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

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

  • Python API

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

  • Job API

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

  • ユーティリティAPI

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