So, when I have an object that is a child of another object using the Child-Of constraint, there is this thing that I don't entirely understand: inverse. The little button that says "set inverse" and "clear inverse," they aren't at all self explanatory. So my biggest question is, when I have a character that is holding an object, and I want to set the object down on a table for instance, how do I break the constraint (via "influence" parameter) and have the object with the constraint stay in the exact same position? Touch the influence parameter and it goes to some irrelevant location nearby. That's not very useful, is it. This inverse thing appears to screw a lot of things up.
If you use set inverse:
- the object get parented as it is
- the child won't be affected by the initial transformation of the parent
If you use clear inverse:
- the parent transformations get cleared (momentarily)
- the object get parented
- the transformation of the parent get is restored (as if you have parented then transformed the parent which will effect the child)
all this is just setting the matrix that relates the child to the world space
To keep the object transformation inherited from the parent, apply the visual transformation and set the influence to 0 (or remove the constraint).
Example: two cubes one at the center (will be used as parent)
initial state: (no constraints yet )
the parent transformed: (no constraints yet) the cube moved scaled and rotated
after this we add the child of constraint to the smaller cube
child of constraint with set inverse: child is not affected by the parent initial transformation
child of constraint with clear inverse: child is affected by the parent initial transformation