Troubleshooting
Most problems announce themselves — in the baker's Output logs, or as a material compile error that names the setting to change. Check both before anything else.
Debug report — on by default — writes <AssetName>_Debug.md next to your assets describing
exactly what was baked. It's the first thing to check when a bake looks wrong, and the first thing to
attach to a support request.
The mesh doesn't move at all
"No motion was captured — every frame is identical to the rest pose." The source never animated over the frame range. For simulated types, confirm the actor actually moves when you press Simulate. For Soft Body (Anim Sequence), confirm the sequence isn't a single static pose.
The material compiles but nothing happens. Always Evaluate World Position Offset is probably off on the material. Without it, a primitive's own WPO setting or WPO Disable Distance can suppress the animation entirely.
Frame isn't connected, or is connected to a constant. Drive it with Time × FrameRate.
The mesh disappears, or loses its shadow, when it moves
Max World Position Offset Displacement is too low. The compile error states the value to use. Unreal culls using the mesh's bounds plus this allowance; if the allowance doesn't cover the animation's travel, the mesh vanishes while its vertices are still on screen.
If you're using the Soft Body Scale input above 1, raise this setting by the same factor.
Shading is banded or faceted
The Normal (and Tangent) output isn't going through a Vertex Interpolator. Add one between the decode node and the material pin. Wired directly, the lookup runs per-pixel and bands across every triangle.
Lighting looks wrong / normals are inverted
Check Tangent Space Normal on the material:
- Both Soft Body types — must be ON
- Rigid Body and Fluid — must be OFF
Getting this backwards is the most common cause of odd shading. The node's compile error tells you which one it wants.
All the instanced pieces are stacked on top of each other
The PieceIndex input isn't fed by a PerInstanceCustomData node (index 0). Unreal only uploads
per-instance data to the GPU when that node is present in the graph — reading it any other way means
the data never arrives and every instance reads piece 0.
The instanced bake produced a combined mesh instead
The bake logged a warning and fell back to Compound. It requires every source actor to share the same static mesh at the same scale, with at least two pieces. Geometry Collections can never be instanced — their pieces are all unique shapes.
The warning in the Output logs names which condition failed.
Particles are missing, or too few appear
User.ParticleCount doesn't match the asset's Unit Count. Open the data asset, read Unit Count, and set the parameter to that number.
Particle playback jitters or particles swap places
"Emitter lacks 'Requires Persistent IDs'." Enable it on the source emitter and re-bake. Without it, particle identity isn't stable between frames.
Particles vanish and never come back
The graph is killing dead slots instead of hiding them. A slot dead at frame 0 may be alive later,
and a killed particle never returns. Use the Alive output to drive sprite size to (0,0) instead.
The fluid surface has holes or cracks
Holes: Max World Position Offset Displacement must be exactly 0 for Fluid materials. Any non-zero value turns hidden triangles back into visible geometry.
Cracks: re-bake at 128-bit (RGBA32F). The bake warns about this when you choose 64-bit; it's more visible on actors scaled up.
The bake stopped partway
"Capture aborted: the play world ended before the capture finished." The play session was stopped mid-bake. Let it run to completion, or use the panel's Cancel button.
Playback is choppy
Raise Capture FPS, or lower Frame Step. For Fluid, playback snaps to whole frames by design — smooth motion requires a higher bake frame rate.
The mesh ghosts, smears or trails behind itself
Only happens when Frame is driven from Custom Primitive Data, a material parameter or Blueprint — typically a Level Sequence track — and it is worst while scrubbing.
The engine builds motion vectors by evaluating the material a second time with last frame's values, but it only keeps a previous copy of Time, not of Custom Primitive Data. The mesh therefore reports that it never moved, and temporal anti-aliasing keeps reprojecting it onto stale history.
Add a VAT Frame Driver component, key its Frame property instead of the primitive data
directly, and wire its second output float into the decode node's PrevFrame input. Full setup in
Driving playback.
Driving Frame with Time × FrameRate never has this problem.
The bake won't start
- "Set an Asset Name before starting a capture."
- "Select source actors and click 'Use Selected' before starting a capture."
- "Pick both a Skeletal Mesh and an Anim Sequence before baking."
"Bake is too large for a single texture"
The bake stops and writes nothing — no data asset, no textures, no mesh. Any assets from a previous bake of the same name are left untouched.
Reduce the frame range, raise Frame Step, or reduce the number of pieces/vertices/particles in the source.
A bake needs one pixel per unit per baked frame, and the total must fit 4096 x 4096 —
16,777,216 pixels. So the budget is baked frames x units:
| Baked frames | Units (pieces, vertices or particles) |
|---|---|
| 120 | ~139,000 |
| 300 | ~55,000 |
| 1,000 | ~16,700 |
| 4,096 | 4,096 |
The limit is the same on every platform.
Re-baking says the source can't be found
Re-baking from a data asset restores the original settings, but level actors are resolved by reference — if the level changed or the actors were renamed, re-select them. For Soft Body (Anim Sequence), re-pick the mesh and sequence.
After updating the plugin
If a release note says the format changed, re-bake your assets. Old bakes may not play back correctly against a newer decode node.
"Unverified seat" in the baker header
The baker asks the Epic Games Launcher whether the account you are signed into owns this plugin. The notice means the launcher answered "no" — usually because a different Epic account is signed in than the one that bought it. Sign into the purchasing account and reopen the baker.
Nothing is blocked by this. Baking, playback and your existing assets are unaffected.
The header shows one of three things:
| Status | Meaning |
|---|---|
| Licensed | The signed-in account owns the plugin. |
| Unverified seat | The launcher answered, and the signed-in account does not own it. |
| Seat not checked | The launcher did not answer, so nothing was determined. Normal on a source-built engine, offline, or behind a firewall or VPN. |
"Seat not checked" is not a problem and needs no action.
Nothing about the check leaves your machine except the launcher's own entitlement lookup. We receive nothing, and no account details are read or stored.
Still stuck
Email [email protected] — or copy the address,
[email protected], if your browser or desktop has no mail app set up to open links. Four things
make a bake problem answerable on the first reply:
- The debug report —
<AssetName>_Debug.md, written next to the baked assets whenever Debug report is ticked in the baker (it is on by default). See the baker panel for what it contains. - The baker log — expand Log at the bottom of the panel and use the copy button in its header to put the whole thing on your clipboard.
- The plugin and engine versions — the plugin version is in the baker window's title bar.
- What you expected to see, and what you saw instead.