Hi, I have a problem with invert constraint rotation, I want I rotate one bone and the second bone rotate automatically mirror, so … what I do wrong? or how to create mirror rotation constraint?
mirror_constraint.blend (330.6 KB)
Hi, I have a problem with invert constraint rotation, I want I rotate one bone and the second bone rotate automatically mirror, so … what I do wrong? or how to create mirror rotation constraint?
mirror_constraint.blend (330.6 KB)
For this you’ll need to use the Copy Transforms constraint, which gives you much more granular control
If you want a mirror, use two inverted axes only, like this:
If there’s some other relationship that you’re going after, we might be able to help more if we had a more concrete picture of your goal behavior.
Thanks “bandages”, for mirror it’s good, but now I realized I need more like “opposite direction” not mirror. Here is my project, I attach .blend file, and recorded screencast:
project.blend (389.0 KB)
What I said here still applies, you’re looking for the Copy Transform constraint
Hmm … I didn’t see in “Copy Transforms” ( Invert or Mirror ) or something like that:
I’m still not sure what you’re after. If I were to look at your video, it looks to me like you don’t want any rotation at all-- you want the upper arm weights rather than the forearm weights, for the small portion of the arm you’ve weighted to Bone.009.
“Opposite direction rotation” isn’t necessarily something that makes a lot of sense-- the closest thing to something like that would be something like axis-angle rotation, by an inverted angle. But this is probably not what you want:
Here, bone.009 has fully inverted rotation from Bone.001. Every 3D rotation can be described as a single rotation about a single axis; Bone.009 is rotated in the same axis as Bone.001, but by an opposite amount.
Sometimes, when dealing with this stuff, it can be useful to see exactly what’s happening, and why Blender thinks something like this
is rotation, inverted on 3 axes. To do that, we can make a few extra bones to see how Blender is interpreting our rotations. Because the constraint is “default” order, these will be XYZ Euler bones, and we’ll copy rotation from each of our relevant bones, then apply visual transform, and see what numbers we get:
We can see that Bone.001 has an XYZ Euler of 116,-18.2, 37; unsurprisingly, we see that bone.009, inverting all rotation, has an XYZ Euler of -116, 18.2, -37. So despite that particular orientation not striking as “opposite rotation”, it is just inverted Euler XYZ values. However-- Eulers don’t always behave how we expect. My intuitions about 3D angles were originally a bit off, and I think that’s true for most people.
Ok, let me explain my idea:
I just want to show the mesh part of the arm in another object, this object need to be without movement, (character can be in any pose, but this object in horisontal position and don’t move) and show how mesh changing in the arm part.
So … this is my idea, maybe it can be another way to do that.
It sounds to me like you’re talking about armatures with two different hierarchies. If Bone.001 doesn’t move or rotate or scale, there is no mesh deformation from Bone.001. But other bones have a different relationship with it, and they’ll rotate around it. To do this, we need a different hierarchy where we measure the rotation of bones around a base of Bone.001.
In the case of the hand, that’s no change; the hand parent, Bone.002, is already a child of Bone.001. But in the case of the upper arm, Bone (argh please start naming your bones), we need a different measure.
We can do that. First we’ll duplicate Bone, then scale -1 around its median, and parent our duplicate to Bone.001. Then we’ll have it damped track Bone. That gives us the XZ, but we still need its twist. Let’s duplicate our duplicate, move it somewhat in the direction of its +X axis, and parent this new bone to Bone. Now our first duplicate can locked track that bone, lock Y track +X, to acquire the rotation of Bone, but in a different space.
Now, let’s duplicate our armature and object, and make some changes to our duplicate. We’ll parent Bone to our new duplicate, and delete its constraints.
Then we’ll give copy rotation constraints to both this new upper arm bone and the hand parent, targeting their counterparts, but copying rotation local->local, in all three axes:
It would be best to copy all rotations to the other bones from armature to duplicate armature, but I’m not doing that here, and you don’t have to worry about a particular bone if it doesn’t matter for the mesh you’re showing.
We can see, on the right, that our forearm bone is untransformed, but our other bones are adopting the relative transform from the the armature on the left.
Now, in your case, we have an additional problem, in that you are using bendy bones, with automatic intro and outro. Because we’re changing our hierarchy, these bendy bones are no longer acting in the same way. If we want to fix this, we need to create explicit intro and outro bones and match them. This is, frankly, a pain in the butt, and I may have already demonstrated to you that this is not something you want to bother with, so I’ll give you some time to think that over, and think about how you want to approach bendy bones if this is something you want to consider exploring, rather than spending any time on the problem right now.