シャドウ情報は aiAOV_shadow_matte で取得することができますが、こちらではシャドウをライト毎にレンダリングすることはできません。 この場合はArnoldシェーダの aiShadowMatte を使用する必要があります。 ライトグループ1つだけに対して設定を行う場合は「Shadowを特定のライトグループのみでレンダリング」をご参照ください。
サンプル ダウンロード |
シーン上の5つのライトを4つのライトグループ(left,right,flont,sky)に設定した下記のシーンで手順をご説明いたします。 ライトグループの設定方法については「AOVをライト毎にレンダリング」をご参照ください。
- この方法ではシャドウを落とすオブジェクトと受け取るオブジェクトのマテリアルを aiShadowMatte とする必要がありますので、レンダーレイヤのオーバーライドで行う事をお勧めします。
- レンダーレイヤ(ここではShadowLayer)を1つ作成し、コレクションにシャドウを落とすオブジェクトを登録します。
- コレクションの上で[RMB] > マテリアルオーバーライトを作成 を実行します。
- 「マテリアルのオーバーライド」に aiShadowMatte を設定します。
- aiShadowMatte1 > Shdows > Shadow Color を真っ白にして、シャドウの色がそのままレンダリングされるようにします。 aiShadowMatte1 > Lights > Light Group に、シャドウをレンダリングしたいライトグループ名を入力します。
- この方法では「flont」ライトグループしかレンダリングされませんので、複数のライトグループで同様のレンダリング結果を得るための工程を追加します。
- aiWriteColor を取得し、aiShadowMatte1 と aiShadowMatte1SG の間に挟むように接続します。(1-3で得たaiShadowMatte1 > Out Color を aiWriteColor.Inputに、aiWriteColor.Out Color を aiShadowMatte1SG.サーフェスシェーダに接続。
-
aiWriteColor > Write Color Attributes > Name▼ > <Create New...> をクリックして開いた New AOV パネル > AOV Name にこの aiWriteColor が書き出されるAOV(フォルダ名、ここではShadowFlont)を指名します。 新しく作られた AOV は レンダー設定 > AOVsでも確認することができます。
-
この段階でレンダリングすると ShdowLayer/ShadowFlont の中に aiWriteColor(flontライトグループのシャドウのみが描かれた)画像が作られます。
- aiWriteColor を取得し、aiShadowMatte1 と aiShadowMatte1SG の間に挟むように接続します。(1-3で得たaiShadowMatte1 > Out Color を aiWriteColor.Inputに、aiWriteColor.Out Color を aiShadowMatte1SG.サーフェスシェーダに接続。
- shadow_mask を取得する場合に単純にAOVを有効にするとライトグループ毎の画像を書き出す毎に上書きされてしまいますので、専用のAOVを用意してこれに書き出すようにします。
- まずレンダー設定 > AOVs > AOV Browser > Add Custom をクリックし、flontライトグループの shadow_mask を書き出すAOVの名前(ここでは shadow_mask_flont とします)を設定します。
- レンダー設定 > AOVs を見ると、新たな AOV が追加されたことがわかります。
- aiShadowMatte1 > AOVs > Shadow Mask には先ほど作成した AOV(shadow_mask_flont) を指定します。
- レンダリングすると ShadowFlont には シャドウ、shadow_mask_flont にはシャドウマスクが書き出されます。
- leftライトグループのシャドウも書き出す場合には新たに aiWriteColor2 と aiShadowMatte2 を取得してこれまでと同様の設定を行い、aiWriteColor2.Out Color を aiWriteColor1.Beauty に繋ぎます。
シャドウを出力したいライトグループの数だけこれを積み重ねます。 - 末端のaiWriteColor.Beauty には 新たな aiShadowMatte を取得して aiWriteColor3.Beauty に繋ぎます。 Shdows > Shadow Color は真っ白、Lights > Light Group は設定しません。
これで beauty にはすべてのライトのシャドウが描かれます。
beauty |
||
|
|
ShadowRight |
shadow_mask_flont |
shadow_mask_left | shadow_mask_right |