UE5で簡単にディスプレイメントマップ(Displacement Map)を設定する方法を紹介します。ディスプレイメントマップは、テクスチャのマップを使用してオブジェクトのメッシュの実際の形状を変形させることで、表面に本物の凹凸を作り出します。これによりリアルな影や光の反射が生成されます。それと比較して、ノーマルマップはオブジェクトの実際の形状を変えることなく、影の濃さなどを変化させることで、視覚的に凹凸があるように見せます。
UE4では、ディスプレイメントマップを簡単に使用することができたのですが、UE5からはディスプレイメントマップが簡単に使えなくなりました。LumenやNaniteが導入されたことで、非常に高いディテールを持つジオメトリを処理することが可能になったからです。
とはいえどもPBRマテリアルテクスチャー素材を使ったときに、テクスチャー素材だけだと凹凸の表現がノーマルマップだけになるのは寂しいです。何かもっと簡単にUE5でディスプレイメントマップ(Displacement Map)を使えないものかと調べてみました。
難しい設定をすればUE5でもディスプレイメントマップ(Displacement Map)を使えるようですが、Tessellationの設定が必要だったり、ブループリントの設定が必要だったり、DefaultEngine.iniの書き換えが必要であったりします。今回それらの設定が使わずにディスプレイメントマップを設定します。
参考
https://zenn.dev/posita33/articles/ue5-exp-displacement_tessellation
https://metatimecg.com/ue5-displacement/
まずディスプレイメントマップ(Displacement Map)を用意します。
プラグインにてNanite Displaced Meshをオンにします。
ディスプレイメントマップ(Displacement Map)をUE5に取り込みます。もちろんディフューズマップ (Diffuse Map)、ノーマルマップ (Normal Map)、ラフネスマップ (Roughness Map)なども設定済みとします。
スタティックメッシュにディスプレイメントマップを有効にする項目があります。マテリアルじゃなくてスタティックメッシュです。
Naniteを有効にして、相対誤差をトリミング(0.1~0.いくつかで調整します)は、0.1なら角度ついた感じ、0.3など増やしていくと角度が弱くなる印象です。ディスプレイメントマップがあるので+で項目を追加して、ディスプレイメントマップをドロップして追加します。
保存すると凹凸が反映されました。
おお!ボコボコ!!ブループリントもテキストファイルの書き換えもいりませんでした。
凹凸がある状態。
凹凸がない状態。
以上簡単にUE5でディスプレイメントマップ(Displacement Map)を追加する方法でした。ただし実験的な機能なようなので、すべてが正しく動くか未検証です。またUE5.4などでは新しいディスプレイメントマップの代わりになる機能が追加されたり、パララックスオクルージョンマッピングを使うなどいろいろな方法があるようで、まだまだ定まらない機能なのかもしれません。