PDGで複数パターンをシミュレーションを作成し、それを1枚に統合して比較用画像を作成してみます。
サンプルファイルはこちらです。
リンクをクリックし、20190528_PDG_mosaicフォルダからダウンロードしてください。
今回は高さ、横幅の異なるブロックでできた壁を3パターン作成し、それぞれ破壊シミュレーションを実行しました。
壁を作成する部分はHDA化を行い、PDGのHDA Processorにロードします。
HDAには、ブロックの大きさ、壁の大きさ(ブロックのリピート数)を決めるパラメーターを持たせています。
Top Netを作成し、中にHDA Processorを作成します。
HDA Fileにて、HDAの場所を指定します。
HDA Parametersタブを開きます。
ここにはHDAに設定されたパラメーターが表示されます。今回はBlock WidthとBlock Heightの値を変動させています。
下図で指定された@block_widthと@block_heightは、このノードの前にWedge TOPを追加して設定しています。
HDA Processorの前にWedge Topノードを追加し、block_widthとblock_heightという2つのアトリビュートを作成し、Start/Endで生成する値の範囲を決めて、Ramdom Samplesをオンにします。
Wedgeでは、ランダム値を使ってシステムに変化を与え、比較可能な固有の結果を 指定したワークアイテム分取得することができます。
Wedge Countは、作成するワークアイテムの総数です。
Cook Selected Nodeを実行します。
計算が終わると6つのワークアイテムが作成されています。
HDA Processorの情報を確認し、`@outputpath`でジオメトリファイルがゲットできることがわかります。
この出力されたジオメトリをシミュレーションのためのジオメトリとしてロードし、シミュレーションを行っています。
その結果をMantraでレンダリングします。
この時に出力画像名に、`@frame`と`@wedgeindex`を追加します。
重要なのは、フレームとウェッジ番号をスワップしているところです。Mosaicノードは画像シーケンスを受け取り、それをタイル状にして1枚の画像にします。そのため、1枚の画像に合成するにはフレームとウェッジ番号を逆にしないといけません。
ROP Mantra Renderをクックします。
レンダリングが行われ、6つのワークアイテムがレンダリングされます。
下記のようにレンダリングが終了しました。
Mosaicで同じフレーム異なる番号を1つに合成していきます。
Attribute Createを使用して、mosaicframeという名前のIntegerアトリビュートを作成し、Valueを@frameに設定します。
そのあとにPartion by frameを追加します。
ここでPartionを使用する理由は、次の工程に進む前に上流のワークアイテムが完了するのを待機する必要があるからです。Mosaicで6個のワークアイテムの結果を合成するため、この6個の画像が生成されるまで待機する必要があります。
Parthion by frameは、同じフレーム番号の入力ワークアイテムすべてが完了するのを待ちます。 これは、入力フレームから並列でワークを生成し、それらの中間結果を"最終"フレームに結合する必要があるようなレンダリングとシミュレーションのワークフローで主に使用します。
次にROP Composite Outputノードを追加します。
Frame RangeをStart/Endともに1に設定していますが、その下のExpand Input Files across Frame Rangeを有効にしています。これにより、入力ファルのリストをフレーム範囲に広げることができ、実際のフレーム23フレームがレンダリングされます。
上記ではフレームが1フレームしかありません。そのため、@frameを使うことができないため、あらかじめ用意していた@mosaicframeを使用します。
Output Pictureで出力画像名を指定していますが、$Fではなく、@mosaicframeとします。
ROP Composite Outputの中に入ります。
読み込んでくる画像も、$HIP/render/rbd_`@mosaicframe`.$F.jpgとすることで、先ほど赤枠で囲んだ同じフレーム+異なるウェッジ番号の画像をシーケンスとして読み込むことができます。
Override Frame Rangeを有効にします。有効な場合、File Range Start 、 File Range Length および Shift to Start at Frame パラメータが範囲を設定します。
Shift to Start at Frameは、シーケンスがスタートするフレームを指定。この番号がファイル範囲のスタートと異なる場合、シーケンスはそれに応じてシフト。画像自体は0番から始まるため、1フレームシフトします。
File Range Startは、シーケンスが開始する1番目のファイル番号を指定します。
File Range Lengthは、シーケンスの長さを指定します。
次にMosaicノードを作成してつなぎます。
今回は6個のパターンを1つに合成するので、1行に3つの画像を並べ、読み込み画像は最大6とします。
ROP Composite Outputに戻り、クックします。
23個のワークアイテムがクックされました。
クックが終了すると、指定した場所に下記のように合成された画像が生成されています。