Right Arm Twisting Issues

8 views
Skip to first unread message

Courtenay Cooper

unread,
May 15, 2013, 4:50:08 AM5/15/13
to AnimatorFri...@googlegroups.com
Hey Guys,

I was hoping someone could help me out here. So after trawling through this group countless times, I can't find the answer I'm looking for here so it's time to ask it myself and hope that someone is smarter than me.

I'm creating my right arm, and as everyone has noticed, the arm flips when you create the stretchy ik. I read that I needed to inverse by putting two multiply divide nodes between the distance and the world scale, which I've done, and it sorta fixed the issue... however whenever I turn the stretch on, the ik shoulder joint flips 180 degrees in rotate X and so the geometry from the twisty segment flips out.

I read in the AFR fixes where Jason said this:
As a little test, I built a new scene, with only 2 joint system, 1 I built and another mirrored.
Now I set a stretchy IK system on the mirrored one and without even moving the elbow, just turning 
elbow lock on, the rotations shifted from 0 0 0 to both up and low arm.
up_arm - 0 0 180
low_arm - 0 -180 0
But he doesn't seem to have worked out a solution, and I can't find any info on this. Does anyone have any ideas?

Cheers
Courtenay

Joe Weidenbach

unread,
May 16, 2013, 3:37:01 PM5/16/13
to AnimatorFri...@googlegroups.com
Hey Courtenay,

What's going on here is that in a properly mirrored arm setup, the x-axis is flipped;  The X Translation on the arm joints is negative instead of positive.  So, using the positive values for stretch will indeed flip the arms when used in conjunction with the point constraints.

The easy solution to this is to go into the driven key curves, and flip them vertically--that is, put the keys at negative 1 up to the distance, then have them scale downwards as the distance grows.

I know, that's probably not worded the best, but hopefully it makes sense.  If not, let me know and I can try to clarify.

Joe
--
You received this message because you are subscribed to the Google Groups "Animator Friendly Rigging Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to AnimatorFriendlyR...@googlegroups.com.
To post to this group, send email to AnimatorFri...@googlegroups.com.
Visit this group at http://groups.google.com/group/AnimatorFriendlyRigging?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Joe Weidenbach

unread,
May 16, 2013, 3:41:21 PM5/16/13
to AnimatorFri...@googlegroups.com
Also, you could put a multiplyDivide node to multiply the output of the current curve by negative 1 between the curves and your joints.  That would have the same result.


On 5/15/2013 1:50 AM, Courtenay Cooper wrote:

Matteo Di Lena

unread,
May 16, 2013, 6:08:33 PM5/16/13
to AnimatorFri...@googlegroups.com

The best solution I found to all mirroring problems (with this setup) is to apply a multiply divide node beetween all_anim and the "toElbow" and "toEnd" worldScale. You need, as Joe said, to input negative values, as your right arm is mirrored in the X axis, so you simply input the scale value of your all_anim in a new multiply divide, and multiply it by -1. Then you connect this new output into the input 2X of "*_toElbowDist_worldScale" node; do it again for the "*_toEndDist_worldScale" and your arm will be fixed, no twisting and stretching errors.
It's complicated to explain, but really easy to do. I post you an example image from node editor :)





Courtenay Cooper

unread,
May 16, 2013, 10:30:30 PM5/16/13
to AnimatorFri...@googlegroups.com
Ok sorry Matteo, turns out I was putting the multiply divide node into input 1X which was overriding the distance node. So now that's in place. And for a second there I thought it was fixed, but when I translate the elbow ctrl past 0 in translateZ, it flips again. I'll attach a picture to prove I'm not crazy (I also attached geo to the twisty segment so you could see the effect), and I also included a picture of my hypergraph so that you can make sure I have it set up properly (I used two md nodes instead of one like you did)

Thanks again
Courtenay
screen_01.jpg
screen_02.jpg

Courtenay Cooper

unread,
May 20, 2013, 10:55:59 PM5/20/13
to AnimatorFri...@googlegroups.com
Hey Joe,

I sent a reply to you but for whatever reason it's not here anymore :/ Anyway, I was wondering if your approach would have a different effect to Matteo's? I understood what you said, but I'm not 100% sure where I'm supposed to be looking for the curve to add the multiply divide node. If you could run me through that process I would really appreciate it - and if it is in fact the same as Matteo's, do you have any other ideas to fix the issue?

Thanks so much,
Courtenay


On Friday, 17 May 2013 05:41:21 UTC+10, Joe Weidenbach wrote:
Also, you could put a multiplyDivide node to multiply the output of the current curve by negative 1 between the curves and your joints.  That would have the same result.

On 5/15/2013 1:50 AM, Courtenay Cooper wrote:
Hey Guys,

I was hoping someone could help me out here. So after trawling through this group countless times, I can't find the answer I'm looking for here so it's time to ask it myself and hope that someone is smarter than me.

I'm creating my right arm, and as everyone has noticed, the arm flips when you create the stretchy ik. I read that I needed to inverse by putting two multiply divide nodes between the distance and the world scale, which I've done, and it sorta fixed the issue... however whenever I turn the stretch on, the ik shoulder joint flips 180 degrees in rotate X and so the geometry from the twisty segment flips out.

I read in the AFR fixes where Jason said this:
As a little test, I built a new scene, with only 2 joint system, 1 I built and another mirrored.
Now I set a stretchy IK system on the mirrored one and without even moving the elbow, just turning 
elbow lock on, the rotations shifted from 0 0 0 to both up and low arm.
up_arm - 0 0 180
low_arm - 0 -180 0
But he doesn't seem to have worked out a solution, and I can't find any info on this. Does anyone have any ideas?

Cheers
Courtenay
--
You received this message because you are subscribed to the Google Groups "Animator Friendly Rigging Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to AnimatorFriendlyRigging+unsub...@googlegroups.com.

Joe Weidenbach

unread,
May 21, 2013, 1:37:16 AM5/21/13
to AnimatorFri...@googlegroups.com
Hi Courtenay,

Sorry if I missed your request :).  Matteo's solution sounds like it does exactly what you want--in this field, there's usually about a thousand "right" ways to do something, give or take :).  I personally have a different stretchy solution than Jason's that I use at this point, but the mirroring issue is the same.  In the AFR method, you create the driven key curve with js_setDrivenKeyLength.mel after the first run-through, so it's a little bit under the hood.

Animation Curves are hidden in the outliner by default, but one way you can find them is to (in the outliner) go to Display->DAG objects only and uncheck it.  Now ALL of your nodes in the scene will be listed.  It's not pretty and DEFINITELY not recommended that you leave this option unchecked (Maya saves the state of the outliner in the scene file, so it will be VERY confusing for animators if you do this, as you can't organize non-DAG nodes easily), but I use this regularly when I'm working on a rig to see that my scripts are naming everything properly.

Perhaps the easier way is to select your joint (elbow and wrist), and then go to "Window->Hypergraph Connections."  This will show the nodes that are selected and the objects connected to them, and you should find some animation curves to select once the driven keys are set. Once the curves are selected, you can open your graph editor and make the adjustments.

Like I said, lots of different ways to do it, but as long as it works that's what matters.  The only advantage of editing the curve versus adding the MultiplyDivide node is that you skip a multiply operation by directly changing the curve, which will give a tiny speed boost to interaction--but by tiny, I really mean almost non-noticeable, if even that--multiplys are dirt cheap for computer processors.  Unless you've got a REALLY complex rig, you're probably not going to need that level of refinement.  With that said, if you're scripting it out, it's not that much work to put a negative value on the right side :).

Let me know if I can help further, I can probably make a quick screen cast for you if you need clarification.

Thanks,

Joe
To unsubscribe from this group and stop receiving emails from it, send an email to AnimatorFriendlyR...@googlegroups.com.

Matteo Di Lena

unread,
May 21, 2013, 3:54:20 AM5/21/13
to AnimatorFri...@googlegroups.com
Hey Courtenay,
I think I got it, you're asking why your arm flips when you move the elbow controller in front of the elbow joint, right? Well, if it's this you're asking about, I won't call this an issue. That happens on the left arm too, the elbow controller usually stays behind the elbow joint, if you move in front of it the pole vector will flip, I think there's a part of Jason's videos where you see this happening :)

Maybe I misunderstood it again, let me know :)
--
Matteo Di Lena

Phone: +39 329 18 83 439

薛亚辉

unread,
May 21, 2013, 11:07:29 AM5/21/13
to AnimatorFri...@googlegroups.com
whether the axis orientation is right or not

Courtenay Cooper

unread,
May 22, 2013, 11:25:17 PM5/22/13
to AnimatorFri...@googlegroups.com
Ahh! I finally understand now! I can't believe I spent so much time worrying about something that wasn't even really a problem haha. Ok, thank you Matteo for explaining it to me, and thanks Joe for helping me out with viewing the curves (I had no idea you could do that and will definitely be using it in the future).

Cheers
Courtenay
To unsubscribe from this group and stop receiving emails from it, send an email to AnimatorFriendlyRigging+unsubscr...@googlegroups.com.

To post to this group, send email to AnimatorFri...@googlegroups.com.
Visit this group at http://groups.google.com/group/AnimatorFriendlyRigging?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 
--
You received this message because you are subscribed to the Google Groups "Animator Friendly Rigging Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to AnimatorFriendlyRigging+unsub...@googlegroups.com.
To post to this group, send email to AnimatorFri...@googlegroups.com.
Visit this group at http://groups.google.com/group/AnimatorFriendlyRigging?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
You received this message because you are subscribed to the Google Groups "Animator Friendly Rigging Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to AnimatorFriendlyRigging+unsub...@googlegroups.com.
To post to this group, send email to AnimatorFri...@googlegroups.com.
Visit this group at http://groups.google.com/group/AnimatorFriendlyRigging?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--

Joe Weidenbach

unread,
May 23, 2013, 1:32:11 AM5/23/13
to AnimatorFri...@googlegroups.com
I'm glad it was so simple :)  I totally misunderstood too! LOL!
To unsubscribe from this group and stop receiving emails from it, send an email to AnimatorFriendlyR...@googlegroups.com.

Joe Weidenbach

unread,
May 23, 2013, 1:35:11 AM5/23/13
to AnimatorFri...@googlegroups.com
Also, on that note, the behavior you're describing is exactly how it's supposed to work--The elbow controller handles the overall rotation of the arm plane, so when you move it in front it's like rotating your arm upside down from the shoulder.

So, not a bug at all :).

William Hamilton

unread,
Feb 22, 2015, 12:21:47 AM2/22/15
to AnimatorFri...@googlegroups.com
Hi everyone,

I've run into the same issue now that Courtenay was having earlier, I've looked at the solutions given in this thread but unfortunately while I somewhat understand the problem (mirrored arm joints have negative translate x values and you need a way to correct for that), I haven't been able to solve the problem. I'd really love to get this working and so if anyone is willing to help out, some things that would really help clear things up for me would be...

- A maya file of a working mirrored arm rig so I can compare what I've done to something that works and see where I went wrong

- Joe you had mentioned earlier in a reply to Courtenay that you could make a screen cast showing how to set this up. Is this something you would still be willing to do? The part I'm having trouble with is finding the curves that I need to flip the values vertically. I read the part "Perhaps the easier way is to select your joint (elbow and wrist), and then go to "Window>Hypergraph Connections." but I must be selecting the wrong joints or something (r_low_arm_joint, r_hand_joint) because the curves I found and manipulated don't correct the problem.

- Matteo, I tried your method but wasn't able to get it to work. I made a youtube video of me setting it up but I must be doing something wrong here also. If you have time would you mind checking it out and seeing if I messed up somewhere? https://www.youtube.com/watch?v=oZ3xUho5PI8&feature=youtu.be

- If someone knows how to do this and would be willing to walk me through it via skype or some similar program that would work well also if that's more convenient. If I get the problem solved this way I'll post a video showing the solution here for other people who may have run into the same issue

Thanks!

William Hamilton

unread,
Feb 22, 2015, 6:17:56 PM2/22/15
to AnimatorFri...@googlegroups.com
Hey guys,

So I think I've managed to solve the problem, everything seems to be working correctly now. I made a video showing what I did in case it helps someone else needs help. https://www.youtube.com/watch?v=JaSV5QDIRz8&feature=youtu.be Thanks so much again for the advice in this thread, I was really having problems with this but the advice here really helped point me in the right direction.


On Wednesday, May 15, 2013 at 1:50:08 AM UTC-7, Courtenay Cooper wrote:
Reply all
Reply to author
Forward
0 new messages