AOVとレンズシェーダーを利用したKarmaテクスチャベイク
CGWikiを運営しているMatt Estela氏がKarmaを利用したテクスチャベイクの方法を共有してくれていたので以前作成したAOVのチャンネルレンダーシーンで利用してみる

環境
Houdini20.5.487
CGWiki の KarmaTextureBake
https://tokeru.com/cgwiki/HoudiniLops.html#texture_baking_with_karma
LensShaderを使ってUVの位置に合わせたレンダリングでテクスチャを作成する方法を共有してくれている
LensShaderを作成
MaterialLibraryを作成し、Karma UV Lensノードを作成する カメラ用のレンズシェーダーでカメラ側でアサインするのでこの時点ではアサインは不要

レンダリング用のカメラを作成
カメラを作成し以下の設定を適用
- View/ Clipping Rangeを 0-2、
- View/ Aspect Ratio を1:1、
- Karma/ Use Lens Shader を有効
- Karma/ Lens Shader VOP に先ほど作成したLens Shaderを設定

RenderSettingを作成
RenderSettingを作成し以下の設定を適用(※KarmaRenderSettingではテクスチャの設定が無いのでRenderSettingを作成)
- Karma/ Global/ TextureBaking/ ObjectID を 1
- Karma/ Global/ TextureBaking/ Tile を 1001
- Karma/ DefaultGeometrySetting/ TextureBaking/ Low Resolution を 1
うまく設定できていればこの段階で設定したカメラを有効にするとKarmaレンダリング時にUVに合わせたレンダリングを表示できます
※AOVをレンダリングするために後でKarmaRenderSettingも使うので不要な設定はしていません

ライトをセットアップし、AOVを作成
レンダリングしたいものに合わせてライトを設定し、KarmaRenderSettingを作成する
KarmaRenderSettingは出力画像を四角にするため
- Resolution を 1024 - 1024 などに設定
また、KarmaRenderSettingでいくつかAOVを作成できるので今回はShadowを有効にしてレンダリングした。
- Image Output/ AOVs(Render Var)/ Component Level Output/ Beauty/ Shadow を有効

上記のモデルを設定したレンズシェーダー、カメラでレンダリングすると以下のようになる


補足:自作AOVをレンダリングに使う
以下の記事でMaterialXと組み合わせて自作したAOVをレンダリングに利用する内容を書いた。
カメラから見た法線とテクスチャ法線をブレンドする
https://www.procedural.jp/articles/jehhyznnfgo
RenderVarごとにRenderProductを設定し、各チャンネルをレンダリングする
https://www.procedural.jp/articles/1nyqkb__fxd4
この記事で作成したマテリアルと今回のLensShaderを使うとカスタマイズしたAOVのUVへのレンダリングも可能




KarmaRenderSettingのAOVにAmbientOcclusionがあるので、ハイモデルからベイクすればAOの作成なども可能
(ハイモデルがローモデルと同様のUV展開をしていないと出来ないが)


拡張性が高いレンダラーって本当に何でもできる気になってきますね
ここまでくると逆にKarmaではできないことって何なんでしょうか

fish_ball
プロシージャル魚類