| 使用ソフトウェア | バージョン | 備考 |
|---|---|---|
| Blender | 3.0.? | 詳細なバージョン不明 |
2022/12/05:Mix Shaderノードを使う方法を掲載していたが、あまり良い例ではないと判断しMixRGBノードを使った方法へ修正。
アンビエントオクルージョン(以下AO)とは次のようなもの
まずAOがない場合、凹になっている角がわかりにくいが
AOをONにするとコーナーに影のようなものが落ちてハッキリする
この記事ではこのAOの濃淡を調整するノードを組んでいく。
上に加えてテクスチャが付いたオブジェクトにAOを適用する例を最後に出す。
なにげにこれが面倒なので最後まで読んでいただけたらと思う。
レンダラーがEeveeの場合はアンビエントオクルージョンの設定をONにしておく必要がある
※もちろんだがコレをONにしただけでノードを組まないと何も変化しない。
Cyclesの場合は事前の設定は必要なくノードだけ組めば良い。
ビューレイヤープロパティにAO設定のチェックがあるが、これはオフのままでよかった。詳しくは不明。
AOを描画するには次のノードを使用する。
そのままAmbient Occlusion(アンビエントオクルージョン)というノード。
これをBSDFのColor(カラー)につなぐだけでAOが作用する。
この状態でAOノードのDistance(距離)の値を大きくすると、影が乗る範囲が広がる。
ここで気づくと思うが距離設定だけだと影の濃淡設定が全くできない。
というわけでこの記事のメインは次
濃淡をコントロールしたい場合は次のようにColorRamp(カラーランプ)を挟んだノードにすると良い。
黒のスライダを右に移動してやれば影は濃くなる。
逆に薄めたい場合はカラーランプの黒になっている場所を灰色にしてみよう。
ここまでは簡単だがテクスチャ付きのオブジェクトの場合マテリアルはどうしたらいいのだろうか。
最もシンプルな方法はベクトル演算をする方法。
Vector Math(ベクトル演算)ノードを追加する。
※演算子をかならずMultiply(乗算)にすること
テクスチャとカラーランプを繋いでそのままBSDFへ。
シンプルな方法とは言ったが、カラー同士(ベクトル)を乗算するので初心者は理解できないかもしれない。
気になる人は私のUnreal Engine記事も参考になるかもしれない(概念は同じ)
【マテリアル基礎】Multiplyノードとは【Unreal Engine】 | 謎の技術研究部
こちらのほうが一般的だが、少し難しい。
ColorRamp(カラーランプ)のColor(カラー)をMixRGB(ミックス)のFac(係数)へつなぐMixRGB(ミックス)の上から2番めのColor1(色1)には黒を入れる。Color(カラー)をColor2(色2)へ繋ぐ上の例と違いFac(係数)につながっている点に注意
この方法を使うと影の色を黒以外に変更できる。
単色指定ではなく別のテクスチャをColor1に繋げば面白いMixも可能
デメリットというほどでもないが、こちらは動作の原理の理解が必要。
今回はMixRGBのノード解説ではないので割愛。
上で2つの方法を掲載したが、どちらを使うのが良いのだろうか。
実行結果に画質の差があるわけではないのであまり気にしなくて良い。
AOの部分を黒以外にする可能性があるならMixRGBを使えば良い。
Vector Mathで演算するケースはBlenderユーザーだとあまりみかけない印象だが、ノードの処理内容からみてこちらのほうが僅かに軽いのではないかと考えている。
ノード数が多いマテリアルになるような場合は軽い方を使ったほうが良いだろう。
これらの方法はAOのみならず様々なケースでマテリアルを組む基礎とも言えるので覚えておくと良いと思う。
今回はAOの調整方法を簡単に記したサイトが少なかったため記事にしてみた。
参考になれば幸いだ。
