さらに詳しくワークアイテムとそのTOPネットワーク内での機能について見てみましょう。ワークアイテムは、行う必要のある特定のジョブの表現と考えます。TOPネットワーク内の2つのワークアイテムサンプルを紹介します。rbd_simのワークアイテムとcolor_scaleのワークアイテムです。
RBDシミュレーションでは、各ワークアイテムがRBDシミュレーション内の1フレームを表しており、それをキャッシュする必要があります。一方、color_scaleノードでは、アトリビュートが作成され、単一のワークアイテムが作成されます。このワークアイテムには、色情報などが格納されます。この場合、Attribute Createノードではシミュレーションとは異なり、従来の意味でのクックは行われませんが、両方ともワークアイテムとなります。
これらのワークアイテムには、設定したい任意の値を保持することができます。また、Outputやframeなどのように保護されたアトリビュートもありますので、注意が必要です。
TOPネットワークで、これらのノードを一緒に変更する場合、親のワークアイテムからアトリビュートを継承されます。
ワークアイテムを1つにまとめ、その後、分割する場合、「Partion by Frame」ノードを使用することができます。同じパーティションに配置する際に、パーティションごとに同じアトリビュートを結合します。ワークアイテムとパーティションの違いについては、この後説明します。
上記のTOPネットワーク内には、主に2種類のノードがあります。プロセッサは新しいワークアイテムを生成します。次に、パーティショナがあり、これはワークアイテムをグループ化し、アイテム間の依存関係を作成します。この仕組みは、ネットワークが、単一パーティション内のすべてのワークアイテムの処理が終わるのを待ってから、処理を継続するということを意味します。
これらの2つのノードの区別は非常に簡単です。緑の点で示されるワークアイテムを生成するのはワーカーで、これらの長方形で示されるパーティションを作成するのはパーティショナーです。
ここでは、ノードの種類の違いをより理解しやすくするための一般的なトピックの注釈を示します。プロセッサのセクションには、以下のノードがあります。
- ROP Geometry outputノード:このノードは、SOP内の既存のジオメトリに基づいてワークアイテムを生成します。
- FIle Pattern TOPノード:このノードは、ディスク上のファイルに基づいて作業アイテムを生成します。
- Wedgeノード:このノードは、ウェッジしたい入力パラメータに基づいて作業アイテムを生成します。
そして、次にパーティショナー側の「Weight for all partitioner」ノードです。これは最も一般的に使用されるパーティショナーの1つです。このパーティショナーは、すべての入力ワークアイテムに対して単一のパーティションを作成します。また、アトリビュートやフレームなどに基づいてパーティションを作成することもできます。
プロセッサではなく、ワークアイテムは状態に応じて異なる色で表示されます。ここでは、これらの色が具体的に何を意味するのかについて、詳細な情報を見つける場所の簡単な参照情報を紹介します。
https://www.sidefx.com/ja/docs/houdini/tops/ui.html
これまでは、ワークアイテムの生成について話してきました。具体的に必要なワークアイテムの数を正確に知ることが重要となります。
例えば、あるシミュレーションのフレームが100個あれば、100個のワークアイテムが必要であることがわかります。これは、静的ワークアイテムを生成することになります。
https://www.sidefx.com/products/pdg/
しかし、例えば上記のようなシーンを見てみましょう。地雷原を走るエージェントがいます。エージェントが地雷に触れるたびに、Pyroシミュレーションがトリガーされます。クラウドシミュレーションを実行する前に、実際に必要なPyroシミュレーションの数を正確に把握する方法はありません。
ネットワークをクックする前に事前にワークアイテムを生成することはできません。それでは、このようなショットに対して、静的な方法と動的な方法の2つの異なるアプローチを見てみましょう。
静的ワークアイテムでは、まず群衆シミュレーションを行い、発動する地雷の数を決定する必要があります。それが分かれば、Pyroシミュレーションを並行して行うことができます。
しかし、動的に行う場合、クラウドシミュレーションを実行する際に、地雷がトリガーされたらすぐにパイロシミュレーションを生成してクックを開始できます。このように動的に作業することは、特にこのような状況では、非常に強力な手法であることがわかります。
では、どちらを使用すべきでしょうか?一般的な経験則としては、静的ネットワークが動的ネットワークよりも好まれます。なぜなら、静的ネットワークでは、必要な作業アイテムの数を正確に可視化できるからです。したがって、ネットワークを完全にクックするためにかかる時間を推定することができます。
しかし、ダイナミックな要素や大規模なプロシージャルジオメトリを扱う場合には、動的ネットワークが避けられない場合もあります。ただ、選択肢がある場合は、ネットワークを静的に設定するように心掛けてください。
。