TOPs✕COP Houdiniで画像データを量産する
メリークリスマス!
この記事はHoudini Apprentice Advent Calendar 2023、12/9の記事です。
クリスマスシーズンということで、スーパーのチラシのようなものをHoudiniで大量に作成する仕組みについて解説します。
写真素材は以下のサイトから借りました。
ありがとうございます。
TOPsでCSVを読み込む仕組みを作る
今回の仕組みにはTOPsのCSV inputを使用し、CSVで一枚のチラシに使用する画像ファイル、商品名、価格を定義します。
Excelなどを使用して、CSVファイルを作成し、チラシの枚数分だけimage、name、priceの値を設定します。
CSVを読み込むためのノードを用意します。
tasksネットワークにAttribute Array TOP を作成し、ワークアイテム上に配列アトリビュートを作成します。
次にcsv input TOPを作成し、CSVファイルの列から取得したアトリビュートを使用して各行のワークアイテムを生成します。
ROP networkを作成し、ROP Fetch TOP を使用して、作成した ROP netに処理を任せます。ROP PathはROPの完成後に設定します。
これでCSVを読み込んで連番で処理を行う部分はできました。
COPでテキストや画像を合成する
画像の合成部分を作成します。
ROP netの中にCOP2 netを作成して画像合成用の2Dボリュームのネットワークを作成できるようにします。
COPのネットワークです。
ビューポートはComposite Viewに切り替えると確認しやすくなります。
Font COPを使用して、price、nameのAttributeを取得して、値札を作成します。@XXXと書くことができますが、テキストにはシングルクォーテーションで囲って文字列ではなくAttributeとして認識させる必要があります。
書き出し用に 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で指定した画像が連番で生成できます。
エフェクトや大規模背景といったイメージの強いHoudiniですが、なんと画像合成にも使えるんですね!ますます活躍の幅が広がりそうです!