Background: Where the DNA Lives
In MetaHuman 5.7 and earlier versions a DNA was a block of user data attached to the skeletal mesh - an AssetUserData entry called MetaHuman DNA Data. There were no assets in the content browser; the DNA was effectively a hidden field on the mesh.
In 5.8, the AssetUserData entry is called Legacy MetaHuman DNA Data.
What’s Changed in Unreal Engine 5.8
The DNA is now its own asset called a MetaHuman DNA. The DNA asset sits next to the skeletal mesh in the content browser. The skeletal mesh has an AssetUserData entry called MetaHuman DNA Data that points at the standalone DNA asset. Everything that used to happen implicitly on the mesh now goes through the standalone DNA asset:
Exports
Reimports
Coordinate-system settings
Per-platform options
Customized MetaHumans have a few restrictions:
Every DNA asset carries a coordinate system, and the skeletal mesh it drives has to be in the same coordinate space. MetaHuman Creator (MHC) authors DNAs in the legacy coordinate system in both 5.7 and 5.8, because the skeletal mesh it ships next to was built in that same space, the two are aligned by construction.
A DNA imported into Unreal with no existing DNA association to inherit from uses the UE-native coordinate system — the project default. If you then run Generate Skeletal Mesh on the resulting MetaHuman DNA asset, the new skeletal mesh is built from the DNA's joint transforms and ends up in the same space — again aligned by construction.
You will experience trouble if an existing skeletal mesh built with legacy workflows receives a newly imported MetaHuman DNA that lands in UE-native space. The rig deforms incorrectly, and no errors are reported during the import flow.
Why is UE-native the default?
The legacy coordinate system was never the long-term target. It was a historical artifact that required ad-hoc per-joint transforms scattered throughout the RigLogic codebase just to land the rig in the UE-native state that every downstream consumer expects.
The generalised coordinate-system conversion (Sec. 1) replaces those scattered transforms with a single principled conversion path, and once that path exists, UE-native is the natural default — it is the destination the engine was always reaching for.
MHC remains in legacy space only because it sources data from parallel, non-DNA stores that are not yet coordinate-system-aware; bringing MHC into line is in progress./
DNA Workflow in 5.8
The new DNA workflow is structured around automatically keeping the DNA and the skeletal mesh intact, provided you follow a couple of protocols.
Round-Tripping a DNA Through an External Editor
The DNA can be authored or modified outside Unreal in any of the following tools that reads and writes .dna files:
MetaHuman Maya tools
Expression Editor
An in-house tool
The workflow is the same in all three cases:
Right-click the MetaHuman DNA asset in the content browser and select Export DNA.
This writes a
.dnafile to the folder you select. (Export is on the DNA asset itself, not on the skeletal mesh.)Modify the
.dnafile in your external editor.Right-click the skeletal mesh in the content browser, select MetaHuman DNA > Import DNA Asset, and select the updated
.dna.
When imported back into Unreal, the editor:
Reads the coordinate system off the existing MetaHuman DNA asset attached to the skeletal mesh.
Loads the new
.dnainto that same coordinate system.Replaces the old DNA asset with the new one in the content browser.
Updates the AssetUserData pointer on the skeletal mesh.
The old DNA asset is removed automatically. There is no manual cleanup step.
Do not delete the DNA asset or the MetaHuman DNA Data entry on the skeletal mesh before reimporting. The "clean up old data first, then reimport" habit from 5.7 is the single most common cause of broken rigs in 5.8. See Reimport Risks below for what goes wrong and Recovery for the fix.
Importing DNA Via Dragging Into the content browser
Dragging a .dna file into the content browser is a different code path from the Import DNA Asset workflow above, and it does not attach the result to any skeletal mesh. The rules are:
If a MetaHuman DNA asset with the same base name already exists in the target folder, Unreal routes the drop to a reimport of that existing asset. The reimport preserves the existing asset's coordinate system.
Otherwise a fresh MetaHuman DNA asset is created in the project-default coordinate system (UE-native unless overridden under Project Settings > Plugins > RigLogic). The new asset is not attached to any skeletal mesh, even if there happens to be one with the same base name in the target folder.
Drag-and-drop is therefore appropriate for round-tripping a DNA back over its existing standalone asset.
Drag-and-drop never inspects the skeletal mesh.
When the folder contains a same-named UDNA, the drop reimports it and preserves that UDNA's coordinate system (the first rule above).
But when there is no matching UDNA — only a skeletal mesh you intend to retarget — the new UDNA lands in the project default (UE-native), regardless of what coordinate system that skeletal mesh was built in.
To attach a fresh DNA to an existing customized MetaHuman, right-click on the skeletal mesh and select MetaHuman DNA > Import DNA Asset . That is the only path that inspects the skeletal mesh's currently-attached DNA and inherits its coordinate system.
Exporting a DNA file from a DNA Asset
DNA files can be exported by right clicking on a DNA Asset and selecting Export DNA.
In 5.8, if attempting to export a DNA file from a DNA asset generated by MHC, either via assembly or the Save Pose option in the Import From Custom Mesh and no user edits are made to change the coordinate system, the resulting DNA file will be in Left, Up, Front regardless of the settings displayed in the asset. If you wish to export to a different coordinate system, change the settings and select Apply.
Migrating 5.7 Customized MetaHuman
A MetaHuman customized in 5.7 will open in 5.8 with the old DNA representation still in place, meaning the skeletal mesh has a Legacy MetaHuman DNA Data AssetUserData entry, but no standalone MetaHuman DNA asset in the content browser.
The rig continues to evaluate as it did in 5.7, but until you migrate, it will not pick up any of the 5.8 features:
In-editor coordinate-system editing
Per-platform configuration
Optimised cooking
And more
There are two ways to migrate:
One Mesh at a Time From the Editor
Right-click the skeletal mesh in the content browser and select MetaHuman DNA > Create DNA Asset. This entry is only visible while the legacy AssetUserData is present. Unreal will:
Create a standalone MetaHuman DNA asset next to the skeletal mesh (named <MeshName>_DNA).
Carry the existing DNA bytes into it with the legacy coordinate system already configured.
Attach a new MetaHuman DNA Data AssetUserData entry pointing at the new asset.
Remove the old Legacy MetaHuman DNA Data block.
Nothing about the rig changes visually - the coordinate system is preserved end to end.
In Bulk From the Command Line
Run the
ConvertLegacyDNAAssetscommandlet over a project folder. It performs the same per-mesh migration for every skeletal mesh under the chosen path in a single headless pass, with source-control integration and an optional re-import-from-source mode.See Dedicated UDNA Asset Type for the full command-line reference, switches, examples, and CI-friendly invocation.
Either approach leaves the project ready for the 5.8 workflows above. Reimports after migration follow the round-tripping procedure from Round-Tripping a DNA Through an External Editor section.
Reimport Risks
The project-default coordinate system (UE-native) is the right target. If you run Generate Skeletal Mesh on the resulting MetaHuman DNA asset, the new skeletal mesh is built from the DNA's joint transforms and ends up in the same space — the two are aligned by construction.
This is also the path the MetaHuman Default Editor Pipeline takes when it generates a skeletal mesh from a DNA. When you reimport a .dna, Unreal decides which coordinate system to load it into by looking at what is currently attached to the skeletal mesh. There are three cases:
Reimport Skeletal Mesh | New DNA Coordinate System |
MetaHuman DNA Data is present (the 5.8 standalone DNA asset is attached). | Copied from the asset currently attached, for example, whatever space the existing DNA was already in. Correct in all cases. |
Legacy MetaHuman DNA Data is present (5.7-era AssetUserData, not yet migrated). | The legacy coordinate system - matches the skeletal mesh that was built alongside it. Correct for any 5.7 MetaHuman. |
Neither is present (the entry was deleted, or the skeletal mesh never had a DNA asset). | The project default, which is UE-native unless your project has changed it under Project Settings > Plugins > RigLogic. Correct only when there is no existing skeletal mesh to remain compatible with, for example when the DNA is being imported standalone and a skeletal mesh will be generated from it afterwards. Wrong for any existing MetaHuman, including any customized MH from MHC or 5.7. |
Removing the existing DNA or its AssetUserData before reimporting is the same muscle-memory step that was required in 5.7, however, in 5.8 this step strips the information Unreal requires to know which coordinate system to load into causing silent rig breakage.
Silent rig breakage on customized MetaHumans follows this failure pattern:
The fresh DNA imports without errors.
The coordinate-system field on the new asset reads the project default (UE-native unless overridden) instead of legacy.
The rig deforms incorrectly at evaluation time.
Recovery
The fix does not require redoing the import. Open the affected MetaHuman DNA asset in the editor and edit DNAConfig to the legacy values:
Field | Set to |
CoordinateSystem | XAxis = Left, YAxis = Down, ZAxis = Front |
RotationSign | X = Positive, Y = Positive, Z = Positive |
RotationSequence | XYZ |
FaceWindingOrder | CW |
CoordinateSystemTransformPolicy | Transform |
These are the values FDNAConfig::Legacy() returns (see Appendix A). Editing them in place rewrites the DNA inside the asset against the new coordinate system and rebuilds the rig automatically without needing to reimport, or make skeletal mesh changes. Save the asset and continue working with your MetaHuman character.
This is also a useful sanity check after any reimport: if you open the new MetaHuman DNA asset and DNAConfig reads UE-native ({Left, Front, Up} and rotation signs {Negative, Negative, Positive}) when you were expecting a customized MetaHuman, the AssetUserData was missing at import time. Set the fields back to the values above.
Appendix A — Coordinate-System Reference
Profile | XAxis | YAxis | ZAxis | Rotation Sign | Sequence | Face Winding |
UE-native (5.8 default) | Left | Front | Up | (Neg, Neg, Pos) | XYZ | CW |
Legacy ( | Left | Down | Front | (Pos, Pos, Pos) | XYZ | CW |
Maya source (factory | Left | Up | Front | (Pos, Pos, Pos) | XYZ | CCW |
The editor's FCoordinateSystemCustomization enforces basis validity (three distinct spatial axes, |det(B)|≈1) in the Apply button before committing the property edit.
Appendix B — Migration Cheatsheet
Run the converter once across the project:
Command LineUnrealEditor-Cmd.exe MyProject.uproject -run=ConvertLegacyDNAAssets \ -PathFilter=/Game/MetaHumans -ResaveDNA -VerboseAdd
-DryRunfirst to preview. Use-ReimportFromSourceif you want to re-pull from the original.dnafiles instead of converting in place.Open Project Settings > Plugins > RigLogic and review the project's default
DNAConfigandRigLogicConfiguration. Configure per-platform LODs and calculation/FP type for shipping platforms.For each MetaHuman skeletal mesh, verify a MetaHuman DNA Data (
UDNAAssetUserData) entry now points to a standalone UDNA asset.If you intend to ship bone-track animations on a DNA, keep the asset's
DNAConfigon UE-native coordinates (see Appendix A). Curve-only animations are space-agnostic.Cook a representative platform and confirm the DNA package size drops (optimized-cooking path) and that runtime initialization no longer shows RigLogic re-init in the load profile.