InstaMATのノードベースでマテリアル作成を行うElementGraphを使ってみた。
マテリアルやテクスチャ作成以外にもメッシュの加工や点群が扱えるようだけど、ひとまず今回も自分が普段行っているワークフローに落とし込んでみようと思う。
普段のワークフローというのは、
- DCCソフトで質感ごとにメッシュを切り分け
- 分けたメッシュからUVマップの画像を書き出し
- 画像処理ソフトでUVマップ画像を使ってNormalマップからRoughnessマップとMetalnessマップを作成
- DCCソフトで確認→画像処理ソフトに戻って調整を繰り返し
前提として、使用するモデルはフォトグラメトリソフトで生成したもので、UV展開とNormalマップ生成を事前に済ませている状態。
Element Graphを起動
Create New ProjectからElement Graphを選択
次ページに進むと、テンプレート選択画面になる。
今回は初めてなのでPBRテンプレートを使用してみる。
Element Graphのノードエディタが起動したところ。
初期状態だと3Dモデルのプレビュー画面がない。
左パネルのツールバーにあるViewportアイコンをクリックするとプレビューが表示される。
ちなみに、このままだと左パネルをGraph LibraryやPackage Managementと共有していて使いづらいので、一番右の矢印アイコンをクリックすると右パネルに移動する。
ViewportのメッシュはViewport左ツールバーのPick Meshアイコンから選択することができる。
Graph Libraryとノード
左パネルのGraph Libraryにはエディタで使用できるノードがまとめられている。
各カテゴリーからノードをエディタにD&Dして配置し使用する。(画像はノイズのノード)
エディタ上で右クリックをして検索窓からノードを呼び出すこともできる。
アセットのインポート
テクスチャ作成の準備をする。
使用する既存のメッシュやテクスチャなどのインポートは、Layeringと同じくPackege Managemantで行う。
Search窓横のアイコンをクリックしてインポート。
今回はFBXとNormalマップを使用する。
ノードを組んでみる
一通り組んでみた状態。
今回はRoughness、Metalnessだけを作成するのでその他のチャンネルは削除している。
処理としては
- 質感ごとに分けたメッシュから必要なメッシュを取り出す(Mesh Extract By Submesh Name)
- 取り出したメッシュを使用してマスクを生成する(Mesh Mask)
- Normalマップにマスクを適用して必要箇所だけ取り出す(Blend)
- ノーマルマップをグレースケール化(Color to GrayScale)
- グレースケールの濃淡調整(Curves)
- Roughness、Metalnessのチャンネルに接続
上記の内容で、冒頭のDCCソフトと画像処理ソフトを行ったり来たりしなくてもInstaMATだけでワークフローを完結できた。
右下のメッシュはPackage Management内のFBXをダブルクリックすると変更できるので、確認しながらノードを組むことができる。
テクスチャのエクスポート
エクスポートもLayeringと同様に行う事が出来る。
完成
エクスポートしたテクスチャをセッティングしてGLBを作成し、glTF Viewerで確認してみた。