Anime Shading Plus
Show / Hide Table of Contents

〰️ 14. スクリーンスペースアウトライン(輪郭線)の使い方

ASP/Character または ASP/Eye Shader を使えば、スクリーンスペースアウトラインを利用できます。上の画像は debug モードで、アウトラインと、その表示領域を制御するマスク(黄色のピクセル)だけを表示しています。

ASP/Character または ASP/Eye Shader を使えば、スクリーンスペースアウトラインを利用できます。上の画像は debug モードで、アウトラインと、その表示領域を制御するマスク(黄色のピクセル)だけを表示しています。

1. アウトライン用 Renderer Feature と Volume Override を追加する

  • 現在のプロジェクトで使用している Universal Renderer Data に ASP Screen Space Outline を追加します。

Image

  • シーン内に Volume を新規追加するか、既存の Volume を使って Global に設定します。
  • Volume の Inspector で Add Override を選び、ASP Screen Space Outline を検索して追加します。
  • 追加後は、下のスクリーンショットのように Screen Space Character Outline が表示されます。

Image

  • Volume 内で Screen Space Character Outline を展開すると、アウトラインに関する各種パラメータを確認できます。

Image

これらのパラメータは何を意味するのか

現在の ASP の Screen Space Outline は、主に次の 4 種類の edge 検出結果を組み合わせて構成されます。

  • Material Edge

  • Albedo Edge

  • Depth Edge

  • Normals Edge

プロジェクトの要件に応じて、これら 4 種類の edge を組み合わせてキャラクターのスクリーンスペース輪郭線を構成します。

Enable Scene Object Outline を有効にすると、ASP キャラクター以外のシーンオブジェクトにも、主に depth / normals ベースのスクリーンスペースアウトラインを適用できます。

また、ASP キャラクターのピクセルについては、モデルの vertex color B チャンネル を追加マスクとして使うこともできます。

遠距離でアウトラインが目立ちすぎるのを抑えるために、Distance Falloff で最終的なアウトラインを距離に応じてフェードさせることができます。

左側に並んでいる toggle は何を意味するのか

Unity の Volume は Volume Override という仕組みで動作しています。

簡単に言うと、左側の override toggle を有効にして初めて、右側の値が有効になります。 有効にしない場合は、その後処理エフェクトのデフォルト値が使われます。

Image

ここで特に注意したいのは、Enable Outline のデフォルト値が現在 false であることです。 つまり Renderer Feature を Renderer Data に追加しただけでは有効にならず、Volume 側で Enable Outline の override を有効にし、右側の値を true にする必要があります。

2. Screen Space Character Outline の edge 検出パラメータを調整する


ここでは、次のキャラクターモデルを例として輪郭線を調整します。

Image

  1. まず、Volume 内で outline が有効になっていることを確認します。調整しやすくするため、左上の ALL をクリックしてすべての override toggle を true にします。これで、この Volume の設定が優先されます。

Image

  1. パネル下部の Debug カテゴリで Enable Debug Mode を true にします。

Image

これで outline の debug モードが有効になり、ゲーム画面には指定した背景色と、現在のアウトライン(Outline Color の色)が表示されます。

Image

  1. 続いて Screen Space Outline Debug Mode から確認したい edge を選び、対応する threshold を調整していきます。

Image

現在選べる debug モードは次の通りです。

  • Material Edge

  • Albedo Edge

  • Depth Edge

  • Normals Edge

  • Vertex Color Mask

  • Combined Result And Vertex Color Mask

  • Combined Result

  1. 各 edge を個別に調整し終えたら、Screen Space Outline Debug Mode を Combined Result にして、現在有効になっている edge を合成した結果を確認します。

Image

最後に Enable Debug Mode を無効にして、最終レンダリング結果を確認します。

Image

💡 Material Edge と Albedo Edge は ASP キャラクターの Material Pass 情報に依存するため、ASP キャラクターのピクセルにだけ作用します。 Enable Scene Object Outline は、主に非キャラクターオブジェクトに対する Depth Edge / Normals Edge の挙動に関係します。

3. Distance Falloff を調整する

スクリーンスペースアウトラインの大きな課題のひとつは、距離による見え方の変化を自然に表現しにくいことです。同じ設定のままだと、遠距離のキャラクターほどアウトラインが強く見えてしまいます。

ASP では、この問題に対して統一された Distance Falloff ワークフローを用意しています。 Enable Distance Falloff を有効にし、Distance Falloff StartEnd でフェード開始距離と完全にフェードする距離を設定してください。

この設定は最終的なアウトラインの見え方そのものに作用します。 旧ドキュメントで説明していた Color / Weight / Width を個別にフェードさせる方式に代わり、現在は全体をまとめて距離ベースでフェードさせるシンプルな構成になっています。

💡 実際の調整では、まず近距離のアウトラインを好みの見た目に整えてから、Distance Falloff StartEnd で中距離・遠距離の見え方を整えるのが扱いやすいです。

4. Vertex Color でアウトライン表示を調整する

Volume 側のグローバル設定に加えて、ASP では mesh の vertex color B チャンネル を使って、アウトラインの表示領域をさらに細かく制御できます。

Screen Space Outline Volume の debug モードを Vertex Color Mask または Combined Result And Vertex Color Mask に設定してください。 これで、最終アウトラインと vertex color B の分布を同時に確認できます。 vertex color.b = 0 の領域ではアウトラインが完全に消え、1 の領域では追加マスクなしでそのまま表示されます。

Image

その後、DCC ツール(Blender、Substance Painter など)でアウトラインを弱めたい箇所の vertex color B を調整し、Unity に戻って同じ debug モードで結果を確認します。

Image

💡 vertex color mask は ASP キャラクターのピクセルにのみ影響します。 Enable Scene Object Outline を有効にしても、非キャラクターのシーンオブジェクトはキャラクターメッシュの vertex color B を参照しません。

⏭️ 次のページへ 〰️ 15. モデル空間アウトライン(輪郭線)の設定

  • Edit this page
In this article
Back to top Generated by DocFX