Skip to content

Reimport protection

A reimport of a mesh’s LOD 0, or an import over an existing mesh, can remove its hand-made (imported) LODs: they become generated LODs again or disappear. LOD Tailor keeps a copy of the imported LODs before every reimport. When they are gone afterwards, it asks to put them back, puts them back right away, or does nothing.

Project Settings > Plugins > ta LOD Tailor > Reimport > Protect Imported LODs on Reimport:

Value What happens when a reimport removed imported LODs
Ask (default) A notification says, for example, “ta LOD Tailor: the reimport of SM_Statue_Imported removed its imported LOD 1.” with the question “Put them back from the copy taken before the reimport? Ctrl+Z undoes it.” and two buttons: Restore LODs and Keep as is.
Restore The LODs are put back right away.
Off Nothing is put back. Merged sections are still kept up to date; see Merged sections.

In unattended runs, such as commandlets, Ask doesn’t show the notification and leaves the mesh as the reimport made it.

Putting the LODs back restores the LOD layout from before the reimport:

  • the geometry of every imported LOD the reimport removed, with its settings, its source file and, for static meshes, its section settings (materials, shadows, collision);
  • generated LODs the reimport removed, with their reduction settings; LODs with merged sections are merged again (see Merged sections).

It is one undo step: Ctrl+Z undoes it. An editor that has the mesh open is closed while the LODs come back and opened again afterwards. The panel’s Log lists every step, for example:

The reimport of SM_Statue_Imported removed its imported LOD 1.
Put back imported LOD 1 of SM_Statue_Imported (Ctrl+Z undoes it).

With Keep as is, the Log says “Kept SM_Statue_Imported without its imported LODs.” If the LODs can’t be put back, it says why, for example “Could not put back the imported LODs of SK_Hero. This engine version cannot put skeletal mesh LODs back; reimport them from their files.”

Mesh Protected on
Static meshes Unreal Engine 5.0 to 5.8
Skeletal meshes Unreal Engine 5.3 and later. On older versions LOD Tailor still notices lost imported LODs and logs them, but they have to be reimported from their files.

Reimports that run in the background, such as Interchange imports, are checked when they are done. A copy waits up to two minutes for its reimport to finish. On UE 5.2 only, a reimport through the experimental Interchange FBX importer removes the generated LODs and screen sizes, which can’t be brought back; see Known limitations.

LODs whose sections LOD Tailor merged (see Fewer draw calls) have geometry of their own: a copy of LOD 0 with fewer sections. When a reimport brings a new LOD 0, LOD Tailor merges their sections again from it, whatever Protect Imported LODs on Reimport says, and the Log says “Merged the sections of LOD 2 of SM_Kiosk_Sections again from the reimported mesh.”

When the reimport brings geometry of its own for such a LOD, that LOD is an imported LOD from then on and is used as it is: “The reimport of SM_Kiosk_Sections brought its own LOD 2: used as imported, its sections are not merged any more.” The same happens when you import a LOD over a merged LOD in the Static Mesh Editor.

Function What it does
reimport_keeping_imported_lods(mesh) Reimports the mesh from its source file without asking and puts back the imported LODs the reimport removed, whatever the setting. Returns True if the reimport ran.
snapshot_imported_lods(mesh) Copies the mesh’s imported LODs, for a reimport you run yourself. Returns how many it copied.
find_lost_imported_lods(mesh) The imported LODs of the last copy that the mesh has lost since.
restore_imported_lods(mesh) Puts the lost LODs back from the copy, as one undo step. Returns how many came back.
import unreal
tailor = unreal.get_editor_subsystem(unreal.TALODTailorSubsystem)
mesh = unreal.load_asset("/Game/Props/SM_Statue_Imported")
tailor.snapshot_imported_lods(mesh)
# ... reimport the mesh with your own pipeline ...
if tailor.find_lost_imported_lods(mesh):
tailor.restore_imported_lods(mesh)