PDA

View Full Version : Neck rigging for smooth rotation (issue)


mswertfager
04-26-2010, 11:23 PM
To add smooth bending of the neck, I added an additional joint in the neck to rotate at 50% of the head joint rotation (using expressions). It worked great moving the joint head joint directly, allowing the neck to bend and twist smoothly and naturally at 50% of the head joint movement..

But once the head joint is constrained (orient constraint) by a control curve, it breaks. At which point either the expressions stop all together or the head rotation pops to odd angles when using the control curve.


http://www.thetell-taleheart.com/images/spt/HeadRigging_Issue.jpg
#1) Control Curve has a Orient Constraint controlling joint Head_DSkel
#2) Neck_D_Skel2 joint suppose to rotate at 50% to that of the head joint Head_DSkel using this code.
Neck_DSkel2.rotateX=Head_DSkel.rotateX/2;
Neck_DSkel2.rotateY=Head_DSkel.rotateY/2;
Neck_DSkel2.rotateZ=Head_DSkel.rotateZ/2;

I used this same structure with wrist/radius rotations (E.G. George Maestri's video tutorial). The only difference I can see is that the head joint orientation is not the same as the local control curve orientation. However, I would have thought the Maintain Offset in the contrain would solve that. Any thoughts?

-Michael

tpalamar
04-27-2010, 03:03 PM
If I understand correctly the joints rotate values are constrained to the control curve. If this is true, then it will override the expression, breaking it. You cant have two connections (expression and constraint) attached to the same attribute. Is this right?

mswertfager
04-27-2010, 04:28 PM
Hi Todd.
Thanks for the reply. I wish that was it.
But, the expressions are for Neck_DSkel while the constraint is on Head_DSkel. The expressions were added into the X rotation field of the Neck_DSkel.

-Michael

Darksuit
04-27-2010, 06:30 PM
There really is not need for an expression to achieve the effect you are going for. You are better off using nodes to achieve the effect.

Use a parent constraint (rotate only).

If I were to set this up with nodes... I would

Create a rotation control parent contstaint (rotation only) to the Neck so that it is 100%
Create a null (empty group) and use that as the controller for the Head, Making sure that it is zeroed out once in place.

Using a multiply divide node. Feed the Rotation vales of the Neck control into the MD node then set to multiply by 0.5 then set the output to the heand control. This moves the head by 50% of the neck and gives you a smooth transition.

mswertfager
04-28-2010, 07:28 PM
Darksuit, TY...While, I didn't implement your approach. It gave me an idea, now that I am focus on node based calcs.

(basically I can use double transform to my advantage)
- set the head controller to orient constrain the neck joint (neck_DSkel) [pivot centered to the neck]
- in Hypergraph set the rotate of head to equal that of the neck (neck_DSkel (rotate) --> Head_DSkel (rotate))

As the neck rotates the head is double transform on the rotation moving it 2X. Looks to be working great.

Since this is a new approach for me, anyone have any warnings I should be aware of?

CGTalk Moderation
04-28-2010, 07:29 PM
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.