Troubleshooting
Bake fails
- Check that Source includes a SkinnedMeshRenderer.
- On the model import settings, Rig tab, turn Optimize Game Objects off.
Controller missing transitions after bake
Turn Fill Controller on and bake again. An existing controller only receives new OneShot and Loop parameters and transitions. Idle and Locomotion stay without triggers until you add them.
Nothing animates in Play Mode
- Check that the player has a Vertex Anim Controller with a valid Baked Animation Set and atlas.
- Check that the material samples the VAT atlas, and that the blend and instancing keywords match how the character is drawn.
- Check that Paused is off and the GameObject is active.
- If Manual Update is on, call ticks in this order:
locomotionDriver?.Tick(); // if present
player.Tick(Time.deltaTime);
InstancedRenderSystem.Instance.LateTick(); // if drawing instancedInstanced characters invisible
- Check that an Instanced Render System is in the scene.
- Check that LateTick runs, either from automatic LateUpdate or from your own call.
- Check that the material has Enable GPU Instancing on.
- If Frustum Culling is on, check the assigned camera and the culling radius. A radius that is too small hides instances that are still on screen.
- Check that each player component is enabled. A disabled player is left out of the batch.
Animation plays twice as fast / jitters
The player is being ticked twice. With Manual Update off, Unity already calls Tick, so a second call from your code doubles the speed. With Manual Update on, the same happens when two scripts both call Tick. After changing the scripting define, let scripts recompile before testing again.
Attachments do not move
- Check that the slot was in the bake list.
- Check that the runtime slot name matches the baked name (the transform name at bake time).
- Check that the attachment prefab has a
MeshRendereron itself or a child, or that you calledSetAttachmentwith a mesh and material. - Check that
InstancedRenderSystemis in the scene and thatLateTickruns after the playerTick. - Check that the attachment scale is uniform. The slot uses
localScale.x, so a non-uniform scale stays put. - Check that
VertexAnimPlayeris ticking. Attachment matrices update insideTick. - If the active LOD has Update Interval above 1, attachments on that LOD update only on those ticks.
- If attachments disappear at a distance, check Render Attachments on the active LOD. An occluded character hides them as well. With Enable LODs off, those LOD flags are ignored and attachments stay visible.
LOD never changes
- Check that a screen percent on the Baked Animation Set is above 0. At 0 the player stays on LOD0.
- Check that Enable LODs is on for Instanced Render System. While it is off, every instance stays on the LOD0 mesh.
- Check that the player uses the Baked Animation Set you edited. VAT LOD Group writes thresholds onto that set, and playback reads the set on the player.
Edit Mode preview ignores Custom Data
Check that the VertexAnimPlayer component is enabled. Edit Mode pushes Custom Data on a lightweight path. Play Mode still follows the tick rules above.
Define / Manual Update seems ignored
Changing NL_VAT_MANUAL_UPDATE applies after a script recompile. Check the status line in Project Settings → VAT Settings and the Inspector warnings on VAT components. If they still show the previous mode, the scripts have not recompiled yet.