RenderVarごとにRenderProductを設定し、各チャンネルをレンダリングする
レンダリング画像、basecolor、roughness、metalness、normalの各チャンネルをレンダリングした画像を作成したい

RenderVarについて
前回までの内容について
以前の記事で各チャンネルごとにRenderVarを分けることができた
カメラから見た法線とテクスチャ法線をブレンドする
https://www.procedural.jp/articles/jehhyznnfgo
今回はこの各チャンネルのRnderVarを個別の画像にレンダリングできるようにする

Karma MaterialX
ノード構成
以下のような構成で各チャンネルをRenderVarに紐づけている。
Metalnessは今回テクスチャを使っていないのでMtlxConstantを接続している。

Constantというノードもあるがマテリアルの色の入力にそちらを使うとエラーがでてしまうようなので注意

RenderProductノードの作成
RenderProductを編集し、レンダリング画像の設定を行う
出力したいRenderVarごとにRenderProductを作成。
タブメニューは「RenderProduct」と「RenderProductEdit」が存在するが、今回はEditの方で5つ作成した。

RenderProductのOrderdRenderで出力するRenderVarを指定できる。
一つだけにするとtgaのようなマルチレイヤーに対応していない保存形式でも出力したいRenderVarが出力できた。
ProductNameで出力ファイル名を指定できる。今回は$OSでノード名を接尾語にしている
出力
USD Render Ropの実行
各RenderProductをUSDRenderRopでレンダリングすると各チャンネルの画像の出力ができる。


補足:TOPで各チャンネルをまとめてレンダリングする
各チャンネルを一括でレンダリング
top networkを作成し、各USDRenderRopに紐づけたRopFetchを作成しておくとすべての各チャンネルのレンダリングをまとめて実行できる。


レンダリング周りは知識不足が多く、しらべるのはかなり大変でしたがいざ形になると感動できました。
AOVを扱うとレンダリングしたいものをレンダリングできるようになった感じがあります。
MaterialXとKarmaを含むゲームワークフローは伸びしろが非常に大きそう。

fish_ball
プロシージャル魚類