Child of Constraint Changes When Simplifying Scene

Hey, new poster here, hoping to quickly solve this annoying problem

Basically, I used a child of constraint on the root of my rig so my character would follow the movement of the chair.

When I applied the constraint at first, the scene was simplified/low res so the view port would play faster.

Ive already animated the character a bit, so I switch off the simplify. But when I do that it really messes up the child of constraint positioning. Is there a reason this happens and is there an easy fix?

Some pictures:


Also the subsurf modifiers for the character rig are marked red, if that helps.


Have you applied the rotation to both objects before setting the constraint?

1 Like

That’s weird. Did you give the child-of a vertex group as a parent? You probably didn’t need to.

Okay, assuming the chair is animated by object transforms, and the vertex group isn’t really necessary, the quickest way to fix this is…

  1. Set simplify back on, take a note of maximum viewport subdivision level. Everything looks back to normal right now, right?
  2. Duplicate your chair. Delete all keyframes on your duplicate, parent it to the original chair. Make the duplicate non-rendering.
  3. Set your duplicate’s subdiv level (on both render and preview) to no higher than the maximum viewport subdiv you noted on 1 above.
  4. Change your child-of to target the duplicate chair instead of the original. Shouldn’t have to touch anything else. Inverse, vertex group, etc should all be the same as they were.
  5. Turn simplify back off.

That should do it. Test it out.

I dont think I applied rotation to the chair before the constraint. Im still confused why it would change when I uncheck simplify

I agree that its strange that simplify would change any constraints haha. I noticed in the simplify preferences the constraint changed more as I increased the max subdivisions. Super weird.

Also, the chair is animated with a simple rig, not object transforms. Do you think your steps would still work?

Subdiv changes the vertex groups. Subtle changes to the nature of the parent can have a large effect on the child-of inverse.

They’d need revision, and it wouldn’t be exactly the same. You’d need to parent the dupe to the relevant bone instead of to the object.

If you need it the exact same, you need to clear and set the inverse. The difficulty in that is that you’re already animated around a particular inverse. You could probably write a visual keyframe, then use that to set the inverse for a child-of in an unsimplified environment. Wouldn’t recommend it, you’ll keep having problems every time you change the subdiv level (via simplify, or manually, or even just the difference in render/preview settings.) Would be much better to get your child-of from something more stable, like one of your chair’s bones.

Ah I get it now. I can’t believe I didnt realize that it would change the vertex groups.

Luckily the problem is not difficult to fix, since I would only need to alter the root’s offset. So the animation is still good.

Thanks for helping me understand!