Unityのゲームオブジェクトの境界部分に効果を加える

今回はStandardAssetsに入っているCrease Shading、Edge Detectionをカメラに取り付けゲームの世界の境界部分を強調して表示するようにしてみます。

Creaseを翻訳すると『折り目、折り目を付ける』というような意味がありゲームオブジェクトの境界に折り目を付けるというような意味合いなんでしょうか?

Edge Detectionは『角検出』なので境界部分を強調する事が出来そうです。

スポンサーリンク

Crease Shadingを取り付ける

Crease Shadingはカメラに取り付け使用します。

カメラのインスペクタでAdd Component→Image Effects→Edge Detection→Crease Shadingを選択し取りつけます。

以下のような設定が出来ます。

Crease Shadingのインスペクタ

Intensityは強度
Softnessは円滑さと柔らかさ
Spreadは外側の厚みを決定する為の半径

となります。

Unityを実行してパラメータを操作して確認してみましょう。

↑のようになりました。

SoftnessとSpreadはパラメータを上げ過ぎると警告が表示されます。

Softnessの場合は『高いsoftness値はパフォーマンスを低下させる可能性がある』
Spreadの場合は『高いspread値は人工的な見た目をもたらす可能性がある』

というような意味合いの警告です。

簡単に言うと処理速度の低下とありえないビジュアル表示になりますよと言う事で、あまり数値を上げ過ぎない方がいいかもしれません。

Edge Detection

Edge Detectionもカメラに取り付け使用します。

カメラのインスペクタでAdd Component→Image Effects→Edge Detection→Edge Detectionを選択し取りつけます。

Edge Detectionのインスペクタ

Modeはフィルターの種類
Edge Exponentは小さい値を設定すると少ないエッジでも検出します。
Sample Distanceはサンプリングの距離です。

Background optionsでは
Edges onlyは固定の色で背景をブレンドします。
BackgroundはEdges onlyが0より大きい時に使用する色

となります。

ModeをSobel以外のTriangle Depth Normals、Roberts Cross Depth Normalsの場合は別の項目が表示され

Depth Sensitivityは隣接するピクセル間の距離の差でエッジが強調される最低距離
Normals Sensitivityは隣接するピクセル間の法線の差でエッジが強調される最低距離

となります。

ModeをTriangle Luminanceにすると

Luminance Thresholdという輝度値のしきい値

が表示されます。

例のごとく説明を見てもわかりづらいので実際にパラメータを調整して確認してみましょう。

↑のようになりました。

簡単に境界を強調する事が出来るようになりました。

Triangle Depth Normals、Roberts Cross Depth Normalsは木の葉部分が大ざっぱな感じになってしまいますね。

参考サイト

UnityマニュアルーCrease シェーディングー
Unityマニュアルーエッジ検出エフェクト法線マップー