SideFX Labs / Substanceプラグインの基本的なところ
こちらの記事は、Houdini Apprentice Advent Calendar2020 / 9日目の記事になります。
はじめに
Substanceと言えばPBRテクスチャ時代になってからは、業界のデファクトスタンダートなテクスチャ作成ツールと言っても良いでしょう。
そんなSubstanceをHoudini上にインテグレートしてくれるのがSideFX LabsのSubstanceプラグインです。
まだ、各ノードには(Beta)と名前が付いていてベータ版扱いですが、以前に比べて完成度も安定感も上がってきています。
こちらの記事では、SubstanceDesignerとHoudiniを繋いでくれるSideFX Labs/Substanceプラグインの基本的なところについて解説します。
動作環境は以下で確認しています。
- Houdini Indie 18.5.408
- Substance Designer 2020.2.1
SideFX Labs | Substanceプラグイン
Substance Archive(sbsar)形式のファイルをHoudini上で読み込んで扱えるようにするプラグインです。
HoudiniのCOP上でsbsarを読み込み、BaseColor, Normalなど各種チャンネルを分離して扱えて、
これらのテクスチャをHoudini上のあらゆる部分で利用可能になります。
Labs Substance Material (SOP)ノード
モデルに対してSubstance Archiveで生成したテクスチャを使ってマテリアルを割り当ててくれるノードです。
以下のような、Substance Designerで作成した森の地面マテリアルをsbsarとして出力し、
Labs Substance Material SOPで読み込み、パラメータを設定すると
Substance Archiveを使ったマテリアルがモデルに割り当てられます。
注意点として、Metallicは必要ない場合でも真っ黒の単色を入れてsbsarの方にOutputを作成しておきましょう。
Metallicが無いsbsarをSubstance Material SOPで読み込むと、テカテカになってしまいます。
また、Material Settings内に各種オプションがあります。
DirectX Normalであれば、Flip Normal Yにチェックを入れておきます。
ハイトマップがあるなら、Enable Texture Displacementにチェックを入れるとモデルをディスプレイスメントすることが出来ます。
ただし、これはPrincipled ShaderのDisplacementで、レンダリング時やビューポート表示では凹凸が付いていますが、
実際のモデルの頂点位置を変えている訳ではありませんので注意が必要です。
こちらのPrincipled ShapderのDisplacementの項にも書かれていますが、
『デプスの外観を作成しますが、実際に、ジオメトリの修正やオブジェクトの輪郭の変更は行ないません』とあります。
青く表示されたポイントがモデルで、Gridから変化していません。
後ほどの作例でハイトマップを使ってモデルの頂点位置を変位させる方法についての一例をご紹介します。
Labs Substance Material SOPはHDAとして作成されており、ダブルクリックすれば中を見ることが出来ます。
右クリックでAllow Editing of Contentsで編集可能状態にして中を見てみましょう。
中を見ると、COP2 NetworkとMaterial Networkがあり、入力モデルに対してMaterialノードでマテリアルを割り当てているシンプルな物です。
この中で核になっている部分は、COP2 Networkです。
こちらもダブルクリックして中に入って見ると、次の項で紹介するLabs Substance Archive (COP)ノードを使って、
sbsarファイルを読み込み、各種チャンネル毎にテクスチャを抽出しています。
COPでsbsarを読み込み、各種チャンネル毎に分離しておき、
Material Network内のPrincipled ShaderにBaseColorやNormalなど各種テクスチャを設定しています。
つまり、Labs Substance Material SOPはHDAにして簡単にsbsarを使ってモデルに
Substance Materialを割り当てられるようにラップしているノードという事になります。
Principled Shaderを使っている為、Labs Substance Material SOPを使う時には、
Substance Designerで作るsbsarファイルは、PBR(Metallic/Roughness)ワークフローで作っておく必要があります。
Labs Substance Archive (COP)ノード
こちらがSubstanceプラグインの実体と言っても良いと思います。
COP上でのみ利用できます。
sbsarファイルを読み込むと、各種チャンネル別に読み込まれます。
デフォルトではSubstance DesignerのOutputノードのラベル名がチャンネル名(Image Plane名)となります。
Base Colorというチャンネル名になっています。
ラベル名はどのように付けられているか、作者によってばらける可能性があります。
ベースカラー と日本語で書く人も居るかもしれません。
統一されていないと問題が出るので、基本的にはLabs Substance Archiveノードのオプションにある
Name Image Plane from Usageにチェックを入れておきましょう。
これで、チャンネル名がUsageである、baseColorに変更されます。
ただし、このままだとHoudini上で扱うには少し扱いづらくなっています。
COP上では画像のチャンネル名は
- C (カラーチャンネル)
- A (アルファチャンネル)
という規定の名前で扱われています。
先ほど紹介したSubstance Material SOPノード内のCOP2 Networkの中が参考になりますので、もう一度見てみましょう。
Base Colorを取り出し、Renameノードで、baseColor から C にチャンネル名(Image Plane名)を変更しています。
また、オプションとしてGamma Correctionを掛けられるようにGammaノードで1/2.2である0.45をかけています。
これはSwitchノードで有効無効を切り替えられるようになっています。
Substance Archive COPを使う場合は、このように色々と仕込みが必要になってきますので注意が必要です。
COPノードの各チャンネルは、Composite Viewから見ることが出来るようになっています。
Substance Archive COPを使う場合は、sbsarファイルから各種チャンネル毎に画像を取り出して、
COPノードを使って自由に処理を挟むことが出来る為、SubstanceマテリアルからHoudini上で更に加工することも可能です。
簡単な例をご紹介します。
作例:Heightマップを取り出しCOPで加工してディスプレイスメント
下記の例では、ハイトマップをHoudini上でCOPのContrastノードを使ってコントラスト調整し、モデルに対してディスプレイスメントで頂点を変形した例です。
※RenameノードでHeightをC(カラーチャンネル)に変更していますが、Rチャンネルだけに入って、G,Bは黒になるようです。
Attribute VOPでハイトマップを参照し、バーテックスカラー(R)へ入れておいて、
それを使ってAttribute Wrangleで頂点を変形しています。
COPではC(カラーチャンネル)にリネームしてから参照しましたが、
参照パスに{height}とチャンネル名を書くことで直接参照する事も可能です。
Labs Substance Material SOPのようにHDAにする場合は、
COPネットワークパスの参照部分はopfullpath関数を使って相対パスを用いて指定します。
また、文字列として展開するため、バッククォートで囲う必要があります。
https://www.sidefx.com/ja/docs/houdini/expressions/opfullpath.html
ハイトマップからバーテックスカラーを焼き付けるのにVOPを使っていますが、
Attribute from Mapでも可能です。こちらの方がパス指定だけで済む為、お手軽です。
あとは、Attribute Wrangleで法線方向にハイトマップから格納したバーテックスカラーの値を使って
オフセットさせる事でディスプレイスメントになります。
このように、Labs Substance Archiveを使ってsbsarファイルを読み込み、各種チャンネル毎に取り出し、
COP上でHoudiniのノードを使って更に画像処理することが出来るので、大変、自由度が高い仕組みとなっています。