Quick answer: Open the SkinnedMeshRenderer. Set custom Bounds Center and Extents large enough to cover all animation poses. Leave Update When Offscreen off — it’s a perf cost that’s rarely needed. Bounds are local space and move with the transform.
Character does an overhead swing. The sword vanishes mid-arc as soon as the swing leaves the camera view. SkinnedMeshRenderer’s bind-pose bounds didn’t include the raised-arm pose; the renderer culled before the camera ever saw the swing.
The Symptom
Skinned mesh disappears partway off-screen even when extremities should still be visible. Or animations that move bones far from the bind pose pop in and out as the bind-pose bounds enter/leave the frustum.
What Causes This
SkinnedMeshRenderer’s bounds default to the model’s bind-pose extents. Animations that displace vertices outside that box (raised limbs, big jumps, crouches) move geometry beyond the cull volume. Unity culls based on bounds; the actual mesh is invisible if the bounds are off-screen.
The Fix
Option 1: Custom Bounds (recommended).
SkinnedMeshRenderer Inspector:
Bounds:
Center: (0, 1.0, 0)
Extents: (1.5, 2.5, 1.5)
Size the box to enclose every animation pose with a margin. Center on the typical mesh position. Cost: zero per frame; bounds are static.
Option 2: Update When Offscreen. Tick the box. Unity recomputes bounds from the actual skinned vertices every frame — perfect culling. Cost: skinning compute runs even when the renderer would otherwise be culled. Use sparingly — key characters or cinematic shots only.
Programmatic Bounds
For procedural rigs where you can’t set bounds in the editor:
void Start()
{
var smr = GetComponent<SkinnedMeshRenderer>();
smr.localBounds = new Bounds(new Vector3(0, 1, 0), new Vector3(3, 5, 3));
}
Verifying
Scene view → select renderer. The bounds box renders as a wireframe. Play the most extreme animation; the mesh should stay inside the box at every frame. If it pokes out, bounds aren’t big enough.
In Game view, walk the camera so the renderer is just off-screen. With correct bounds, the mesh stays visible until the bounds box fully clears the frustum.
“Bounds enclose all poses. Update When Offscreen for cinematic. Mesh stays on screen when it should.”
Related Issues
For occlusion culling skipping, see occlusion culling. For LOD pop, see LOD popping.
Custom bounds. Big enough. The character stays visible.