2022-12-05(更新)

【Blender】アンビエントオクルージョン(AO)の強さを調整する方法

AOはノードで組む必要があるため少々難解。特にテクスチャとMIXする場合少し複雑になるのでわかりやすく解説する。

Article Image
使用ソフトウェアバージョン備考
Blender3.0.?詳細なバージョン不明

2022/12/05:Mix Shaderノードを使う方法を掲載していたが、あまり良い例ではないと判断しMixRGBノードを使った方法へ修正。

概要

アンビエントオクルージョン(以下AO)とは次のようなもの

まずAOがない場合、凹になっている角がわかりにくいが

AOなし

AOをONにするとコーナーに影のようなものが落ちてハッキリする

AOあり

この記事ではこのAOの濃淡を調整するノードを組んでいく。

濃淡調整

テクスチャ付きAOが面倒

上に加えてテクスチャが付いたオブジェクトにAOを適用する例を最後に出す。

なにげにこれが面倒なので最後まで読んでいただけたらと思う。

AOとテクスチャ

準備

Eevee

レンダラーがEeveeの場合はアンビエントオクルージョンの設定をONにしておく必要がある

AO ON

※もちろんだがコレをONにしただけでノードを組まないと何も変化しない。

Cycles

Cyclesの場合は事前の設定は必要なくノードだけ組めば良い。

ビューレイヤープロパティにAO設定のチェックがあるが、これはオフのままでよかった。詳しくは不明。

アンビエントオクルージョン用のノード

AOを描画するには次のノードを使用する。

AO用のノード

そのままAmbient Occlusion(アンビエントオクルージョン)というノード。

これをBSDFColor(カラー)につなぐだけでAOが作用する。

距離調整は簡単

この状態でAOノードのDistance(距離)の値を大きくすると、影が乗る範囲が広がる。

距離設定

濃淡の設定ができない

ここで気づくと思うが距離設定だけだと影の濃淡設定が全くできない

濃さの設定は距離ではできない

というわけでこの記事のメインは次

濃淡コントロールの基本

濃く

濃淡をコントロールしたい場合は次のようにColorRamp(カラーランプ)を挟んだノードにすると良い。

カラーランプ

黒のスライダを右に移動してやれば影は濃くなる。

濃いめ調整

薄く

逆に薄めたい場合はカラーランプの黒になっている場所を灰色にしてみよう。

カラーランプの黒を薄く

薄くなった

テクスチャとAOの混同

ここまでは簡単だがテクスチャ付きのオブジェクトの場合マテリアルはどうしたらいいのだろうか。

方法1:ベクトルで乗算

最もシンプルな方法はベクトル演算をする方法。

Vector Mathノード

Vector Math(ベクトル演算)ノードを追加する。

※演算子をかならずMultiply(乗算)にすること

テクスチャとカラーランプを繋いでそのままBSDFへ。

結果

MixのMultiply

Math(数式)ノードではなくMixRGB(ミックス)ノードのMultiply(乗算)もほとんど同じ意味合い。

Fac(係数)を調整することでテクスチャの薄さがコントロールできる。

なるほど、わからん

シンプルな方法とは言ったが、カラー同士(ベクトル)を乗算するので初心者は理解できないかもしれない。

気になる人は私のUnreal Engine記事も参考になるかもしれない(概念は同じ)

【マテリアル基礎】Multiplyノードとは【Unreal Engine】 | 謎の技術研究部

方法2:MixRGB(ミックス)ノードを使う

こちらのほうが一般的だが、少し難しい。

Mixを使用

  1. ColorRamp(カラーランプ)のColor(カラー)をMixRGB(ミックス)のFac(係数)へつなぐ
  2. MixRGB(ミックス)の上から2番めのColor1(色1)にはを入れる。
  3. テクスチャのColor(カラー)をColor2(色2)へ繋ぐ

上の例と違いFac(係数)につながっている点に注意

メリット

この方法を使うと影の色を黒以外に変更できる。

青影

単色指定ではなく別のテクスチャをColor1に繋げば面白いMixも可能

画像Mix

デメリット

デメリットというほどでもないが、こちらは動作の原理の理解が必要。

今回はMixRGBのノード解説ではないので割愛。

上で2つの方法を掲載したが、どちらを使うのが良いのだろうか。

実行結果に画質の差があるわけではないのであまり気にしなくて良い。

AOの部分を黒以外にする可能性があるならMixRGBを使えば良い。

Vector Mathで演算するケースはBlenderユーザーだとあまりみかけない印象だが、ノードの処理内容からみてこちらのほうが僅かに軽いのではないかと考えている。

ノード数が多いマテリアルになるような場合は軽い方を使ったほうが良いだろう。

以上

これらの方法はAOのみならず様々なケースでマテリアルを組む基礎とも言えるので覚えておくと良いと思う。

今回はAOの調整方法を簡単に記したサイトが少なかったため記事にしてみた。

参考になれば幸いだ。



この記事のタグ

この記事をシェア


謎の技術研究部 (謎技研)