水槽の影を薄くしたかった
「脱出ゲーム4Rooms」をリリースしましたが、初の3D作品なので思うように絵作りできなかった箇所が多々あります。その中で一番心残りなのが下図の水槽です。光がガラスや水を透過せずに暗い絵になってしまいました。なんとかしようとライトの光量を増やしたら背後の壁が白トビしてしまうし…。
原因の割り出し
とりあえずガラスと水で分けてレンダリングしてみました。左が「水を抜いた」サンプルで、右がガラスを外して「水だけ」にしたサンプルです。程度の差はありますが、両方とも透明に関わらず影は思っていたよりも濃くなっています。
後で気がついたのですがガラスが白ではなく淡いグレー(Blenderのデフォルト色)だったことが判明、どうりで水よりも影が濃いと思った…。
Cyclesでは影の微調整ができない?
レンダリングモードが「Blender」の場合は下記サイトの説明のように影の微調整ができるようなのですが、「Cycles(レンダリングが綺麗なモード)」の場合は、この設定がありません。

デフォルトでは、透明オブジェクトの影は、オブジェクトがまったく透明ではないかのように、黒一色でレンダリングされます。 しかし…
Cyclesでは上記のような設定もノードを利用して実現する(と思ったので)、Glass shader(ガラス)にTransparent shader(透明)を混ぜてマテリアルを作成しレンダリングしてみました。結果は以下の通りで、ガラスや水をかなり透明に近づけても(90%)影は意外と薄くなりませんでした。
影用のオブジェクトを用意する
ネットで色々調べるとCyclesでは私が考えるようなシンプルな方法では影は調整できないようです。もし影を調整したいなら対象から影を外し、代わりに影用のモデルを追加するようです。
左側は普通のGlass shaderを利用した水で、左はGlass Shader + transparent shaderです。本体の質感は左を利用し、影の質感は右のを利用するようにします。
まず本体用のモデルから影を外します。この設定がOn/Offでなく、もっと細かく設定できればよいのに…。
※濃淡ができていますが、これは影ではなく屈折によるものだと思います。
それで影用のモデルは影だけにします。
2つのモデルを重ねてレンダリングすることで、下のように影を薄くすることが出来ました。1つのモデルに見えますが、実際は右のように2つのモデルを利用しています(画像は分かりやすいようにずらして配置しています)。下段のオリジナルと比較すると影が薄くなっていることが確認できます。
工程が面倒なので本当にこれがベストなのかは疑問なのですが、現段階ではこれで良しとしました。
以前、「特定のモデルだけ照らすライト」について調べていたのですが、それもCyclesではシンプルに実現することはできず、複数のレンダリング結果を合成するようなテクニックが必要でした(今回以上に複雑で利用を諦めたのですが…)。
結局は影なしで…
水槽は複雑な構成なのでモデルを追加するの面倒だな..と思い、手抜きで影を表示しないのみの処置でレンダリングしてみました。そしたら下図のように、多少の影?は残るので合成しないことにしました(暗くなっている部分は屈折や蓋の影なの?)。
理想はまだ先…
影については理解を深めたので勉強は修了としますが、明るくなったぶん他の箇所が気になってしまいます。
●ガラスが弱く見える
・色を少し付ける(薄緑)。
・辺を金具で補強する。
●ガラスが綺麗すぎる
・キズや汚れを少し付ける。
・苔はちょっと減らそうか。
●なんか平面的
・水槽内に光源を設置する。
おしまい。
twitterを本格的に初めてみた。ブログの更新記事をつぶやくのがメイン。あとCocos2dやUnity、その他アプリ開発に関連するツイッターの方をフォローして情報も集められたらなぁと思います。
— 柳澤@ゲーム作るよ (@designdrill) 2015, 12月 28
ピンバック: マテリアル (Materials) [Blender] – Site-Builder.wiki