
前回はUE5.7上でアニメ調(セルルック)の塗りを再現しました。

今回はアニメ調の流れを汲んで、前回のモデルにアニメには不可欠な表現となるアウトライン(輪郭線)を追加していきます。
おそらく2025年時点で細かい設定をそぎ落とした一番簡単(単純)な方法となります。
アウトライン(輪郭線)の原理
今回は、「メッシュの二重構造」、あるいは「背面法」と呼ばれるインバーテッド・ハル法を使ってアウトラインを作ります。難しい言葉ですが、原理は非常にシンプルです。
インバーテッド・ハル法(背面法)の原理解説
インバーテッド・ハル(Inverted Hull)法は、「キャラクターの上に、一回り大きい裏地を重ねて着せる」ようなイメージです。

- 裏地(拡大メッシュ): マテリアルノードでキャラクターの輪郭を外側に少しだけ押し出して作ります。
- 輪郭線になる理由: 押し出された裏地のフチ(エッジ)だけが、内側のキャラクター本体からはみ出して見えるため、それがアウトラインとして残るのです。
この裏地となる、特別な設定をしたマテリアルを作成します。
アウトライン用マテリアルの基本設定
まず、UE5のマテリアルエディタで新しいマテリアルを開き、以下の設定を変更します。
マテリアルの新規作成

コンテンツブラウザで右クリックし、Material を新規作成します。

名前を M_Outlineなどとしてください。
マテリアルの詳細(Details)パネル設定

M_OutlineをダブルクリックしてMaterial Graphを開きます。
Blend Mode(ブレンドモード)

- 設定:
Masked(マスク済み) - 解説:
Maskedに設定することで、私たちが作る 0(完全な透明)か 1(完全な不透明)のデジタルなマスクに従って、ピクセルを完全に「消す」か「描く」かを厳密に判断させることができます。
Shading Model (シェーディング モデル)

- 設定:
Unlit(アンリット) - 解説: Unlitは「光(ライト)の影響を受けない」という意味です。
光の影響を消すことで、アウトラインが影になったり光で反射したりせず、常に一定の真っ黒な色で描画されるようになります。
Two Sided (両面)

- 設定: チェックを入れる(有効化)
- 解説: 通常、3Dモデルの面は「裏側」は描画されません。
しかし、今回はメッシュの裏地を内側から見るため、「裏側も表側と同じように描画しなさい」という設定が必要です。
詳細(Details)パネル設定
まとめると、以下の3点の変更となります。

| 設定項目 | 設定値 | 理由 |
Blend Mode | Masked(マスク済み) | 裏表を0か1で厳密に切り分ける |
Shading Model | Unlit(アンリット) | 光の影響を完全に排除し、常に一定の黒で表示させる |
Two Sided | チェックを入れる | 裏側(内側)の面も描画可能にする |
マテリアルノードの接続
次に、この特殊な裏地を「外側に広げる」ためのノードを接続します。
線の太さの値を決める
アウトラインの太さを後から簡単に調整できるように、太さの値を決めるノードを先に用意します。

マテリアルグラフ上でTabキーを押すか右クリックしてScaler Parameterと入力します。

- ノード名:
Scalar Parameter - 役割: 後からマテリアルインスタンス(マテリアルを編集する機能)で数値だけを変えられるようにするノードです。

- 設定:
Scalar Parameterノードを配置し、名前を OutlineThickness(アウトラインの太さ)とします。Default Value(初期値)を0.2程度に設定しておきましょう。
この OutlineThickness ノードは、裏地を外側に広げるために次のステップで利用します。

裏地を広げてアウトラインにする設定
ここからは、メッシュの頂点を外側に移動させるインバーテッド・ハル法の肝の部分です。
メッシュを外側に広げる (World Position Offset)
キャラクターのメッシュを外側に広げると言っても、モデルデータを変更するわけではありません。
描画される瞬間に、画面上での頂点の位置をずらすという魔法を使います。

ピンの名称: World Position Offset (WPO)
役割: 画面上での頂点の位置をずらす
マテリアルノードで計算した「移動量」を、キャラクターの各頂点の位置に足し算して、画面上でずらして見せるピンです。
前のトゥーンシェーダー作成で使った「面の正面センサー」ノードを、ここでも使います。
「面の正面センサー」を再利用

マテリアルグラフ上でTabキーを押すか右クリックしてVertexNormalWSと入力します。

- ノード名:
VertexNormalWS - 役割: 「面の正面センサー」
メッシュを外側に広げるには、その面が向いている方向(法線方向)に動かすのが最も自然です。
このノードがその「動かす方向」を教えてくれます。
太さと方向を組み合わせる
前のステップで用意したScalar Parameter太さのパラメーターとVertexNormalWS方向を掛け合わせて、最終的な「移動量」を計算します。

- ノード名:
Multiply - 役割: 「かけ算」ノード
今回は
「どの方向にVertexNormalWS」
「どれくらいの量だけOutlineThickness」
動かすかを決めます。
接続
作成した3つのノードをつなぎます。

VertexNormalWSの出力をMultiplyの入力(A)へ。OutlineThickness(線幅パラメーター)の出力をMultiplyの入力(B)へ。Multiplyの結果を、マテリアルメインノードのWorld Position Offsetピンに接続します。
これで、このマテリアルが適用されたメッシュは、線の太さパラメーターに従って外側に均等に拡大されて描画されるようになりました。
「裏側だけ」を表示する設定
算術演算で描画を逆転させる
以下のノード操作で、拡大された裏地メッシュの「表面(内側)」を透明にして消し、「裏面(外側)」だけを残すロジックを作ります。
「旗振りノード」で表と裏を区別する

- ノード名:
TwoSidedSign - 役割: 「旗振りノード」
カメラに見えている面(表)には +1 の旗、
裏側の面には -1の旗を振ります。
「旗の反転係」で裏側を +1 に変える

- ノード名:
Multiply - 役割:「旗の反転係」
このノードで-1を掛けることで、裏側だけがプラスの値に変わります。- 表側 (+1) * (-1)→ -1
- 裏側 (-1) * (-1)→ +1
「透明度ジャッジ」で強制的に消す

- ノード名:
Clamp - 役割:「透明度ジャッジ」
マイナスの値をすべて 0(透明)に、
プラスの値を 1(不透明)に押し込める役割です。Minの値を 0 にMaxの値を 1 に- 結果:
-1(表側)は 0 に制限されて 「完全な透明」 に、
+1(裏側)は 1 のまま 「完全な不透明」 になります。
接続
作成した3つのノードをつなぎます。

Clampノードの出力を、メインマテリアルノードのOpacity Mask(不透明マスク)ピンに接続します。
輪郭線の色
最後に輪郭線の色を設定します。
何も設定しなければ黒が表示されますが、今回は後で色を変更できるように設定します。

マテリアルグラフ上でTabキーを押すか右クリックしてConstant3Vectorと入力します。

- ノード名:
Constant3Vector - 役割:「色の変更」
x,y,z3軸に値を入力できるノードです。今回は3つの値をR,G,Bとして使用します。

黒の四角部分をクリックするとお馴染みのカラーピッカーがポップアップします。
全ての接続の確認
アウトライン生成マテリアルのすべての接続が完了しました。

このマテリアルをキャラクターに適用すれば、拡大された裏地の裏側だけが 1(不透明)として残り、フチだけが輪郭線としてくっきりと表示されます。
Applyをクリックしてビューポート画面に戻ります。
モデルに適用する
作成したアウトラインマテリアルを前回使用したキャラモデルに適用します。
「Overlay Material」を使う方法が、管理も応用も圧倒的に優れています。
Overlay Material とは?
キャラクターモデルが持つ通常のマテリアルを一切触らず、その上から強制的に重ねて描画する専用のスロットです。このスロットを使えば、モデルがどれだけ複雑でも、一律の手順でアウトラインを適用できます。
Overlay Material への適用

- キャラクターアクターを選択: レベルに配置されているキャラクター(スケルタルメッシュ)を選択します。

- コンポーネントを探す: 「詳細(Details)」パネルで、「Skeletal Mesh Component」(スケルタルメッシュコンポーネント)を選択します。

- Overlay スロットを探す: 「詳細」パネルをスクロールし、
RenderingカテゴリのAdvanced項目を展開します。

- 適用:
Overlay Materialスロットに、作成したアウトラインマテリアル (M_Outline) をドラッグ&ドロップで設定します。


美しい輪郭線の追求
インバーテッド・ハル法(背面法)のアウトラインは、ローポリ(ポリゴン数が少ない)モデルの場合、頂点が離れすぎてアウトラインが途切れる(ティアリング)現象が起こりえます。
この場合、モデル側でサブディビジョンをかけるなど、ジオメトリ(ポリゴン)の密度を上げることが、最も確実な解決策です。
また、髪の毛や服などの場合、板状のポリゴンは正確にアウトラインを生成してもらえません。この場合、モデルを厚みのあるクローズポリゴンの状態に変更します。
この安定したアウトライン手法をマスターすれば、あなたのキャラクター表現は格段にレベルアップするでしょう。
最終チェック

OutlineThicknessの値を少しずつ変えて、一番格好良い線の太さに調整してみてください。Constant3Vectorの値を変更して、アウトラインの色を変更してみてください。
これでインバーテッド・ハル法によるアウトライン作成は完了です。
次回は、さらにアニメらしくカスタマイズする応用テクニックに進みましょう。
