HOME

RenderVarごとにRenderProductを設定し、各チャンネルをレンダリングする

レンダリング画像、basecolor、roughness、metalness、normalの各チャンネルをレンダリングした画像を作成したい

RenderVarについて

前回までの内容について
以前の記事で各チャンネルごとにRenderVarを分けることができた

カメラから見た法線とテクスチャ法線をブレンドする
https://www.procedural.jp/articles/jehhyznnfgo

今回はこの各チャンネルのRnderVarを個別の画像にレンダリングできるようにする

NormalのRenderVar

Karma MaterialX

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

MaterialXの構成

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

MaterialXConstantではなくConstantを接続した場合のエラー

RenderProductノードの作成

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

出力するRendeVarの指定と保存されるファイル名の指定

RenderProductのOrderdRenderで出力するRenderVarを指定できる。
一つだけにするとtgaのようなマルチレイヤーに対応していない保存形式でも出力したいRenderVarが出力できた。
ProductNameで出力ファイル名を指定できる。今回は$OSでノード名を接尾語にしている

出力

USD Render Ropの実行
各RenderProductをUSDRenderRopでレンダリングすると各チャンネルの画像の出力ができる。

レンダリングされたtga
各チャンネルのレンダリング結果(metalnessは割愛)

補足:TOPで各チャンネルをまとめてレンダリングする

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

TOPの中身
一括レンダリング用のTOPを準備

レンダリング周りは知識不足が多く、しらべるのはかなり大変でしたがいざ形になると感動できました。
AOVを扱うとレンダリングしたいものをレンダリングできるようになった感じがあります。

MaterialXとKarmaを含むゲームワークフローは伸びしろが非常に大きそう。

fish_ball

プロシージャル魚類