Tore Lervik - MeshPack

MeshPack analyses all Static Mesh Actors and packs them into instances when the game is packaged. No need to manually combine actors while you are working on your game.

It works with World Partition and normal levels, making your workflow nondestructive and highly optimized.

MeshPack also re-packs Blueprints, Packed Level Actors and more. This further optimizes your game regardless of your workflow. Works with World Partition, Data Layers, Custom Primitive Data, Level Instances, PLA, Blueprints preserving mesh settings and more. Further details in the docs link below.

MeshPack doesn't currently support meshes with prebuilt static lighting. I want to support this, but unsure if it's technically possible at this point.

Latest update: Version 2.0

  • Reworked the plugin from the ground up to more robust and handle edge cases better

  • Missing usage flags on materials now gives a warning in the Output log instead of showing up gray in the packaged game

  • Fixed an issue with PLAs having ISMs marked as movable

  • Sorted the components so that transforms close together ends up in the same ISM

  • Physics settings are now copied from the original mesh to the ISM

  • Meshes with custom vertex colors are now correctly ignored

Example cases

The Matrix Awakens - City Sample Project

Large open world level with thousands of meshes. The technical demo also puts previously showcased UE5 features Nanite and Lumen through their paces. In a dense, open-world city environment.

MeshPack stats:

  • Actors reduced from 111,878 to 37,260

  • Components reduced from 1,229,496 to 535,085

Valley of the Ancient

Large open world level with thousands of meshes. Used to showcase UE 5.0 with World Partition and Packed Level Actors.

MeshPack stats:

  • Actors reduced from 16,502 to 6,303

  • Components reduced from 216,417 to 97,573

Lyra Starter Game

Medium size action game project optimized as a arena shooter. Uses static mesh actors mostly for floors and walls.

MeshPack stats:

  • Actors reduced from 4,507 to 1,339

  • Components reduced from 6,163 to 3,506

Local benchmark level

Large open world level with over 200,000 StaticMeshActors

MeshPack stats:

  • Actors reduced from 214,631 to 1,004

  • Components reduced from 215,114 to 2,745

Latest Documentation: https://drive.google.com/file/d/1VYouZISleYcijjHK8W8JgCyYw-JtuBnt/view

Discord: https://discord.gg/sX48CssHWMNote on Fab license changes:Fab has changed the current license for plugins to be per-seat.MeshPack runs at build time, so you only need one license per team/company.

This is one of the Top 10 plugins to have for UE development. Helps with my non-destructive workflow and helps an otherwise manual task, allowing me to focus on my creativity. Just wanted to slap this comment here, as a review of sorts~

1 Like

Agreed - what else is on your top 10, out of interest?

Hello Tore,
I would like to ask if it would be possible to include a Debug Visualization Mode in a future MeshPack update. This feature would allow users to preview which objects are going to be packed into instances.

1 Like

This plugin looks promising. But how much will it increase packaging times for a project with a very complex and big open world? Can you give a rough estimate?

I’ve only seen it ever take a couple of seconds in my test projects.

1 Like

Love your work Tore.

I’m wondering what you make of runtime cell transformers (added in 5.5) and the WorldPartitionRuntimeCellTransformerISM World Partition Runtime Cell Transformer added with it. It seems to do basically what your plugin does, except at runtime.

I’m also curious as to what you make of the Fast Geometry Streaming plugin added in 5.6 and the FastGeoWorldPartitionRuntimeCellTransformer World Partition Runtime Cell Transformer added with it.

From what I understand, the fast geo plugin does what your plugin does (pack actors into instances, though at runtime) and then register those instances as lightweight non-UObjects.

Are there benefits provided by your plugin that the WorldPartitionRuntimeCellTransformerISM World Partition Runtime Cell Transformer doesn’t do (and vice versa)? And do you plan to update your plugin to take advantage of features introduced in the Fast Geometry Streaming plugin?

Hi,

The WorldPartitionRuntimeCellTransformers run very similar to MeshPack, and actually run at packaging too. Name is just a bit confusing. But they have the advantage that they also run in PIE, so you can test them more easily.

I plan on adding a MeshBlendWorldPartitionRuntimeCellTransformer for 5.6+ that enabled MeshBlend to run in front of FastGeo for example. The advantage here is that meshpack can pack more stuff, and serves up ISMs for fastgeo to stream.

Note that WorldPartitionRuntimeCellTransformers only process WP grids cells. So any non-WP levels or non-spatially loaded actors are not transformed by this.

2 Likes