[2.8]アンビエントオクル〜ジョン
先日、こちらのツイートを見かけて「あーそういや擬似AOあったなー」って。
このチュートリアルでも使ってますね。
これ使う利点は「頂点ペイントで独自に手を加えられる」ところでしょうか。外部ソフトとの連携の場合には頂点データそのものを持ち出さず、マップ画像またはテクスチャ画像としてベイクしてエクスポートすることが多いと思います。
他にもアンビエントオクルージョンを表現するための機能があるので、今回はそういったAO系の情報を並べてみることにします。
Dirty Vertex Colors の適用
それではスザンヌさんに登場していただきましょう。
3Dビューのヘッダの編集モードをObject Mode からVertexPaintに変更します。
Paint > Dirty Vertex Colors をクリックします。
オペレーターパネルのHilight Angleの値で全体的な効果の具合を調整できます。
ではオブジェクトモードに戻します。あれ、塗ったはずなのに何にもないことになってる?
ビューポートの設定を変更して確認できます。表示モードが Shading の場合に、表示モードを変更するボタンの右側の [v] をクリックして Color を Object から Vertex に変更します。
ただこの時点では頂点カラーの情報はマテリアルには反映されていないので、レンダリング時に頂点カラーの情報を含めるようにマテリアルを編集します。
試しに表示モードを LookDev に変えてみると、真っ白なスザンヌさんに遭遇します。マテリアル未設定なのでまあ当たり前ですね。
まずは頂点カラーが格納されている場所を確認します。プロパティエディタ、Object Data タブ、Vertex Colors のリストに Col とあります。
この時点でマテリアルを追加します。マテリアルスロットの下の [+ New] ボタンを押します。
自分の場合には手癖でエディタ画面を分割して Shader Editor を表示させちゃうんですが、その辺苦手な方はワークスペースのShadingタブを選んでみましょう。
Principled BSDF シェーダーノードのみの構成ですね。
シェーダーエディタ上でメニューからAdd([Shift]+[A]) > Input > Attribute をクリックして、 Attributeノードをクリックします。
追加した Attribute ノードのColorをPrincipled BSDF シェーダーノードの Base Colorに接続します。 Attribute ノードの Name: に先程確認した頂点カラー名 Col を入力します。
これでやっとレンダリング時に頂点カラーの情報が反映されるようになります。
頂点カラー情報をマスクとして使う、というのは Attribute ノードからの情報を色々と使い回す感じです。以下作例として挙げておきます。
ノード構成です。
「プラスチックメッキ」または「クロームメッキ調塗装」の擦り切れて下地が出ている効果も同じような構成です。
Ambient Occlusion ノード(Cycles)
シェーダーエディタ上でメニューからAdd([Shift]+[A]) > Input > Ambient Occlusion をクリックして追加します。
ちなみにAOの覚え方は「開放感」。なので Distance が重要なファクターとなります。天井が高いと開放感ありますよね?
例によってColorRamp使って効果の具合を強調してみます。
シーンAO[Eevee]
と、これまではマテリアルを使ってオブジェクト個別にAOの効果をかける方法を紹介しましたが、シーン全体にAOの効果をかけられます。
プロパティパネルのRenderタブ、Ambient Occlusion にチェックを入れて有効にします。
EeveeでAmbient Occlusionノードを設定している場合にはDistance情報がプロパティパネルの数値に置き換わって出力されるようです。下図の左側のオブジェクトはAOノード使用、右側は未使用。
シーンAO[Cycles]
Cyclesでも、シーン全体に対してAOの効果をかけられます。
こちらは World タブの Ambient Occlusion から。
まとめ
まとめます
・ 擬似AOおよびマスクとして使えるDirty Vertex Colors
・ Ambient Occlusion ノードはEeveeとCyclesで動きが違う
・ Eevee時、 Cycles共にシーン全体にAOを有効にすることができるが設定箇所が異なる
See Also
お読みいただきありがとうございます。サポートいただいた分はおやつのグレードアップに使おうかと思います。スキ、SNSにシェアもよろしくお願いします!