Blend weight of physics asset after constraint is broken? Possibly UE-40632 related

I have a destructible robot. It’s parts can break apart and react to hits using the physics asset. The issues arise when I’m blending the physics weight.

In the GIF you can see that I break the head off first, then he animates (bringing the head back), he lands, the head goes back to where it originally dropped, and his body freaks out until I kill him.

117189-phys-bugs.gif

Here are the problems that I can identify:

  1. Blend weight returns broken rigid body constraints back to the skeletal mesh when blend weight is set to 0
  2. When blend weight is set back to 1 (after landing the jump), the simulation freaks out and doesn’t stop freaking out until the character is dead and all of the objects are set to a new simulation.

Questions:

  1. Is it possible to ignore bones during physics blending? That way they don’t pop back onto the character.
  2. Is there a way to prevent the physics asset from simulating in the background when I turn the blending to 0? I’m hoping that will allow the character to return to the simulation after the landing.

Thanks for any help!

EDIT:

As Tomasz has pointed out below, it looks like my issue is related to UE-40632 Unreal Engine Issues and Bug Tracker (UE-40632)

Have you been able to sort this out? I’m having the same problem. What is interesting this looks like a regression since the same code I had worked just fine on 4.12 and before.

Nope, I wasn’t able to fix it. I ended up scrapping the idea of dynamically breaking limbs off. Now the limbs just break off when the character dies. Wish there was a way to ignore a specific bone during blending. There is a node for ignore blending, but I don’t think it does what I need.

Here’s the issue link under which this issue is supposed to be fixed no sooner than 4.16 Unreal Engine Issues and Bug Tracker (UE-40632). I believe this is exactly the problem you were having.

Looks like it! I reposted your link to the issue in my post in hopes that it will link up to the issue page.

any updates on your issue?

Tomasz said it’s suppose to be fixed by now, not sure if it is. His link is broken so maybe it has been resolved?

So actually I have tested it and this issue was not fixed either in 4.15 or 4.16. I have fixed it myself in the engine by changing the way caching of blended bones in phys anim works.

I have removed the following part from PhysAnim.cpp around lines 240-241

WorldBoneTMs[BoneIndex].TM = PhysTM;
WorldBoneTMs[BoneIndex].bUpToDate = true;

The caching still works this way, but at least bodies that need to be blended will be do so properly. Not sure if this doesn’t really cause some hard to find problems, but my testing didn’t show anything suspicious at all, so I stick to this fix.