Nanite & ISMs - Best Practices

Hello,

If you are using World Partition, keep the cell size in mind when batching. A single ISM for objects nearby and across the map isn’t going to be the most efficient way to load objects. If you are using some other streaming system, then that needs to be taken into account as well.

Distance, frustum, occlusion, and similar per-instance culling will be taken care of automatically, both with and without Nanite, on the GPU. When using ISMs, it is possible to set Nanite meshes to distance cull. For an example of this in action, see the water plants in and on the ponds in the Hillside Sample. For more information on this, please see “BuildInstanceDrawCommands.usf”, in particular, the function “IsInstanceVisible(…)”

There are several existing tools for converting large bodies of Static Meshes into ISMs:

  • Merge Actors tool
  • HLOD Instancing layers
  • Packed Level Actors

If none of these satisfy what you are looking for, you might need to build your own tool.

These tickets discuss batching Nanite Static Meshes further, including potential cook-time batching of Static Meshes into ISMs:

[Content removed]

[Content removed]

This World Building Guide also goes into more detail on this topic in general:

[Content removed]

This ticket discusses working with Mesh Paint Textures and ISMs:

[Content removed]

Please let us know if this helps.