Skeletal Mesh doesn't update as if not rendered

Hi,

We have a creature that spawns into the game by emerging from underground. For this purpose:

  • its Entry animation state is the “Burrowed” one
  • the skeletal mesh components is set to “Always tick pose, refresh bones only when rendered” because we naturally do not want the mesh to animate on the dedicated server and we were informed that this was the way to do it.

Now the problem is that the skeleton mesh of the creature is “frozen” in the burrowed/underground (entry) state unless:

  • a camera (player’s or even viewport) goes underground to see it
  • a camera (player’s or even viewport) get within 3000 uu of the mesh.

The moment one of the above happens, the mesh updates on the next tick. The character blueprint update fine, and so does the anim blueprint. I can see that the state machine is “walking” and not “burrowed” state, but the mesh will not budge. This is a massive problem because we have mechanics that rely on traces being able to hit the character mesh, but if it’s stuck underground, they cannot. We have no idea where the 3000 uu comes from or even why the bone update is dependent on the camera. Is it a setting we may have mistakenly set, or is it hard-coded into the “Am I being rendered?” check?

Have you got any ideas on what might be causing this?

Kind regards,

Marcin Dudkowski

Bound is used for renderer to determine whether or not to occlude object. Bound is calculated based on animation.

If your animation is more or less same as reference pose, its likely fine but the problem usually comes in when you have mesh with off pose - i.e. away from root. Your bound has to be recalculated based on new animated pose. So it has to refresh bone transform.

Basically you will need one pose that has to be updated to burrowed position, so that bound will be calculated correctly. This has been a bit of nightmare all along since this is chicken egg problem where you want to figure out if you want to update but to figure that out, renderer has to tell us if we’re visible, but to calculate visibility, we’ll need the new bound with animated pose.

What we usually do is to use tick pose and refresh pose but not on dedicated server. On dedicated server, we only tick pose. Also we use “Animation Update Rate optimization”, so that we don’t have to tick most of times.

Let me know if you have any more question,

–Lina,