すあまの備忘録

誰得内容の自分のための非営利目的備忘録ブログ(筆者がわかっても内緒にしてください)

Whale Jump Vol.5 -LOP Rendering, Composite

vol.1-4の続き

f:id:godofsuama:20211230184927p:plain

はじめに

ありがたいチュートリアルがあるので先に見ましょう。

www.youtube.com

シェーダーの掘り下げ等は上記チュートリアルにあるので記載しません。

USDの運用も書いてないです。

LOP

記載のやり方が正しいわけではないので注意

Mesh

f:id:godofsuama:20211230185049p:plain

SOP ImportでSOP階層のNullからMeshを読み込みます。

Load as Referenceのチェック入れてもいいかなと思ったんですがバッチレンダーしないのでオフ。

それぞれMaterial Libraryノードでマテリアルをアサインします。

f:id:godofsuama:20211230185409p:plain

WhaleとBoatを同様に設定してMergeして終了

Ocean Far

f:id:godofsuama:20220102155821p:plain

Mesh同様にSOP Importで読み込み、Material Libraryでマテリアルをアサインします。

左は表面のみのメッシュで、Ocean Surfaceマテリアルをアサイン。

f:id:godofsuama:20211230224154p:plain

右はExtrude Volumeした厚みのあるメッシュで、Ocean Volumeをアサイン。

f:id:godofsuama:20211230224245p:plain

右はレンダリングでのPrimary Visibilityを切りたいので、Render Geometry SettingsでRender Visibilityを-primaryに設定。

Uniform Volumeの箇所も設定します。

f:id:godofsuama:20211230185811p:plain

Ocean Near(Flip, White Water)

f:id:godofsuama:20220102155913p:plain

左と中央は先程のOcean Farと同じ設定、同じマテリアルのアサインです。読み込んでいるメッシュが違うだけ。

右はWhite Waterで、SOP ImportだとDensityしか読み込まれなかったため(Gradientが読み込まれない)、Volumeノードでキャッシュを直接指定して読み込んでいます。

この部分は上記Rebelwayのチュートリアルになかったので合ってるかは不安ですが結果は多分出ています。

f:id:godofsuama:20211230224451p:plain

Scene Graph Treeで確認するとDensityとGradientどちらもある。 f:id:godofsuama:20211230190141p:plain

SOP ImportだとDensityしかない f:id:godofsuama:20211230190216p:plain

White WaterはBasic White Waterマテリアルをアサインします。 f:id:godofsuama:20211230224030p:plain

f:id:godofsuama:20211230224103p:plain

Gradientが出ないとどうなるかというと、

f:id:godofsuama:20211230223827p:plain
Gradientなし

f:id:godofsuama:20211230223858p:plain
Gradientあり

Light, Camera

上記レンダリングするものすべてをMergeした後にLightとCameraもMergeします。

f:id:godofsuama:20211230190511p:plain

Dome LightにHDRIを貼り f:id:godofsuama:20211230190542p:plain

カメラはScene Import Cameraでobj階層のカメラを読み込んでいます。

共通レンダー設定

f:id:godofsuama:20211230190654p:plain

ここでDisplacementの精度とMotion Blurの設定を事前にしておきます。

レンダリング用のKarmaノードが増えた場合の設定ミスを防ぐためです。

AOVs

f:id:godofsuama:20211230190806p:plain

AOVsも同様にほぼ必要なものを事前定義します。

これでこれ以下の下流は必ず同じ設定でAOVsもレンダリングされます。

f:id:godofsuama:20211230190907p:plain

f:id:godofsuama:20211230190930p:plain

Layer -Ocean Far

f:id:godofsuama:20211230191134p:plain

Isolateノードを使用し、Ocean Farのレンダーレイヤーに必要なものだけを指定します。

f:id:godofsuama:20211230191109p:plain

後はフレームレンジやSamplingを設定したKarmaノードを作成してこのレンダーレイヤーは終わりです。

f:id:godofsuama:20211230191220p:plain

Layer -Ocean Near

f:id:godofsuama:20211230191246p:plain

Ocean Farで作ったIsolateノードをReference Copyし、Prune UnselectedだけをBreakしてオフにします。

f:id:godofsuama:20211230191333p:plain

これでOcean Far以外のすべてが取り出されます。

追加のMask AOVsを指定し、

f:id:godofsuama:20211230191439p:plain

ちなみに今までどおりシェーダー内でBindすればAOVとして使えます。 f:id:godofsuama:20211230192502p:plain

WhaleもBoatも一緒にFLIPとレンダーするため、CryptomatteのAOVsもだします。

f:id:godofsuama:20211230191514p:plain

最後に、Render Geometry SettingsでWhite waterを指定してPrimary Visibilityを切ります。

これで反射屈折には影響するがレンダリングはされないWhite Waterになります。

f:id:godofsuama:20211230191618p:plain

レンダー設定して終わり f:id:godofsuama:20211230191740p:plain

Layer -White Water

このレイヤーはVolumeでAOVsがほとんど出ないので、途中から分岐します。

IsolateはOcean NearをReference Copyします。

f:id:godofsuama:20211230221830p:plain

Render Geometry Settingsを以下のように設定して、White Water以外をMatteにします。

f:id:godofsuama:20211230192211p:plain

Rendering

TOPでのレンダリング時は、ROP Fetchで画像の部分を指定します。

f:id:godofsuama:20211230193243p:plain

Composite

コンプはNukeでやっています。大事そうな部分だけざっくり説明

f:id:godofsuama:20211230193648p:plain

Near / Farの境界

Ocean Far / Nearのオーバーラップ部分を広めにとったため、2つを重ねたら境界線はほぼ見えません。 f:id:godofsuama:20211230194306p:plain

f:id:godofsuama:20211230194353p:plain

もし見える場合はMaskのAOVを出したりして調整しましょう。

White Water

実はそのままWhite Waterを乗せるとかなりFLIPとの馴染みが悪く、

f:id:godofsuama:20211230194012p:plain

Maskで色替えすることで馴染みを良くしています。

f:id:godofsuama:20211230194113p:plain

これはCurvatureベースで作成したedgeのAOVで f:id:godofsuama:20211230194522p:plain

これで色を白っぽくしてWhite Waterとの馴染みを調整しています。

ただこのAOVがかなりパカ付きやすいのでなかなか難しいです。