HOME

Maneki Pipeline

ゲーム開発のためのプロシージャルワークフロー

AI生成した3Dモデルのパイプライン③:コンバートパイプラインのプロトタイプ

AI生成したモデルをゲームエンジンで利用できるようなパイプラインのプロトを作る

今回はコンバートパイプラインとして整備していくにあたり、

  • ディレクトリ以下にある生成モデルをPDGを使って一括でコンバートする仕組み
  • コンバート前後のモデルのレンダリング画像を作成する仕組み

を作成してみます。

  • レンダリング画像から表を作成する仕組み

も作成してみたが、Houdini外で行ったので今回は結果だけ載せています。
(次の記事で触れます)

一括コンバート

ディレクトリ階層以下のすべてのダウンロードデータをコンバートしていく仕組みをPDGで作成する。

TOPの準備
TOP Networkを作成し、

前回作成したSubNetworkの横にTopを作成

FilePatternNode、RopFetchを作成する。FilePatternをDirectories Only、ダウンロードデータを保存しているルート以下すべてをPattern設定。RopFetchは前回作成した、コンバータ用のSubNetwork内にあるFBX出力用のノードを選択する。

Top内でノードを作成
RopFetchでコンバート後のFBXエクスポートを指定

前回SubNetworkの外から設定できるようにしたRoot directoryとResourceDirectoryをTopのアトリビュートで設定する。

ディレクトリパス指定用のパラメータにTOPアトリビュートを設定

Topでディレクト以下の一括コンバート
TopをクックするとFilePatternの検索結果がアトリビュートとして反映され、ディレクトリ以下にある展開したAI生成モデルすべてにコンバートが実行できるようになる。

Topによってディレクトリ以下のダウンロードした生成モデルを一括でコンバートできる

TOPのFilePatternノードでfbxを参照する方法は以前以下のリンク先のページでまとめたので良ければご参照ください。

PDGで複数のFBXを読み込む
https://www.procedural.jp/articles/spr0jzlwsf2

レンダリング画像を合わせて作成

コンバート時に元モデルとコンバート後モデルのレンダリング画像を合わせて作成する仕組みを作成する。

SOPを一部調整
レンダリングを行うデータはサイズを統一させたいのでレンダリングするタイミングでMatchSizeノードを接続し、Y軸の下端合わせとリサイズを行う。StashTransformに変形値を保存し、fbxの出力前でサイズをRestoreする。
LOPを作成して、先ほどリサイズしてPolyRedcuctionを行ったデータをLOPに入力する。

SOPノードの整理とレンダリングサイズへのリサイズ、元のサイズへのリサイズを追加

LOPの準備
LOP内でマテリアルの準備やレンダリング、ジオメトリの入力を作成

LOP内でノードを作成

MaterialLibrary内でKarma Material Builderを作成して元のテクスチャを読み込んだマテリアルを作成する。テクスチャパスの指定はTOPのアトリビュートを利用している。

`details("../../../../Setting/", "tex_file_path")`

画像出力パスの設定
ライティングなど設定してレンダリングの準備を整え、KarmaRenderSettignの出力パスをエクスプレッションで作成する。

Settingで作成したパスとTOPのアトリビュートで保存先のパスを作成し、rawモデルのレンダリング画像のパスを設定。その後、リファレンスコピーを作成してコンバート後のモデルのOutputPictures部分だけ書き換えて2種類の保存用KarmaRenderSettingを作成する。

`details("../../Setting", "export_directory_path")`/`@filename`_raw.jpg
`details("../../Setting", "export_directory_path")`/`@filename`_remesh.jpg
リファレンスコピーでノードを作成し、その後出力パス名だけ変更した

各々のUSD Render Nodeからrawモデルとコンバート後のメッシュをレンダリングが確認できた。

元モデル、コンバート後モデルのレンダリング画像を出力できたことが確認できた

前項で作成したTOPノードに新たにこの二つのUSD Render Nodeを紐づければTOP実行時に合わせて各リソースのrawモデル、コンバート後モデルのレンダリング画像も作成してくれる仕組みができる。

Topにレンダリング画像を作成する工程を追加

Expression作成時におけるリファレンスのススメ
余談だが Create Reference Copyで作成したノードはExpressionの確認にも使いやすい

パスなどのExpressionは結果が判りづらいが、Create Reference Copyすると結果の確認をしながら作成できる

クライアント向けの一覧資料を合わせて作成

各モデルの比較画像を作成したのでクライアント向け資料として一覧できるようにリスト化する。

作成結果(工程は次回)
今回OpenPyxlを使ったのだがHoudiniにデフォルトで入っておらず、Houdini外からPythonを使って資料化したので今回は割愛。

変換結果をリスト化して管理できるようにする

Pythonで画像の資料化は次回、別記事として生成AIの名称ルールと紐づけてまとめます。


ひとまずやりたいことの全体像が見えてきました。

Pythonを使った資料化はHoudiniにOpenPyxlをインストールして使うこともできるのですが、セットアップ周りの手間が増えるのと環境統一や動作確認などの負荷から、僕としてはHoudiniに外部モジュールを追加するのは避けがちです。

fish_ball

プロシージャル魚類