UE5 で Tessellation を使う方法について書きます
UE5 での Tessellation について #
UE4 から続けて使っている人にとって、Tessellation といえば Material の Tessellation だと思います
残念ながら、MaterialTessellation は UE5 で廃止されました
おそらく、Nanite と競合するからかな、と予測しています
Nanite も Tessellation ステージで動作するため、両立が難しかったのかなと
ただし、UnrealEngine 内で Tessellation の効果を受けられない、というわけではないです
GeometryScripting を使って動的に分割数を上げてみましょう
GeometryScripting による Tessellation #
GeometryScript を使って Tessellation を実行します
DynamicMeshActor
を継承した Actor を作成します
ConstructionScript で、下記のように記述しましょう
Source Mesh
は StaticMesh の変数です
InstanceEditable にしておきます
ノードを配置したら、Level 上に配置して、SourceMesh と、DynamicMesh の Material を設定します
結果は画像を参照してください
右がもとの Mesh、左が Tessellation を実行した Mesh です
Material で Tessellation を行っていたのと同様に Tessellation による分割が行えました
UE4 のときの MaterialTessellation と違う点は、距離が離れても分割数が減らない点です
なので、形が崩れない反面、離れても負荷が減らないことには注意が必要です
負荷が気になるのであれば、この状態から StaticMesh を生成し、NaniteMesh として扱うほうが良いでしょう
DDC では重くなるので大量の頂点を扱いたくない…という場合には有用かと思います
ランタイムで使用する場合 #
チュートリアルドキュメントでは GeneratedDynamicMeshActor
を継承して使うものが多いですが、
この Actor は EditorOnly なので、パッケージに含まれません
なので、GeometryScripting の結果をランタイムで使用したい場合は、その親の DynamicMeshActor
を継承して使う必要があります
参考文献 #
-
GeometryScript User Guide
https://docs.unrealengine.com/5.0/ja/geometry-script-users-guide/ -
Geometry Script Refernces
https://docs.unrealengine.com/5.0/ja/geometry-script-reference-in-unreal-engine/