見出し画像

AutoLuminousはBokehの後に置く

MMDにおいて、AutoLuminousとBokeh系エフェクトはどちらを先に描画すべきなのかを実験します。BokehにはikBokeh v.0.17 & v.0.18b、PowerDOF、XDOFを用います。

実験結果から、一般的にはBokehのあとにAutoLuminousを描画するほうが良さそうです。ただし、HDR非対応のエフェクトを使う場合はこの限りではありません。

■ 実験環境 ■

画像2

Bokehによるぼかしの影響を調べるため、Z:0からZ:500まで間隔50で白い球を置きました。この白い球は材質色すべてを1.0に設定しました。明るい灰色の床ならびに暗い灰色の床の間は距離があいており、ぼかしの大きさが変わるようにしています。

アートボード 24

カメラはY:10, Rx:15に設定し、ライトはカメラ方向から当てました。上記画像では左にエフェクトなしの画像を、右にAutoLuminousを読み込んだ画像を結合しています。


■ 実験結果 ■

各Bokehについて、
・AutoLuminousを先に描画するパターン(以下、A先)を左に
・Bokehを先に描画するパターン(以下、B先)を右に
配置した画像を示します。

反射で発光する場合

明るいオブジェクトに強い光があたることで発光している場合です。オブジェクト自体は発光していません。

ikBokeh v.0.17

画像3

ikBokeh v.0.18b

画像6

PowerDOF v0.0.5

画像5

どのBokehも共通して以下の特徴が見られます。

AutoLuminousを先に描画すると…
・遠い白い球も発光する
・光芒は背後のオブジェクトまでの距離でぼかされる

Bokehを先に描画すると…
・遠い白い玉は発光しにくくなる(まわりの明度とブレンドされるため)
・光芒はオブジェクトによらずぼかされない

反射して発光する場合、明度が1.0強程度なので遠い白い球はBokehの影響を大きく受けるようです。光が距離で減衰することをふまえれば、B先のほうが現実に忠実な表現に見えます。ただ、A先は遠い白い球も「光源として光っている」ことを伝えられそうです。

ikBokehのぼかし量の変化はゆるやかなので、光芒がぼかされてもあまり違和感は覚えません。一方でPowerDOFは急激にぼかし量が増えるので、B先のほうがシャープな光芒になっています。

XDOF v.2.2

画像6

XDOFはHDRに対応していないため、B先だとほぼ発光しなくなります。また、強力で単純なぼかしなので、A先だと光芒がぼかされてしまっている様子がよく分かります。これはXDOFがレンズぼかしではない(遠くにある明るい光を拡散させない)ためです。ある程度遠くにあるオブジェクトの光芒の形をはっきり見せたい場合には良いのかもしれません。


光源として発光する場合

オブジェクト自体がシェーダや他エフェクトによって発光する(明るさが1.0を大きく超える)場合です。

ここではPowerShaderとそのEmissive機能、そして同梱のAutoLuminousPを用いて実験します。AutoLuminousPには光芒の機能はありません。(たぶん)

画像10

ikBokeh v.0.17

画像7

ikBokeh v.0.18b

画像8

PowerDOF v0.0.5

画像9

遠い白い球も発光しているように見えます。各Bokehで多少見え方は違いますが、玉ボケ処理によって遠いオブジェクトもある程度大きく見えるので幻想的かつ存在感があります。遠いオブジェクトを光源として見せたい場合、反射させるよりもきちんと発光機能を使用するほうが良さそうです。

一方で、奥行きを感じさせたい、あるいは手前だけに注視させたい場合はあえて発光機能を使わず反射による発光を使うのも良いと思います。フォグ系やwdarkなど暗くさせるエフェクトで遠いオブジェクトの明るさを強制的に下げるのも手です。

A先・B先の違いも反射の場合よりはありませんが、A先ではAutoLuminous(P)によるディフュージョン効果がぼかされているのでやはりB先が忠実に見えます。

XDOF v.2.2

画像11

XDOFはB先で光らないのは同じです。A先ではikBokehやPowerDOFと違い遠い白い球は小さいままです。玉ボケの幻想的なシーンを回避したい場合はXDOFの忠実な大きさに助けられるかもしれません。


■ おわりに ■

ikBokehとPowerDOFを使う場合はAutoLuminousを後に置いたほうが良いようです。また、近い存在であるディフュージョン系エフェクトもBokehより後に置くことになりそうです(推測ですが)。

XDOFを使う場合、もしくはAutoLuminousとBokehの間にHDR非対応エフェクトを置きたい場合は、AutoLuminousに同梱されたLightSamplingを使ったり、いっそエフェクトを改造してHDRに対応させるといった対策があります。

いずれにせよ欲しい効果に応じて描画順を考えましょう(逃げ)。

この記事が気に入ったらサポートをしてみませんか?