広告 レベル(マップ)関連テク

鏡マテリアルの作り方

Unreal Engine(UE)で鏡のマテリアルを作ってみよう!
マテリアルにすることで、壁や床だけでなく、設定次第では箱など複雑な形状にも設定可能で、自由度の高いものになります。
初心者向けに丁寧に解説します!

鏡マテリアルのサンプル
完成例

動作環境

当記事の動作環境は以下の通りです。
バージョンや環境によっては、正常に動作しない可能性があります。

ポイント

OS:Windows11 (Ver 22H2)

GPU:NVIDIA GeForce RTX 3060 Ti (Ver 3.27.0.112)

UE:UnrealEngine5 (Ver 5.3.0)

また、プロジェクトはサードパーソンプロジェクトの使用を前提とします。

鏡マテリアルの作成方法

プロジェクト設定の変更

メニューから「編集」-「プロジェクト設定」をクリックして、プロジェクト設定ダイアログを表示します。
プロジェクト設定ダイアログの左側にあるメニューから、「エンジン」-「レンダリング」を選択します。

  • 「反射」-「平面反射のグローバルクリッププレーンをサポート」にチェックを入れる
  • 「Lumen」-「高品質透過性反射」にチェックを入れる
  • 「Default Settings」-「モーションブラー」のチェックを外す
鏡マテリアルのプロジェクト設定

設定を変更したら、一度再起動します。

マテリアルの作成

マテリアルを新規作成します。

マテリアルの作成

コンテンツブラウザにて、何もない部分を右クリックして、マテリアルを選択します。

マテリアル設定を次のように変更します。

鏡マテリアル設定

【マテリアル】

  • 「Blend Mode」を”Translucent”に設定
  • 「Shading Model」を”From Material Expression”に設定

メモ

「Shading Model」は”Default Lit”のままでも構いません。
上級者が応用する場合に便利になるよう、ここでは”From Material Expression”に設定しています。

透過設定

【透過処理】

「Lighting Mode」を”Surface ForwardShading”に設定

フォワードシェーディング

【フォワードシェーディング】

  • 「High Quality Reflections」にチェックを入れる
  • 「Planar Reflections」にチェックを入れる

マテリアルグラフの何もない部分を右クリックして、「Constant3Vector」のノードを作ります。

Constant3Vector

「Constant3Vector」のノードは、XYZ全てを1に設定して、マテリアル結果ノードのベースカラーに接続します。

続いて、マテリアル結果ノードの「Metallic」「スぺキュラ」「ラフネス」の3要素に対して、右クリックして「パラメータへ昇格」を選択します。

パラメータへ昇格

「Metallic」「スぺキュラ」については値を1に、「ラフネス」は値を0に設定します。

ここまでの設定を図にすると以下の通りです。

鏡マテリアルのマテリアルグラフ完成図
鏡マテリアルのマテリアルグラフ完成図

これでマテリアル自体は完成です。
保存してダイアログを閉じます。

設置してみる

マップにキューブやパネルなどを設置しましょう。
設置したスタティックメッシュのマテリアルを、作成したものに変更してください。

これでも十分鏡っぽく見えるのですが、映り込みがやや不鮮明で、キャラクターも一部欠けて映っています。
箱など平面ではない形をしたものを鏡っぽくする場合や、意図的に不鮮明な表現にしたい場合はこれでも良いでしょう。

鏡マテリアルのサンプル
拡大したキューブに鏡マテリアルを設定した例

もう少し鮮明にしたい場合は、Planar Reflection アクターを使用します。

アクター配置ビューの表示

メニューから「ウィンドウ」を選択し、「アクタを配置」にチェックを入れます。

Planar Reflection

ビジュアルエフェクトの中にある、「Planar Reflection」をマップに配置します。
この時、パネルなど鏡にしたい先に設置したアクタと重なるように設置してください。

Planar Reflection アクターを追加した例が下図です。
先ほどと違って、キャラクターが欠けることなく映るようになります。
しかし、まだぼやけて映っています。

鏡マテリアルのサンプル
Planar Reflection アクターを追加した例
Planar Reflection設定
Planar Reflection設定

Planar Reflectionの設定を変更します。
ここからは、作りたい鏡の雰囲気や好みによるので、各自で値を調整してください。

具体的には、以下の表を参考に、平面反射欄の各項目を変更します。

項目内容
Normal Distortion Strength
通常のひずみ強度
平面反射を歪ませるときの法線の強度を制御します。
Prefilter Roughness
プレフィルターの粗さ
平面反射テクスチャをプレフィルターするための粗さの値。
低解像度を補間するのに役立ちますが、値が大きいほどGPU処理も大きくなります。
Distance from Plane Fadeout Start
平面フェードアウト開始からの距離
反射面からこの距離でピクセルを受信すると、平面反射がフェードアウトし始めます。
Distance from Plane Fadeout End
プレーンフェードアウト終了からの距離
反射面からこの距離でピクセルを受信すると、平面反射が完全にフェードアウトされます。
Angle from Plane Fade Start
平面フェード開始からの角度
法線が反射面からこの角度にあるピクセルを受信すると、平面反射がフェードアウトし始めます。
Angle from Plane Fade End
平面フェードエンドからの角度
法線が反射面からこの角度にあるピクセルを受信すると、平面反射が完全にフェードアウトされます。
Show Preview Plane
プレビュー平面を表示
エディタでの作業中に反射面の表示/非表示を切り替えます。
これは作業中のみで、ゲーム起動中の平面反射には影響しません。

例えば、「Normal Distortion Strength」「Prefilter Roughness」「Distance from Plane Fadeout Start」を全て0に設定すると下図のようになります。はっきり映るようになりました。

鏡マテリアルのサンプル
Planar Reflection アクターを調整した例

注意点

Planar Reflection は有効にするとシーンのレンダリングにかかる​​合計時間が増えます。
つまり、設置数が多くなったり巨大なアクターを設置すると、描画に時間がかかりすぎるため注意が必要です。

まとめ

UEの鏡マテリアルは、工夫次第でいろいろな形の鏡を作成可能です。
例えば球体やコーンのような形にもできます。

鏡マテリアルのサンプル

だからこそ、別の開発者と差をつける近道にもなります。
自分なりのアレンジを加えて、ぜひ実装してみましょう!

-レベル(マップ)関連テク
-