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

ASP/Character または ASP/Eye Shader を使えば、スクリーンスペースアウトラインを利用できます。上の画像は debug モードで、アウトラインと、その表示領域を制御するマスク(黄色のピクセル)だけを表示しています。
1. アウトライン用 Renderer Feature と Volume Override を追加する
- 現在のプロジェクトで使用している Universal Renderer Data に ASP Screen Space Outline を追加します。

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

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

これらのパラメータは何を意味するのか
現在の 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 を有効にして初めて、右側の値が有効になります。 有効にしない場合は、その後処理エフェクトのデフォルト値が使われます。

ここで特に注意したいのは、Enable Outline のデフォルト値が現在 false であることです。
つまり Renderer Feature を Renderer Data に追加しただけでは有効にならず、Volume 側で Enable Outline の override を有効にし、右側の値を true にする必要があります。
2. Screen Space Character Outline の edge 検出パラメータを調整する
ここでは、次のキャラクターモデルを例として輪郭線を調整します。

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

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

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

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

現在選べる debug モードは次の通りです。
Material Edge
Albedo Edge
Depth Edge
Normals Edge
Vertex Color Mask
Combined Result And Vertex Color Mask
Combined Result
- 各 edge を個別に調整し終えたら、Screen Space Outline Debug Mode を Combined Result にして、現在有効になっている edge を合成した結果を確認します。

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

💡
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 の領域では追加マスクなしでそのまま表示されます。

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

💡 vertex color mask は ASP キャラクターのピクセルにのみ影響します。 Enable Scene Object Outline を有効にしても、非キャラクターのシーンオブジェクトはキャラクターメッシュの vertex color B を参照しません。
⏭️ 次のページへ 〰️ 15. モデル空間アウトライン(輪郭線)の設定