MENU
  • About概要
  • Exhibition展示会
  • Seminarゼミ資料
  • Column雑談
  • Contactお問い合わせ
AICG Seminar | aimed at students beginning their journey in AI and CG
  • About概要
  • Exhibition展示会
  • Seminarゼミ資料
  • Column雑談
  • Contactお問い合わせ

🔰知識ゼロからの【Unreal Engine 5】#8 アニメ調の輪郭線を表示させる一番簡単な方法

2025 12/19
2025-12-19

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

あわせて読みたい
🔰知識ゼロからの【Unreal Engine 5】#7 アニメ調のマテリアルにチャレンジ UE5.7の標準シェーダーをアニメ調(セルルック)に 前回はUE5の強みの一つであるフォトリアルな質感を生成するためのPBRマテリアルを作成しました。 今回はトゥーン表現…

今回はアニメ調の流れを汲んで、前回のモデルにアニメには不可欠な表現となるアウトライン(輪郭線)を追加していきます。
おそらく2025年時点で細かい設定をそぎ落とした一番簡単(単純)な方法となります。

Contents

アウトライン(輪郭線)の原理

今回は、「メッシュの二重構造」、あるいは「背面法」と呼ばれるインバーテッド・ハル法を使ってアウトラインを作ります。難しい言葉ですが、原理は非常にシンプルです。

インバーテッド・ハル法(背面法)の原理解説

インバーテッド・ハル(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 ModeMasked(マスク済み)裏表を0か1で厳密に切り分ける
Shading ModelUnlit(アンリット)光の影響を完全に排除し、常に一定の黒で表示させる
Two Sidedチェックを入れる裏側(内側)の面も描画可能にする

マテリアルノードの接続

次に、この特殊な裏地を「外側に広げる」ためのノードを接続します。

線の太さの値を決める

アウトラインの太さを後から簡単に調整できるように、太さの値を決めるノードを先に用意します。

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

  • ノード名: Scalar Parameter
  • 役割: 後からマテリアルインスタンス(マテリアルを編集する機能)で数値だけを変えられるようにするノードです。
  • 設定:
    1. Scalar Parameterノードを配置し、名前を OutlineThickness(アウトラインの太さ)とします。
    2. Default Value(初期値)を 0.2 程度に設定しておきましょう。

この OutlineThickness ノードは、裏地を外側に広げるために次のステップで利用します。

Scalar Parameter(スカラーパラメータ)ノードとは?
🔰知識ゼロからの【Unreal Engine 5】#7 アニメ調のマテリアルにチャレンジ | AICG Seminar | aimed at stu… UE5.7の標準シェーダーをアニメ調(セルルック)に 前回はUE5の強みの一つであるフォトリアルな質感を生成するためのPBRマテリアルを作成しました。 今回はトゥーン表現と…

裏地を広げてアウトラインにする設定

ここからは、メッシュの頂点を外側に移動させるインバーテッド・ハル法の肝の部分です。

メッシュを外側に広げる (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の値を変更して、アウトラインの色を変更してみてください。

これでインバーテッド・ハル法によるアウトライン作成は完了です。
次回は、さらにアニメらしくカスタマイズする応用テクニックに進みましょう。

next step
【UE5】カメラ距離でアウトラインの太さを変える【アニメ調表現:part3】 | AICG Seminar | aimed at studen… アウトラインの距離減衰(ディスタンスフェード)を実現する 前回の記事で、UE5でトゥーンシェーダーの基礎とアウトラインの作り方を学びました。 今回は、このアウトライ…
Unreal Engine
contour Epic Games NPR Stylized shading Toon UE5 Unreal Engine アウトライン トゥーンシェーダー 初心者
Contents
  1. ホーム
  2. ゼミ資料
  3. Unreal Engine
  4. 🔰知識ゼロからの【Unreal Engine 5】#8 アニメ調の輪郭線を表示させる一番簡単な方法
Contents