BLOGブログ

2024.06.12UE5UEUE/ Material

[UE5]Nanite Tessellation を使ってみよう

執筆バージョン: Unreal Engine 5.4

こんにちはこんにちは。
アートディレクターのくろさわです。

今回はUE5.3でExperimentalにで導入されたNanite Tessellation を使ってみようと思います。
Nanite Tessellation はUE5.4ではBetaに昇格しました。

Nanite Tessellationとは

Naniteとは、超ハイポリゴンのメッシュを必要な場所だけを無段階で削減して表示する技術です。

Nanite Tessellationとは、Naniteの技術を使って低解像度のメッシュを内部的にハイポリゴンに分割(Tessellation)し、Displacementを行って立体的に押し出して立体感を高める手法です。

Nanite Tessellationの設定の有効化

Nanite Tessellation を使うには、以下の設定を行う必要があります。
プラグインを有効にしたいので、Pluginsウィンドウを開き、Nanite Displaced Meshを有効にしてください。

コンソールコマンドで以下の設定を行ってください。この設定は一部が読み込み専用なのでiniファイルに書くのが良いでしょう。

(作成したプロジェクトファイルのフォルダ)\Config\DefaultEngine.ini などを編集して、以下の二行を書き加えてください。(追加するのはどこの行でも構いません)

r.Nanite.AllowTessellation=1
r.Nanite.Tessellation=1

成功している場合、マテリアルのDetail設定にEnable Tessellation 項目にチェックをいれると、マテリアルのDisplacementの項目が有効になります。

Nanite Tessellationのマテリアルを作ってみる

Nanite Tessellationを使ったマテリアルを作成してみましょう。

今回は折角なので、漆喰と古びたレンガの複数の素材感をマテリアルの中で合成することで、変化に対応したマテリアルを作成してみます。

複数の素材感をマテリアルで合成するにはMaterial Attributeの仕組みを使うと簡単です。

マテリアルのDetailsからUse Material Attributeのチェックボックスを有効にして、マテリアルのピンをMaterial Attribute型に集約します。Make Material Attribute ノードを作成して、漆喰のテクスチャを接続してください。
UVの貼り方を変更したいのでNamed ReroutesノードでUVの貼り方を変えた値を作成し、Texture Sampleに接続しておきます。

Make Material Attribute ノードをもう一つ作り、おなじようにレンガのテクスチャのテクスチャも接続します。この2つのマテリアルを合成して使いたいので、Blend Material Attribute ノードを作成して、それぞれのマテリアルを接続します。

マテリアルの合成方法の設定

今回はマテリアルの内部で円を描き、その範囲内はレンガにすることにします。
円が直線的すぎてもつまらないので、円の情報にレンガのHeight情報を合成してレンガっぽい形にくずしておきます。

作成したマテリアルの合成方法をBlend Material AttributeのAlphaの値に接続します。漆喰のマテリアルは全体的にレンガよりも高くなってほしかったので、漆喰のDisplacement情報を調整しました。

完成したマテリアルのパラメーターを変更して、レンガに変わる範囲を動かしてみましょう。

Nanite Tessellationの素敵なところ

Naniteだけでも高密度の表現は可能でしたが、Nanite TessellationはモデルではなくHeightMapTextureで立体的な表現ができる点が魅力的です。

Textureでの表現なのでMaterialで制御することができ、変化させることでバリエーションを作ったり、アニメーションさせることができるので、様々な活用方法を考えるだけでワクワクしますね!