〰️ 15. モデル空間アウトライン(輪郭線)の設定

このページでは、背面法(inverted hull)ベースのモデル空間アウトラインの設定方法と、ASP が提供する平滑法線ツールを使ってアウトライン品質を高める方法を説明します。
1. ASP Mesh Outline Renderer Feature を有効にする
モデル空間の輪郭線を使うには、URP Renderer Data に ASP Mesh Outline Renderer Feature を追加する必要があります。設定手順は次のとおりです。

ASP Mesh Outline Renderer Feature を追加したら、現在のキャラクターの ASP Character Panel に戻ります。このとき Check List の Mesh Outline は Active と表示されているはずです。

💡 ASP Character Panel の GUI 内にある Check List には、現在の ASP Mesh Outline の有効状態が表示されます。無効な場合は Open URP Data ボタンから現在の URP Renderer Data をすばやく開けます。
2. Layer または Rendering Layer Mask でアウトラインを生成する部位を設定する

Shadow Behaviour カテゴリでは、すべての ASP Pass に設定されている layer と rendering layer mask を確認できます。上の例では、Mesh Outline を描画する Pass の layer は Default、Rendering Layer Mask は Outline です。両方の条件を同時に満たす renderer だけが Outline Pass に描画されます。
3. MeshOutline Param カテゴリでパラメータを調整する

モデル空間アウトライン Pass に描画されるキャラクターの Renderer については、ASP Character Panel の MeshOutline Param カテゴリでアウトラインの押し出しモードを制御できます。
| パラメータ名 | 説明 |
|---|---|
| Current Extrude Method | アウトラインの押し出しモード |
| • FROM_VERTEX_NORMAL | 頂点法線方向に沿ってモデル空間アウトラインを押し出します |
| • FROM_UV4 | モデル頂点の UV4 に保存された値を押し出し方向として使用します |
| Mesh Outline Color | モデル空間アウトラインの色 |
| Mesh Outline Width | モデル空間アウトラインの押し出し距離(アウトラインの太さとして扱えます) |
| Fade Out Start End Distance | アウトラインのフェード開始距離と完全に消える距離 |
| Bake Smooth Normal Field | 平滑法線ベイク用オプションを展開表示します |
| Smooth Target | ベイク対象のモデルファイル(FBX, OBJ) |
| Quick Find | 現在のキャラクター object に対応する FBX をすばやく検索します |
| Bake Normal Into UV4 | 平滑化した法線をベイクして現在のキャラクターモデルの UV4 に保存します |
4. 平滑法線をベイクする

モデル空間アウトラインは、モデルの法線方向に沿ってアウトラインを押し出します。平滑化されていない頂点や角度変化の大きい頂点では、アウトラインが途切れて見えることがあります(上図左)。この問題を解消するために、ASP では Unity Editor 内で平滑化した法線をベイクし、モデルの UV4 チャンネルに保存できます。
💡 モデルの UV map は 0 から数えます: uv0, uv1, uv2… という順です。
そのため、uv4 チャンネルは実際にはモデルの 5 番目の UV チャンネルです。
ASP Character Panel の Mesh Outline Param では、デフォルトの押し出しモード(Extrude Mode)は FROM_VERTEX_NORAML です。下の図のように、この状態では袖の端に途切れが見えることがあります。
下図の手順に従って、現在のキャラクターモデルの FBX を Smooth Target にドラッグ&ドロップします(または Quick Find ボタンを押します)。Smooth Target を設定したら、Bake smooth normal into uv4 を実行します。ベイク処理には数秒かかります。
ベイク完了後、Extrude mode を FROM_UV4 に設定し、Apply を押します。
💡 1. ベイク後、FBX と同じフォルダに
character_model_name@smoothRefという FBX ファイルが生成されます。これは平滑法線の参照ファイルなので、削除しないでください。誤って削除した場合は、もう一度ベイクすれば再生成できます。 2. 法線ベイク用スクリプトを動作させるには、Package Manager でcom.unity.collections1.5.1 以降をインストールしておく必要があります。

⏭️ 次のページへ 🔧 17. トーンマッピング後処理
5. モデル空間アウトラインをスクリーンスペースアウトラインと同じ太さ挙動にするオプション

1.03 以降では、ASP Character Panel に Make mesh-based outline scale behave as screen-space outline オプションが追加されました。これを有効にすると、モデル空間アウトラインの太さ計算がスクリーンスペースアウトラインと同じ挙動になります。
下の 2 枚の画像のとおり、キャラクターがカメラに近づくとモデル空間アウトラインが太くなり、スクリーンスペースアウトラインとの差が目立ちます。Make mesh-based outline scale behave as screen-space outline を有効にすると、カメラ距離に関わらずモデル空間アウトラインの太さがスクリーンスペースアウトラインと揃います。

Make mesh-based outline scale behave as screen-space outline - Off

Make mesh-based outline scale behave as screen-space outline - On
💡 ただし、このオプションを有効にすると、スクリーンスペースアウトラインと同じく キャラクターがカメラから遠いとアウトラインが太く見えやすい という欠点も引き継ぎます。
Fade Out Start End Distanceを使って、距離に応じたモデル空間アウトラインのフェードを調整してください(モデル空間アウトラインでは、フェードアウト = 太さが 0 まで縮むことを意味します)。
モデル空間アウトラインのデモ