Labs Triplanar Displace で Roughnessテクスチャを読み込み、ベイクする方法を検討する
ひとまずroughnessをアトリビュートからベイク可能な工程を確認する

環境
Houdini Indie 20.5.487
Labs Triplanar Displace で Roughness を利用する
Labs Triplanar Displaceをマテリアルベースで利用するための課題
Labs Triplanar Displaceはマテリアルなどをブレンドするためのノードではないのでbasecolor、displacement以外のテクスチャを割り当てるための設定は無い。
Megascanなどのマテリアルベースのテクスチャ群でBaseColorと同じ位置に関連テクスチャを反映したい場合、一工夫が必要になる。

Cdから専用のアトリビュートに置き換える
roughnessをこのノードで読み込ませるためにいったん、colorとして読み込ませた後に@roughnessというアトリビュートに保存する

@roughness = @Cd.r;
自作アトリビュートをブレンドする
この自作アトリビュートであるroughnessをブレンドしていくような流れをとればroughnessを扱える。
以下のように同じメッシュに別マテリアルのbasecolor、roughnessなどの情報を読み込ませた2種類の入力とmaskを読み込ませたものを用意しlerpなどでブレンドしていくことでマテリアルブレンドとして扱うことは出来そう。

Roughnessをベイクする
SimpleBakerでアトリビュートのテクスチャ化
いくつか手段はあると思うが楽なので今回はLabsSimpleBakerでベイクしてみる。
SimpleBakerには特定のアトリビュートをベイクする方法があるのでそれを利用してブレンドしたRoughnessなどをテクスチャ化する。
(デフォルトのRoughnessだとMaterialからサンプリングされるのでアトリビュートからベイクしたい場合はカスタムチャンネルでベイクする)

これでひとまずテクスチャから読み込んだRoughnessをブレンド、ベイクまで行うことができた。
コストの高さについての感想
今回のノード構成を取りまわしてマテリアルを組むことについて
・・・とベイク自体はできたが、今回の方法でマテリアルを作成していくのはあまり現実的では無いと感じている。
basecolor/displacementとroughnessのノードが別々の状態になるため、アトリビュートの一致ミスは頻発してしまうと思う。
いろいろ混ぜた結果PBRではなくなってしまうなどのヒューマンエラーも容易に考えられる。
プロシージャルモデリングを組織的に行うためのノード開発の必要性
実用を目指してプロシージャルモデリングをしたいと考えるならVirtousが作成していたAwasomeTriplannerのようなマテリアルベースでテクスチャを取り扱うノードなど、より工程をラッピングしてやらないと作業工程と管理工程が破綻してしまうと感じる。
部品をそろえないといろいろなものを作るにはコスパが悪いので流行らない(もしくは研究しているような企業の情報が出回らない)のかなと感じる。

fish_ball
プロシージャル魚類