Ability to decimate geometry as part of USD export

Hi Chris!

To pull back a step for a moment just to get some extra context, are these meshes that you’re exporting the result of geometry operations and/or modeling in the engine, or were they previously imported from somewhere (may or may not have been USD) and are now being re-exported? And is this an export just of assets (i.e. from the Content Browser), or are these meshes being exported in the context of a level? Also, I would guess that you may be post-processing the exported USD? For example, I don’t believe there’s a way to specify the purpose the USD mesh should be assigned when a UE mesh is exported, so are you authoring purpose post-export?

We try to keep the translation during export from uassets to USD as literal as possible, so geometry processing is kept to a minimum and there are indeed not many export options that would influence the geometry/topology. As a result, I would say that if you’re able to produce whatever geometry you intend to export before initiating the export process, whether that’s in-engine or otherwise, that might fit best with how the export process works.

Here are a few ideas along that vein:

If using the auto mesh reduction and automatic LOD generation provide acceptable results for you, you could turn up the number of LODs on the UE mesh and then make sure that your USD export is setup to export the full range of those generated LODs. This will produce a LOD variant set on the exported Mesh prim with “LODX” variants for each level of detail. In your USD post-processing, you could extract one of these LODs into a standalone Mesh prim that you then author with purpose=proxy.

In UE 5.5, there’s a new option to allow you to choose between exporting the mesh source data (if available) versus the render mesh:

https://github.com/EpicGames/UnrealEngine/commit/dc9bd881ac089675b40bfbdf051435819cd75064

If your geometry was previously imported from USD, hopefully this source data would be in place, and exporting with that option turned on would give you as close to the original mesh as possible. If you’re not able to move to 5.5, you may be able to patch that change back to 5.4, though there may have been some additional earlier changes that it depends on.

Let me know if any of that helps. Otherwise we can see if there are any pointers the Nanite and/or geometry teams might be able to provide.

Thanks!