I have a character that picks up an object using the Child Of Constraint, turns and then releases the object at an Empty using the Copy Location Constraint. When the Copy Location is enabled the object rotates. I'm trying to keep the object at the same orientation as when the character releases the object. Thank you for any help on this.
3 Answers
So let me make sure I understand what's happening: through frame 100 (ish, can't see really well) you're using a child-of constraint, then at frame 101 you set the influence to 0 of the child-of, and set the influence of the copy location constraint to 1.0?
It's not the copy location constraint that is rotating the object. It's the fact that the object is no longer under the influence of the child-of constraint. At frame 100, that child of constraint is creating rotation on the object, inherited from the target of the child of. At frame 101, that constraint becomes inactive, and it loses that rotation all at once.
How to fix? If you haven't already, start by keyframing rotation for the object on frame 100. Then, go to frame 101. Set the influence of the child-of constraint to 1.0. In the 3D window, apply visual transform (from ctrl-a menu for me) and keyframe rotation. The object will jump momentarily; don't worry about it. Then set the influence of the child-of constraint back to 0.0. The object will have the same rotation it would have as if it were a child-of, but without needing the child-of to get it.
-
$\begingroup$ I'm no expert in this area.. is it more typical / expected, to hand over from one child-of to another child-of? $\endgroup$– Robin Betts ♦Commented Feb 26, 2021 at 21:00
-
1$\begingroup$ @Robin Betts I wouldn't say more typical, although yes, you can do that. Copy transforms (and others) can be useful, because they actually can interpolate properly through the 0-1 influence over multiple frames, whereas a child-of basically never will, so there are reasons to use different kinds of constraints. $\endgroup$– NathanCommented Feb 26, 2021 at 21:02
-
$\begingroup$ Ahhh! Thanks! Exactly what I needed, a reason to do one rather than the other. $\endgroup$– Robin Betts ♦Commented Feb 26, 2021 at 21:11
-
$\begingroup$ @Nathan - Thank you for the explanation. That makes more sense. I followed your fix and got the animation to work properly for the release at the end, but now when the object is unconstrained at the beginning of the animation (frames 0-15) my object is not in the pickup position anymore. It's in the release position until the Child Of is enabled at frame 16. Then the animation works great. Not sure where I went wrong. $\endgroup$– HunchboxCommented Feb 26, 2021 at 21:24
Quite simply, the copy location constraint does not copy the rotation of the person. I would recommend using the child of constraint instead.
-
$\begingroup$ I actually am using the Child Of Constraint and then releasing it when the character arrives in its final position. The object does rotate correctly with the character, but when I release the Child Of and use the Copy Location (of the Empty) Constraint to keep the object in its place, I get a shift in its rotation. $\endgroup$– HunchboxCommented Feb 26, 2021 at 20:00
In the end the best solution for my situation was to add a Copy Rotation Constraint to my object in addition to the Copy Location Constraint and then I rotated my target Empty to match my object's intended resting orientation.