PR

【UE5】Nanite Tessellationを使ったDisplacement

UE5

UE5.4でNanite メッシュにテッセレーションをかけて、そこにディスプレイスメントを適用させることができるNanite Tessellationが追加されました!

今までもGeometry Meshを使ったディスプレイスメントやNaniteメッシュにHeight mapをセットする完全に静的なディスプレイスメントはありました。

しかし、UE4のときにあったようなマテリアルでHight mapを使って、制御するようなディスプレイスメント+Naniteはできませんでした。

Nanite Tessellationでは、UE4のときのようにマテリアルからHeight mapを使って、Naniteメッシュを細かく分割し、ディスプレイスメントを使用できます。

ディスプレイスメントは、疑似的な凹凸ではなく、実際にメッシュが変位して凹凸ができるので、一気にリアリティが増します!
特に地面や壁の凹凸では有用できます。

Landscapeでも使用できるようになっています!

この記事では、Nanite Tesselletionを使ったディスプレイスメントを行う方法Megascansのサーフェイスマテリアルで使用する方法Landscapeの使用方法をご紹介します!

Geometry Meshを使ったディスプレイスメントの方法は、こちらで紹介しています。

Nanite Tessellation の有効化

Nanite Tessellationは、UE5.4の時点では実験的機能のようで、デフォルトでは使用できないようになっています。
実験的機能なので、使用の際はテストプロジェクトで使用するようにしましょう!

使用するために2つのコンソールコマンドを設定する必要があります。

プロジェクトフォルダのconfigフォルダの中にある「DefaultEngine.ini」に以下のコマンドを入力して保存します。
基本的に[/Script/Engine.RendererSettings]の下に記載します。

r.Nanite.AllowTessellation=1
r.Nanite.Tessellation=1
Nanite Tessellationを有効にするためにDefaultEngine.iniにコマンドを記載
スポンサーリンク

マテリアルでディスプレイスメントを設定

マテリアルのNanite、Displacement設定

先ほどの設定をして、起動するとマテリアルに「Nanite」の項目が追加されます。

マテリアルの詳細にある「Enable Tessellation」にチェックを入れます。

Magnitudeは、ディスプレイスメントの強さで値が多きほど、凹凸も大きくなります

Centerは、ハイトマップのどの値を中心にするかの設定です。
0.5であれば、0.5が中心になるので、0.5より低い値だと凹んで、0.5より大きい値だと凸になります。
逆にCenterが0だと、凸にしかなりません。

ディスプレイスメントにグレースケールのハイトマップ(ディスプレイスメントマップ)を入力します。

Displacementマップの例

Multiplyをかませると、凹凸具合をマテリアルインスタンスで調整するのに便利です。

ディスプレイスメントへのテクスチャのインプット

ちなみにグレースケールで使用するマップなので、テクスチャ設定で「sRGB」がオフになっていることを確認しましょう。

テクスチャのsRGB設定

Naniteを有効にしたメッシュにマテリアルをアサインすることで、凹凸を確認できるかと思います。

ディスプレイスメントのオンオフの比較

Nanite Tessellation の名前の通り、Naniteが有効なメッシュでしか凸凹しないのでご注意ください。

Naniteの三角ポリゴンを有効にするとかなり細かく分割されているのがわかります。

テッセレーションが有効なNaniteの三角ポリゴン

複数メッシュまとめてNaniteの有効化など、Naniteに関しては、こちらの記事で解説しています!

スポンサーリンク

Megascans マテリアルでNanite Tessellationを使う

無料で使用できるMegascnasのSurfaceマテリアルには、Height Mapも含まています。

Megascansマテリアルをダウンロードして、UE5に追加すると「~_ORDp」という黄色っぽいテクスチャが含まてれいます。

Megascansマテリアルの「~_ORDp」テクスチャの例

こちらはRGBの
R: アンビエントオクリュージョン
G: ラフネス
B: ディスプレイスメント(ハイト)
が格納されたテクスチャです。

これをそのまま自身で作成したマテリアルで使用することもできますし
マテリアルをインポートした時に自動で生成されるマテリアルインスタンスで使用したい場合は、少しマテリアルを編集する必要があります。

MegascansのSurfaceマテリアルをUE5に追加すると以下のようなマテリアルインスタンス1つとテクスチャ3枚がインポートされます。

Megascans マテリアルインポート時にインポートされるマテリアル、テクスチャ一式の例
Megascans マテリアルインポート時にインポートされるマテリアル、テクスチャ一式の例

Megascansのマテリアルのダウンロード、インポート方法はこちらをご覧ください。

まず、インポートされたマテリアルインスタンスを開き、さらにそこからペアレントの「M_MS_Surface_Material」を開きます。
コンテンツブラウザで「M_MS_Surface_Material」を探して開いてもOKです。

M_MS_Surface_Materialを開く

先ほどと同じくマテリアルを詳細で「Enable Tessellation」にチェックを入れます。

Enable Tessellationを有効にした状態

MF_MapAdjustments を編集するためにダブルクリックします。

MF_MapAdjustments

Function Input」ノードを作成します。

  • Input Name: Displacement (これは任意でなんでもOK)
  • Input Type: Function Input Scalar

に設定します。

そして、2つの「Make Material Attributes」の「Displacement」に繋ぎます。

先ほどと同じようにMultiplyをかませておくと少し便利です。

Function Inputを追加した状態

M_MS_Surface_Material」に戻り、Param2Dの「ARD」の「B」とMF_MapAdjustments の「Displacement(任意でつけた名前)」を繋ぎます。

Param2Dの「ARD」の「B」とMF_MapAdjustments の「Displacement」を繋いだ状態

サーフェイスマテリアルのマテリアルインスタンスのペアレントマテリアル(M_MS_Surface_Material)を編集したので、その他のMegascans サーフェイスマテリアルもディスプレイスメントが最初から効いた状態で使用することができるようになります

ディスプレイスメントが有効になったMegascans サーフェイスマテリアル
スポンサーリンク

Landscape でNanite Tessellationを使う

UE5.2以降では、LandscapeもNanite化できるようになっています。

それによりLandscapeでもNanite Tessellationを使用することができます。

Landscape アクターの詳細に「Nanite」の項目があるので「Naniteを有効」にチェックをいれ「BuildData」を押します。

LandscapeのNanite設定

Landscapeは、形状などの編集などごとにビルドする必要があります。
なので、ある程度編集が終わった段階でビルドしてNanite化するのが良いかと思います!

マテリアルは先ほどと同じように「Enable Tessellation」を有効にして、Displacementに入力するだけです。

地面に凹凸があると一気にリアリティが増しますし、配置物の設置感も増します!

スポンサーリンク

まとめ

Nanite Tessellationを使ったDisplacementのやり方をご紹介しました!

コンソールコマンドを設定して、マテリアルの「Enable Tessellation」を有効にして、Displacementに入力するだけなので、簡単に使うことができます。

ハイメッシュなポリゴンを必要とするディスプレイスメントとNaniteは相性が良く、リアルタイムでの表現のレベルが1段階上がった感じがします。

ただ、まだ実験的機能のためか、テスト中もけっこう落ちましたが、これから改善されいくのではないかと思います!

GDCでも発表されたマーベルのゲームのデモでNanite Tessellationが紹介されています!
ディスプレイスメントのあり、なしで雲泥の差です…!

このサイトでは、こういったゲームエンジンに関連した情報やUE5の使い方やチュートリアルなどを発信しています。
【UE5の使い方】シリーズでは、Unreal Engine5の使い方をUE4、UE5を使ったことのない方にもわかるようにUE5の基本的な使い方を解説しています。

コメント

タイトルとURLをコピーしました