見出し画像

【Blender】色味を反映させたAO作成

ベースカラーとAOをシェーダーで合成した際、合成した部分の見栄え良くする方法をメモしておく。

ベイクしたAO (Ambient Occlusion)とベースカラーを合成する際、単純に乗算で合成することが多いが、それだけだと合成した部分で、少し黒っぽい濁りくすみがでしまう。

AOは、グレーのグラデーションなので、それをベースカラーと乗算しただけなので黒っぽく濁ってしまうのは、しかたがないこと。

この改善として、AOにベースカラーの色味を加えた後、さらにそれとベースカラーを乗算する濁りくすみが取れて、見栄えが向上するので試してみよう。
<Blender 3.3.1>

■検証

早速、下図のディフューズパスで違いを比較してみる。

比較画像(左:乗算のみで合成、右:値(Value)と乗算で合成)

向かって左側より、右側の方が、濁りとくすみがない。
細部をよくみるとAOにベースカラーの色味が乗っている。
これは、些細な違いのように見えるが、ライティングを変えても、濁りやくすみが発生しないので、すっきりした見栄えが得られる。

右側が、AOにベースカラーの色味を付与したイメージ

上図のようにAOにベースカラーを着色できると理想。

■シェーダーグラフ

以下の通り、2つのシェーダを比較してみる。
 1)AOとベースカラーを値(Value)で合成する
 2)上記1)とベースカラーを乗算で合成する

※上記1)の結果は、先に説明した理想とは異なるのだが、結果が近く見えるのでよしとする。

AOを乗算だけで合成(ディフューズパス)
AOを値(Value)と乗算で合成(ディフューズパス)

レンダーパスの統合した状態だと下図のようになる。

統合したレンダーパス

■考察

「上記1)の結果は、先に説明した理想とは異なるのだが、結果が近いのでよしとする」と述べた理由を考察。
画像合成時の計算方式が理想かどうかについてだが、今回MixRGB Nodeで利用した仕組みは下記の通り。

MixRGB Node:Value
Color1 と Color2 両ピクセルの 明度 (Value) のみブレンドする。まず、Color1 と Color2 両ピクセルの RGB 値を HSV 値 に変換する。次に両ピクセルの明度のみをブレンドし、それを Color1 の色相および彩度と組み合わせる。最後に合成された HSV 値を再度 RGB 値に変換して戻す。

MixxRGB Node

上記のHSV変換だが、HSB変換なら同等になったかも。
Photoshopの描画モード>輝度 の計算方式と一緒なら理想的だった。

もう少し研究が必要そう。

描画モード:輝度
基本色の色相および彩度と、合成色の輝度を使用して、結果色を作成します。このモードでは、カラーモードの反対の効果が作成されます。

Photoshopの描画モード

■関連記事

改良版 ↓

以上。

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