見出し画像

TOPs✕COP Houdiniで画像データを量産する

メリークリスマス!
この記事はHoudini Apprentice Advent Calendar 2023、12/9の記事です。

クリスマスシーズンということで、スーパーのチラシのようなものをHoudiniで大量に作成する仕組みについて解説します。

このような画像を作ります

写真素材は以下のサイトから借りました。
ありがとうございます。

TOPsでCSVを読み込む仕組みを作る

今回の仕組みにはTOPsのCSV inputを使用し、CSVで一枚のチラシに使用する画像ファイル、商品名、価格を定義します。
Excelなどを使用して、CSVファイルを作成し、チラシの枚数分だけimage、name、priceの値を設定します。

CSVで列を作成するだけで大量の画像が作れる

CSVを読み込むためのノードを用意します。
tasksネットワークにAttribute Array TOP を作成し、ワークアイテム上に配列アトリビュートを作成します。
次にcsv input TOPを作成し、CSVファイルの列から取得したアトリビュートを使用して各行のワークアイテムを生成します。

Task Graph Tableで配列アトリビュートを確認できる

ROP networkを作成し、ROP Fetch TOP を使用して、作成した ROP netに処理を任せます。ROP PathはROPの完成後に設定します。
これでCSVを読み込んで連番で処理を行う部分はできました。

TOPsのネットワークは非常にシンプル

COPでテキストや画像を合成する

画像の合成部分を作成します。
ROP netの中にCOP2 netを作成して画像合成用の2Dボリュームのネットワークを作成できるようにします。

COPのネットワークです。
ビューポートはComposite Viewに切り替えると確認しやすくなります。

COPでテキストから画像の作成や、画像の合成を行える

Font COPを使用して、price、nameのAttributeを取得して、値札を作成します。@XXXと書くことができますが、テキストにはシングルクォーテーションで囲って文字列ではなくAttributeとして認識させる必要があります。

`@price`を記載することで、TOPsのpriceAttributeにアクセスできる
Shapeなどの基本的な図形生成も行えるので、単純な合成だけではなく、Substance Designerのようなこともできそうです。

書き出し用に ROP File Output を作成します。
書き出すファイル名にはPDGの並びを連番として使用したかったので、@pdg_indexという組み込みアトリビュートを使用しました。padzero関数で001などのように3桁の数値の列を作成できます。

$HIP/render/Ad_`padzero(3,@pdg_index)`.png

TOPsのROP Fectchに戻り、ROP Pathに先程の ROP File Output を指定すれば完成です。ワークアイテムをクックすると、CSVで指定した画像が連番で生成できます。

9枚の画像があっというまに出来上がった

エフェクトや大規模背景といったイメージの強いHoudiniですが、なんと画像合成にも使えるんですね!ますます活躍の幅が広がりそうです!


いいなと思ったら応援しよう!