5
$\begingroup$

I had a sword object rigged with a single bone, with a ChildOf constraint making it a child of a sheath (with an influence of 1). Throughout an animation i move the sheath, and the sword bone follows as expected.

However, i cant seem to lower the influence of the sheath to zero and still have the sword retain the position it was just at, and I am wondering how i should go about making this happen.

Thanks for your time.

$\endgroup$
  • $\begingroup$ I think this is sort of a bug or issue, I noticed that too, even when you toggle off the constraint eye icon. You may consider to report here $\endgroup$ – Leon Cheung Feb 11 '15 at 9:34
  • 1
    $\begingroup$ @Leon Cheung As far as I am aware this is just standard behaviour for objects that are constrained. $\endgroup$ – Ray Mairlot Feb 11 '15 at 11:07
  • $\begingroup$ @RayMairlot You mean a constraint can still take effect even if being disabled? $\endgroup$ – Leon Cheung Feb 11 '15 at 12:37
  • $\begingroup$ @LeonCheung I meant that it is standard that turning a constraint's influence to zero returns the object to it's pre-constrained position. If if a constraint is turned off and it still affects the object, then yes, it may be a bug or a refresh issue due to depsgraph limitations. $\endgroup$ – Ray Mairlot Feb 11 '15 at 13:25
5
$\begingroup$

The trick to unparenting is to animate the constraint and the objects location. On one frame you keyframe the objects location using Insert visual locrotscale, the visual keying options will keyframe values after modifiers and constraints are applied. You also key the constraint influence as 1.0 on this frame. Then move one frame and keyframe the childof influence as 0.0.

After you keyframe the visual location and change the constraint to 0.0 the object will snap back to it's original position. Once you keyframe the influence go back a frame and it will go back to where the keyframes put it.

You may also have two constraints, one parenting to the sheath and another parenting to the hand. You just have one at 0.0 influence and the other at 1.0 influence on one frame and swap them around the next frame.

enter image description here

Sample blend

$\endgroup$
3
$\begingroup$

For dynamic parenting use the Dynamic Parent addon. It does what you want well and fast.

Basically you need to keyframe your sword transforms, but this addon will do this for you.

$\endgroup$
1
$\begingroup$

I would do it this way:

  • Parent the child with a Child Of constraint (here sphere parented to cube), click on the Set Inverse button so that your object stay at its current position.

enter image description here

  • Move the parent (here from frame 0 to 20).

enter image description here

  • The frame before the dropping is supposed to happen, let say frame 9, select the child and i > create a LocRotScale keyframe.

enter image description here

  • Also, at the same frame, i > create a keyframe on the Child Of constraint Influence, with its factor at 1.

enter image description here

  • The frame where the dropping is supposed to happen, here frame 10, select the child and this time i > create a Visual LocRotScale keyframe.

enter image description here

  • For the Child Of constraint, set the Influence factor at 0 and i > create a keyframe. It should work.

enter image description here

$\endgroup$
0
$\begingroup$

I wrote a little add-on for this, to help a colleague at the Blender Institute with this exact issue (disabling a constraint without moving the constrained object). It's at my Random Blender Add-ons repository. It also has operators for copying and pasting matrices (in world coordinates).

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.