View Full Version : Weird (constraint?) effect wanted.

04 April 2011, 05:20 PM
Hi guys. Me again.
I am trying to make the following in max:
I want an A object driving both the pos and the orientation of a B object in a very particular way:
1-The starting circumstances are they both having the same pos and orientation.
2-A drives the pos and orientation of B exactly as if B had a position constraint and a orientation constraint depending on A, except for one litle thing:
3-The rotation around the local Z axis of B is not affected as A spins around its own local Z axis.

That means that A is free to spin on its Z and that will have no effect on B. Then, the two objects' local Zs will always be aligned, but the X and Y may not.

Spent the whole night trying this out. Tried hierarchies and constraints. No success so far.

04 April 2011, 07:36 PM
Create object dummy C and parent both object under it. U will have control over A Z rotation without affecting B Z rotation. other rotations and pos will be controlled by DummyC
Or go to LinkInfo and uncheck inherit Z for B in Your setup
Or wire X Y rotation parameters but no Z.
All 3 approachs will give You different ressults. But it depends what U want.

04 April 2011, 09:49 PM
2 questions:

1. Does A have a parent space?
2. If i rotate A 90 on X and then 90 on Y, what should happen to the Z axis of B?

04 April 2011, 05:17 PM
Answering Stefan:
The C dummy option is cool. But I forgot to tell that in my case, A is part of an existing hierarchy, and all I want to do is prevent the spining to be transferred from A to the following chain of the hierarchi (that happens to start with B). Sorry I did not tell that before.
Unchecking Y inheritance on Link Info was what I tried first. It did not do the trick, as what is preserved seems to be a Z axis according to the world orientation, and I want to preserve my local Z axis instead.
The wiring parameters alternative... looks like it will do. I will try it right away and tell you what happens. Thanks indeed for your attention!

Answering eek:
1-Yes, as I told Stefan
2-...remains aligned to A's Z all the time. They even coincide. Does this answer your question? Sorry if I misunderstood. I very curious to know what you get out of this. :D

To be more explicit, what I am trying out is a experiment. I am always trying new way to control my rigs. After that I play with them and see if they result comfortable. Sometimes I succeed, some other times I do not.
This time it is me trying to make a custom control for a spine I have rigged using SplineIK. On the upper end of the spine, I have placed a rectangle (planar with XY) that coincides with the last bone of the SIK chain. I have wired its Z rotation to the Twist End Angle so as I rotate the rectangle around its Z the spine twists accordingly. But I want this rectangle to be driven by the last bone of the spine, so it is always around the shoulders of my character, no matter what pose it has. But if I just make the rectangle (my A in this case) son of the final spine bone (B), I get an over rotation on Z as I rotate it, for it is also inheriting the bone Z spinning. And I thought it would be cool if it would be possible for the bone to freely spin under.
Of course, my issue is easily solved by adjusting the wiring between the rectangle and the Twist End by a *0.5 factor (am I wrong?), and even if that was not the solution, I could live with the over-rotating rectangle... But gave me the curiosity on how to achieve the non-transferring spin effect, just in case I need it in the future.
Any idea is welcomed.

04 April 2011, 03:19 PM
So from my understand you want a hierarchy of joints, where the child joint rotates the parent joint without double of the transform in one axis. - correct?

Why my question 2:
Well if you rotate your wrist down 90 'x', and then additionally to the side 90 'y' - you've actually rotated your wrist on 'z' by 90. Its achieving the same result as just twisting your wrist. I.e two axel changes affect the third, because there order of operation is accumulative.

This 'twist' of the radius/ulna - in a math mathematical sense is really a drivers space relative to an angle-Axis, which in turn is controlled by that driver relative to it's and the angle-Axis' parent space.

In laymen terms, our wrist dictates the 'direction' of a spin, its muscles are relative to and which propagate the difference to the ulna/radius' muscles.

Whatever the wrist is doing, it gets all of its twist from its parent space. What we do is basically get the rotation of the wrist, and find what part of it is the spin/twist via an angle-axis and propagate 'this' difference to twist joints.

I'd look up angle-axis and parent space math to get a better understanding - kinda tricky to describe this.

04 April 2011, 08:18 PM
Thanks, eek!
Hey, my question on this thread was not for rigging a wrist, but this explanation from you worth a reputation up! Now I have a clearer idea about some things... thanks to you. Hail eek!:bounce:

04 April 2011, 07:32 AM
You could layer another rotation controller on your rectangle - wired to the active controller beneath it with a factor of negative 1.

Good luck...

CGTalk Moderation
04 April 2011, 07:32 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.