Created on | Updated on
フォローする

PDGとMosaicを使用してパターン比較画像を作成する

 

PDGで複数パターンをシミュレーションを作成し、それを1枚に統合して比較用画像を作成してみます。

mceclip15.png

 

サンプルファイルはこちらです。
リンクをクリックし、20190528_PDG_mosaicフォルダからダウンロードしてください。

今回は高さ、横幅の異なるブロックでできた壁を3パターン作成し、それぞれ破壊シミュレーションを実行しました。

壁を作成する部分はHDA化を行い、PDGのHDA Processorにロードします。

HDAには、ブロックの大きさ、壁の大きさ(ブロックのリピート数)を決めるパラメーターを持たせています。

mceclip0.png

 

Top Netを作成し、中にHDA Processorを作成します。
HDA Fileにて、HDAの場所を指定します。

mceclip1.png

HDA Parametersタブを開きます。

ここにはHDAに設定されたパラメーターが表示されます。今回はBlock WidthとBlock Heightの値を変動させています。

下図で指定された@block_widthと@block_heightは、このノードの前にWedge TOPを追加して設定しています。

mceclip2.png

HDA Processorの前にWedge Topノードを追加し、block_widthとblock_heightという2つのアトリビュートを作成し、Start/Endで生成する値の範囲を決めて、Ramdom Samplesをオンにします。

Wedgeでは、ランダム値を使ってシステムに変化を与え、比較可能な固有の結果を 指定したワークアイテム分取得することができます。

mceclip3.png

Wedge Countは、作成するワークアイテムの総数です。

mceclip6.png

Cook Selected Nodeを実行します。
計算が終わると6つのワークアイテムが作成されています。

mceclip7.png

 

HDA Processorの情報を確認し、`@outputpath`でジオメトリファイルがゲットできることがわかります。

mceclip8.png

 

この出力されたジオメトリをシミュレーションのためのジオメトリとしてロードし、シミュレーションを行っています。

mceclip9.png

その結果をMantraでレンダリングします。

この時に出力画像名に、`@frame`と`@wedgeindex`を追加します。

重要なのは、フレームとウェッジ番号をスワップしているところです。Mosaicノードは画像シーケンスを受け取り、それをタイル状にして1枚の画像にします。そのため、1枚の画像に合成するにはフレームとウェッジ番号を逆にしないといけません。

mceclip8.png

 

ROP Mantra Renderをクックします。

レンダリングが行われ、6つのワークアイテムがレンダリングされます。

mceclip9.png

mceclip10.png

 

下記のようにレンダリングが終了しました。

Mosaicで同じフレーム異なる番号を1つに合成していきます。

mceclip5.png


Attribute Createを使用して、mosaicframeという名前のIntegerアトリビュートを作成し、Valueを@frameに設定します。

mceclip11.png

 

そのあとにPartion by frameを追加します。

ここでPartionを使用する理由は、次の工程に進む前に上流のワークアイテムが完了するのを待機する必要があるからです。Mosaicで6個のワークアイテムの結果を合成するため、この6個の画像が生成されるまで待機する必要があります。

Parthion by frameは、同じフレーム番号の入力ワークアイテムすべてが完了するのを待ちます。 これは、入力フレームから並列でワークを生成し、それらの中間結果を"最終"フレームに結合する必要があるようなレンダリングとシミュレーションのワークフローで主に使用します。

mceclip11.png

次にROP Composite Outputノードを追加します。

Frame RangeをStart/Endともに1に設定していますが、その下のExpand Input Files across Frame Rangeを有効にしています。これにより、入力ファルのリストをフレーム範囲に広げることができ、実際のフレーム23フレームがレンダリングされます。

上記ではフレームが1フレームしかありません。そのため、@frameを使うことができないため、あらかじめ用意していた@mosaicframeを使用します。

Output Pictureで出力画像名を指定していますが、$Fではなく、@mosaicframeとします。

mceclip1.png

 

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は、シーケンスの長さを指定します。

mceclip2.png

 

次にMosaicノードを作成してつなぎます。

今回は6個のパターンを1つに合成するので、1行に3つの画像を並べ、読み込み画像は最大6とします。

mceclip12.png

 

ROP Composite Outputに戻り、クックします。

23個のワークアイテムがクックされました。

mceclip13.png

 クックが終了すると、指定した場所に下記のように合成された画像が生成されています。

mceclip14.png