4
$\begingroup$

I am rigging an arm to follow a bone using copy transform. It does work as I want, but when I apply the constraint it randomly rotates. I can rotate it back but it takes a long time because I need it to be precise.

So I am wondering if it's possible to add the copy transform constraint without changing the current position?

enter image description here enter image description here

$\endgroup$
  • $\begingroup$ I have looked at your images by following the URL. They do not help me greatly to understand, because they are low contrast. A high contrast image, with more colors, may help. Showing more of the modifier properties and names might help. I am suggesting that you explain more of the animation you want to help others to understand. For example ... hypothetical.... I want the hand to pick up a coin and set it in a different location. $\endgroup$ – atomicbezierslinger Jun 4 '15 at 5:48
  • $\begingroup$ Have you applied rotations? (Ctrl+A > Scale) $\endgroup$ – VRM Jun 4 '15 at 11:30
  • $\begingroup$ Pls clarify the question as it doesn't make much sense to me. 1. There is no option to "Apply" constraints. Did you mean "Remove" or did you actually somehow apply it (by copying transform matrix)? 2. By not changing the current position do you mean to copy only the local transforms (the change)? If so change the space to Local or use the Transformation constraint instead. $\endgroup$ – Jaroslav Jerryno Novotny Aug 3 '15 at 8:20
1
$\begingroup$

You need to keep your rig clean when you build it. This means transforms should be zeroed out before working on them, especially with constraints. You can clear transforms by pressing AltG, AltR, and AltS to clear translation, rotation and scale, respectively.

(1) After your transforms are clean, you can add constraints. I always recommend using local space for copying transforms, unless you have a very specific reason for using any other space.

(2) Alternatively, you can also use a combination of copy location, rotation and scale constraints to achieve the same effect. This also allows more minute control over the constrained object. Again, I suggest using local space for each transform space to keep it predictable.

(3) Yet another option is to use the child-of constraint, which essentially makes the constrained bone behave as a child. This constraint offers you the option to set an offset like you're asking about (set inverse). With this constraint, I recommend creating the two bones exactly on top of each other, meaning they originate from the same point. They will have the same pivot points, so scaling and rotation behave predictably.

(4) Copy transforms constraint is good to use if you have bones right on top of each other (ie a bone chain with a duplicate chain controlling it). This is just because it's a very simplified constraint. The transformation constraint is a decent replacement for drivers, in such a case where python execution is disabled. Child-of is a good way to get parent-like hierarchy behavior while keeping bone hierarchies separate.

(5) Make some simple bone chains and play with each type of constraint to see which fits your needs. If you absolutely need to keep transforms on the bone in question, then use the combination of constraints in (3) and enable the offset option. This takes the bone's transforms into account at constraint creation.

$\endgroup$
0
$\begingroup$
  • Consider setting keyframes on the influence. 0.0 influence on the start frame and 1.0 influence on another frame as suits your goal.

  • Keep in mind the last constraint with influence 1.0 may replace all other constraints. This may or may not suit you.

  • Consider if world space to world space is suited to your task.

  • Verify there are no cyclic dependencies in your targets. For example it might [not] be desirable to have the left arm constrained to the left thumb. Example hypothetical follows. The left eye bone and right eye bone tracked to a [empty] would probably have no cyclic dependencies.

  • Consider an IK Constraint (Inverse Kinematics)

$\endgroup$
0
$\begingroup$

If it is rotating oddly, have you tried recalculating the bone roll?

I have encountered some similar problems before which I solved by doing the following;

I set my view in orthogonal and pick a standard view for every time I do this - for example, "right" view.

Then I select my deform armature (which the model is parented to) and then select all the bones in edit mode. I then click on armature > bone roll > recalculate bone roll > view axis.

I then go back to my control bone (or control armature) and do the same, in the same view.

I have found that this has worked for all of the occasions when I've had trouble with bones rotating randomly after applying "copy transform" constraint.

Also, have you tried changing the copy transform constraint from "world space" to "local space" - just a thought as well for something to try.

I hope this helps!

$\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.