すあまの備忘録

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

Mantraレンダリング周りメモ vol.4 :反射だけレンダリング

反射だけレンダリングする方法。

反射だけなんかAOVsでいいじゃないかってのもありますが、実写に載せる場合にAlphaが必要なことが多いです。

そのためのAlpha付き反射の出し方…だけどなんで動くのか???


以下のレンダリングの反射だけをアルファ付きで出す方法

f:id:godofsuama:20200521230048p:plain

レンダリングすると以下のようになる。

f:id:godofsuama:20200521230108p:plain

Nukeでとりあえず重ねると以下のようになり、Alphaが存在するのがわかる。

嘘でレンダリングしているため輝度が低めでレンダリングされている。

レンダリング時かコンポジットでの調整が必要。

f:id:godofsuama:20200523021723p:plain

反射を受けるオブジェクトの設定

f:id:godofsuama:20200521231059p:plain

画像でハイライトされているGridが今回の影を受けるオブジェクト

次の項目で作成するシェーダーを受けるオブジェクトにアサイ

反射用シェーダー

mat階層でMaterial Builderを作成し、中に潜って以下のように組む。

反射のボケ具合等はPBR Reflectの箇所で変更

f:id:godofsuama:20200521231611p:plain

Multiplyの箇所は輝度調整用

「PBR Reflect」、「Compute Lighting」を作成し、「PBR Reflect」のfを「Compute Lighting」につなぐ。

ここはなくてもいいが、「Compute Lighting」のout_Fを「Surface Output」のFにつなぎ、同様にout_OfもOfにつなぐ。

「Compute Lighting」のCfをrgbtohsvにつなぎ、hsvを「Vectort to Float」につなぐ。

「Vectort to Float」のfval3を「Compare」のinpu1につなぎ、CompareのTestをEqualに変更。

「Compare」のboolを「Two way」のConditionにつなぎ、「Two Way」のInput1,2にそれぞれ「Constant」の値を0,1にしたものをつなぐ。

「Two Way」のresultを「Surface Output」のAfにつなぐ。

レンダリング設定

f:id:godofsuama:20200521230632p:plain

MantraのForce Objectsに受けるオブジェクトを指定

Forced Phantomに影を落とす側のオブジェクトを指定する。

ライトは必要なものをCandidate Lightsで指定する。

f:id:godofsuama:20200521230704p:plain

反射をレンダリングするため、Reflect Limitを任意の値に変更する。

f:id:godofsuama:20200521230827p:plain

反射の方のレンダリング設定は以下のような方が設定が簡単になる。

Ray Variance Antialiasingのチェックをオフにし、

Pixel Samplesと、Min Ray Samplesを上げて精度を上げる。

特にMin Ray Samplesはある程度上げないとメッシュがずれたように見えるので注意。

反射を受けるオブジェクト自身の反射とライトの反射を消す

自身の反射と周りのライトからの反射をレンダリングしないようにするため、以下の設定が必要

受けるオブジェクトのRender Visibilityをprimaryに変更。

Light Maskをなしにする。

f:id:godofsuama:20200521230427p:plain