ZDefocus #4
続き
今まで計算方法(math)として、「分かり易い」からという理由で"direct"を用いてきた。実際directを用いていると、depthをリマップしてボケて欲しくない部分をdepth値0になるようにしておいて、zdefocusのfocal plane(C)に0を入れておけば、
depth値 x zdefocusのsizeの値 (掛け算)
でボケが決まる。しかし、"direct"はエッジの処理に難がある。実際、far=0をmathとして選んで、depthもアルファでくり抜かれたものを処理してみると、
左がfar=0、右がdirect をmathに選んでいる。
明らかに、far=0 の方がうまく行っているようにみえる。
ちなみに、
depthは上のモノになる。node graphからも見て取れるように、同じdepthを用いている。
さらに実はこの二つの結果、differenceで重ねてみると・・・
となっており、エッジ部分以外はほぼ一致しているように見える。
先に、zdefocusのfar=0は直感的で無いので、directを用いる と言っていたが、実は、directとfar=0の掛かり度合いをだいたい合わせる方法がある。
今回ではdepth値に50を用いているが、この場合は、
math = "direct", focal plane(C) = 0, size=1
と
math = "far=0", focal plane(C) = 1, size=1
とすると、エッジ以外は"ほぼほぼ"同じ結果が得られる。
"ほぼほぼ"と書いたのは、実際の値的に1の差がある。ただ、50のボケに対して、1の差なので分かりづらい。
どういうことかというと、このケースはdepth値が50なのであまり影響が無かったが、試しにdepth値を小さくし、sizeにある程度大きい数値を入れて確認してみることにする。
depthには0-1のrampを用いた。
zdefocusのsizeは50を用いた。
focus plane(C)の値は、先の例と同様である。
ただ、この場合、上の結果のようにボケが合わない。
そこで、far=0 に用いているdepthに1を足してみる。
とエッジの状態が違うので分かりづらいので、differenceで重ねて確認してみる、
よく見ると差はあるのだが、こんな感じで、エッジ以外はだいたい一致している。
far=0(math)の方がエッジは良好である。
つまり、
math = "direct", focal plane(C) = 0
で、ボケが思い通りになるように調整(リマップ)したdepthに1を加えて、
math = "far=0", focal plane(C) = 1
で実行し、場合によっては"automatic layer spacing"をオフにして、"depth layers"に小さめの値を入れて、作業することもスピードアップに繋がると思われる。
さらに、depthにアンチエイリアスが適応されている場合は、それが必要かどうかを見極め、不要な場合は、unpremultiply等でそのアンチエイリアスで発生する階調をキャンセルすることも、スピードアップに繋がる場合があると思われる。
※ちなみに、今回紹介したのは、direct(math)にfar=0の結果を近づける方法である。