見出し画像

Houdini / PDGで機械学習用データ作成

概要:
Houdini H17.5から追加されたPDGを使って、機械学習用の学習データを作ります。今回はSideFXの解説動画でもあった、地形の浸食(Erosion)の学習データの作り方を解説したいと思います。
※今回は学習データの作成のみなので、Pythonで学習させる工程は含んでおりません。またOSはWindows10を使用しました。

SOPノードでの作業

■Heightfieldの作成
まずHeightfieldのモデルを作成しますがここでは解説を割愛いたします。今回は下のような構成で作成しました。※一部エラーフラグ立っていますが無視してください。

■Heightfield Output
このノードでは、下の画像のようにHeightやMaskのレイヤーを2D画像として出力してくれます。1番目がErode前で2番目がErode後です。
Filenameには出力先フォルダを指定しますが、ここで../`@wedgeindex`とすることでファイル名にwedge indexが入るようになります。


TOPノードでの作業

■Wedge
このノードで色んなバリエーション出力するにあたってのアトリビュートやその値を指定することができます。
・Wedge Countでバリエーションの数
・Start/Endで値の範囲
例えば下の画像の場合だと、「heightfield_noise1ノードのxのオフセットの500~5000の範囲内で10パターン作る」となります。
注意点として、今回のようにアトリビュートではなくパラメータを使用する場合は以下のようにパラメータ名ではなく`chs~で指定(パラメータをCopyt ParameterしてPaste Relative Referenceするのが楽)します。さらにTarget Parmeterでパラメータを指定(これは無効にしても作動するかもしれません…)します。

■ROP Geometry Outputノード
Wedgeで指定したバリエーションでジオメトリデータを出力してくれます。SOP Pathにはerode後に作ったNullを指定してます。なお、Erode後のgeoデータを出力しておけばそれ以前のノードであるErode前のgeoデータは出力しなくてもよいです。
パラメータのOutput Fileに、`@wedgeindex`を入れておくと、ファイル名にwedge index番号を入れてくれます。
下記だと例えば、heighterode.112.bgeo.scというファイル名で出力されます。

■ROP Fechノード
ROP Pathで指定したROPノードのSave to Diskボタンを自動的に押してデータを出力してくれるものです。
今回の構成ではHeightfield Outputで指定した条件で画像を自動で出力してくれています。このROP FetchはErode前用とErode後用で2つ用意します。

■Partition by Index
インデックス番号(@wedgeindex)が同じファイルを1つのグループにまとめてくれるノードです。今回の場合だと、Erode前とErode後の2種類の画像をそれぞれ同じペアにしてくれます。

■Image Magick
Houdini内でImageMagickを使用するためには、まずアプリケーションをインストールする必要があるので下記のサイトからインストールします。

※バージョンがいくつかありますが一番上の、ImageMagick-7.0.8-39-Q16-x64-dll.exeでOKです。
さらに、ImageMagickのパスをHoudiniに通す必要があるので、houdini.envファイルに以下のような記述を追記します。""内にImageMagickのパスを入れます。

このImageMagickを使って、2種類の画像を左右に並べて1枚の画像にすることができます。

以上が学習データの作成になります。この後Pythonで学習させていくのですが・・・まだそこは検証できておりませんので今後やっていきたいと思います。

弊社ミクシィでは毎週Houdini勉強会を開催しており(場所はミクシィ本社のある渋谷で木曜19:00~です)、基本的には社内向けなのですが社外の方も交えた会も不定期で開催しております(まだ1回しか実施してませんが・・・)。もしご興味ある方がいらっしゃればご連絡ください!

この記事が気に入ったらサポートをしてみませんか?