pky's creativelog

UE4を中心にデジタル創作のメモログです

pky's creativelog

SideFX Labs / Substanceプラグインの基本的なところ

こちらの記事は、Houdini Apprentice Advent Calendar2020 / 9日目の記事になります。

qiita.com

はじめに

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プラグイン

www.sidefx.com

Substance Archive(sbsar)形式のファイルをHoudini上で読み込んで扱えるようにするプラグインです。
HoudiniのCOP上でsbsarを読み込み、BaseColor, Normalなど各種チャンネルを分離して扱えて、
これらのテクスチャをHoudini上のあらゆる部分で利用可能になります。

Labs Substance Material (SOP)ノード

モデルに対してSubstance Archiveで生成したテクスチャを使ってマテリアルを割り当ててくれるノードです。

f:id:pkyblog:20201204094516p:plain

以下のような、Substance Designerで作成した森の地面マテリアルをsbsarとして出力し、
f:id:pkyblog:20201204124532p:plainf:id:pkyblog:20201204094530p:plain

Labs Substance Material SOPで読み込み、パラメータを設定すると
Substance Archiveを使ったマテリアルがモデルに割り当てられます。

f:id:pkyblog:20201204124555p:plain

注意点として、Metallicは必要ない場合でも真っ黒の単色を入れてsbsarの方にOutputを作成しておきましょう。
Metallicが無いsbsarをSubstance Material SOPで読み込むと、テカテカになってしまいます。

また、Material Settings内に各種オプションがあります。
DirectX Normalであれば、Flip Normal Yにチェックを入れておきます。

f:id:pkyblog:20201208065133p:plain

ハイトマップがあるなら、Enable Texture Displacementにチェックを入れるとモデルをディスプレイスメントすることが出来ます。
ただし、これはPrincipled ShaderのDisplacementで、レンダリング時やビューポート表示では凹凸が付いていますが、
実際のモデルの頂点位置を変えている訳ではありませんので注意が必要です。

Principled Shader

こちらのPrincipled ShapderのDisplacementの項にも書かれていますが、
『デプスの外観を作成しますが、実際に、ジオメトリの修正やオブジェクトの輪郭の変更は行ないません』とあります。

f:id:pkyblog:20201208065141p:plain

青く表示されたポイントがモデルで、Gridから変化していません。
後ほどの作例でハイトマップを使ってモデルの頂点位置を変位させる方法についての一例をご紹介します。

Labs Substance Material SOPHDAとして作成されており、ダブルクリックすれば中を見ることが出来ます。
f:id:pkyblog:20201204131301p:plain

右クリックでAllow Editing of Contentsで編集可能状態にして中を見てみましょう。

f:id:pkyblog:20201204131416p:plain

中を見ると、COP2 NetworkMaterial Networkがあり、入力モデルに対してMaterialノードでマテリアルを割り当てているシンプルな物です。
この中で核になっている部分は、COP2 Networkです。
こちらもダブルクリックして中に入って見ると、次の項で紹介するLabs Substance Archive (COP)ノードを使って、
sbsarファイルを読み込み、各種チャンネル毎にテクスチャを抽出しています。

f:id:pkyblog:20201204132239p:plain

COPでsbsarを読み込み、各種チャンネル毎に分離しておき、
Material Network内のPrincipled ShaderにBaseColorやNormalなど各種テクスチャを設定しています。

f:id:pkyblog:20201204132714p:plain

つまり、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名)となります。

f:id:pkyblog:20201204232105p:plainf:id:pkyblog:20201204232817p:plain

Base Colorというチャンネル名になっています。

ラベル名はどのように付けられているか、作者によってばらける可能性があります。
ベースカラー と日本語で書く人も居るかもしれません。
統一されていないと問題が出るので、基本的にはLabs Substance Archiveノードのオプションにある
Name Image Plane from Usageにチェックを入れておきましょう。

f:id:pkyblog:20201204233021p:plainf:id:pkyblog:20201204233044p:plain

これで、チャンネル名がUsageである、baseColorに変更されます。
f:id:pkyblog:20201204233415p:plain

ただし、このままだとHoudini上で扱うには少し扱いづらくなっています。
COP上では画像のチャンネル名は

  • C (カラーチャンネル)
  • A (アルファチャンネル)

という規定の名前で扱われています。

先ほど紹介したSubstance Material SOPノード内のCOP2 Networkの中が参考になりますので、もう一度見てみましょう。

f:id:pkyblog:20201204234157p:plainf:id:pkyblog:20201204234213p:plain

Base Colorを取り出し、Renameノードで、baseColor から C にチャンネル名(Image Plane名)を変更しています。

また、オプションとしてGamma Correctionを掛けられるようにGammaノードで1/2.2である0.45をかけています。
これはSwitchノードで有効無効を切り替えられるようになっています。

Substance Archive COPを使う場合は、このように色々と仕込みが必要になってきますので注意が必要です。

f:id:pkyblog:20201205001855p:plain

COPノードの各チャンネルは、Composite Viewから見ることが出来るようになっています。

Substance Archive COPを使う場合は、sbsarファイルから各種チャンネル毎に画像を取り出して、
COPノードを使って自由に処理を挟むことが出来る為、SubstanceマテリアルからHoudini上で更に加工することも可能です。
簡単な例をご紹介します。

作例:Heightマップを取り出しCOPで加工してディスプレイスメント

下記の例では、ハイトマップをHoudini上でCOPのContrastノードを使ってコントラスト調整し、モデルに対してディスプレイスメントで頂点を変形した例です。

※RenameノードでHeightをC(カラーチャンネル)に変更していますが、Rチャンネルだけに入って、G,Bは黒になるようです。

f:id:pkyblog:20201205002332p:plain

f:id:pkyblog:20201205002446p:plainf:id:pkyblog:20201205002449p:plain

Attribute VOPでハイトマップを参照し、バーテックスカラー(R)へ入れておいて、
それを使ってAttribute Wrangleで頂点を変形しています。

f:id:pkyblog:20201205003149p:plain
COPではC(カラーチャンネル)にリネームしてから参照しましたが、
参照パスに{height}とチャンネル名を書くことで直接参照する事も可能です。

Labs Substance Material SOPのようにHDAにする場合は、
COPネットワークパスの参照部分はopfullpath関数を使って相対パスを用いて指定します。
また、文字列として展開するため、バッククォートで囲う必要があります。
https://www.sidefx.com/ja/docs/houdini/expressions/opfullpath.html

f:id:pkyblog:20201205002816p:plain

ハイトマップからバーテックスカラーを焼き付けるのにVOPを使っていますが、
Attribute from Mapでも可能です。こちらの方がパス指定だけで済む為、お手軽です。

f:id:pkyblog:20201209065442p:plain

あとは、Attribute Wrangleで法線方向にハイトマップから格納したバーテックスカラーの値を使って
オフセットさせる事でディスプレイスメントになります。

f:id:pkyblog:20201205002831p:plain

f:id:pkyblog:20201208064134p:plain

このように、Labs Substance Archiveを使ってsbsarファイルを読み込み、各種チャンネル毎に取り出し、
COP上でHoudiniのノードを使って更に画像処理することが出来る
ので、大変、自由度が高い仕組みとなっています。

おわりに

記事を読んで頂いて有難うございました。
Houdini/Substance Designerをお使いの方は是非使ってみてください。

または、Substance Designerをお持ちでなくとも、フリーで配布されているsbsarファイルがあれば利用出来ます。
Substance ShareやSubstance Sourceにもフリー素材がありますので試してみてはいかがでしょうか。

15日目の記事では、Substanceプラグインの応用や実例について書く予定ですので、
宜しければ、続きも見てみてください。


また今年、Houdini/Houdini Engine/UE4/Substance Designerを使った書籍、
『背景アーティストのためのHoudiniプロシージャルモデリング実践入門』をBoothに出しました。

こちらのSubstanceプラグインについても触れていますので、ご興味がありましたら見て頂けますと嬉しいです。