PDA

View Full Version : The Classic foot sliding problem in a walk cycle...


Tom N.
01-16-2004, 08:14 PM
Ok, I feel somewhat silly posting this because I've fixed this problem a thousand times and I've been a TA in a maya class and helped others fix this problem as well, BUUUT I've recently started trying a new (and better than my old) rig. Now I can't fix my foot sliding problem so I'm hoping someone can help me. Here's the details:

The new rig has a world control so that the character can turn in different directions, so of course this control has to move along with the character, so instead of grapping IKs and pulling them forward, i have to move the world control forward and then put IK's back in place. Heres the outliner view of my setup:

http://www.angelfire.com/moon/tomny/outlinerworld.jpg

Now heres a shot of my character and the world control:


http://www.angelfire.com/moon/tomny/twoframes.jpg

Heres the weird part. If I don't want the foot to slide, I should be able to just go into my graph editor for the foot control and set it so its forward/backward movement stays in the same spot during the frames that it slides, right? Well I've learned it doesn't work that way. Heres the graph of my left foots forward movement where the sliding occurs:

http://www.angelfire.com/moon/tomny/footgraph.jpg

I want it to stay in the same spot from frames 9-20, but if I put the key at the same spot at 20 as it is in 9, the leg stretches way out to a different spot (??)

And finally, heres a video of the foot slide problem, AND a link to download the scene file if anyone can help me out. I would REALLY appreciate it. I am not really new to maya or animation, but new to this rig, which I must say is a LOT better than the way I used to do it.

Scene file (right click save as) HERE (http://www.angelfire.com/moon/tomny/footslide.mb)

Movie of slide (right click save as) HERE (http://www.angelfire.com/moon/tomny/movie.avi)

tutorial that the rig is from HERE (http://www.steven-tubbrit.pwp.blueyonder.co.uk/Tutorials/Tutorial_04.htm)

Anyone know whats goin on??

-Tom N.

PS - in animation prefs under keys, my tangents are set to CLAMPED.

Quizboy
01-17-2004, 01:41 PM
Tom, this is so strange because i answered this question last night - at least to the best of my limited abilities. now i come back and there's no post in your thread...strange.

anyway to repeat: i was having a similar problem. but this was because of a mistake of my own. i have a superglobal control - like yours - that moves everything around as a unit. then under that is regular global control which moves everything but the wrist controls and the foot controls. For the most part as you're animating then, you shouldn't be touching the super global all that much. The workflow for mormal operations like walking, running and doing things should be: key the global control - this is where your character needs to be (it will leave your feet and arms dragging behind), then key the foot controls and arms.

ok so i know this now, but in this one scene i screwed up and keyed the super global for the signficant character position keys. After realizing days later what i had done i was disinclined to redo all the keys instead with the global control, but of course now it was impossible to get my feet planting in the right spots...because their controls are parented under the super, which is constantly moving.

the i-screwed-up-and-now-i-have-to-live-with-it fix is this:

create 2 cubes and place them at the respective foot controls. use insert then v-LMB drag to snap their manipulators to the ankle joints (or whereever your feet rotate from)

now parent constrain the foot controls to the cubes (which you can now rename left and rightfootcontrolbuffer) by selcting first the cube then shift-selecting the old foot control then constrain > parent. key all on both cubes at frame 1.

play your animation now and your feet get left behind by the body because they are dutifully awaiting keyframe orders from the cube control buffers. go ahead and make all the keyframes you need using the cubes and you should be happy once again. furthermore, since you only need the cubes to take over from frames 9 thru 20 you can also key the parent constraint weighting (found now under channel attributes for the old foot controls) from 0 to 1 during 9 thru 20 and as 0 on all the rest of the frames.

one additional step to make your cheat complete is to create an additional layer - the HIDEEVIDENCEOFMYSCREWUP layer, place the two cubes there and turn off the layer's visibility.

Hope this helps!

Tom N.
01-17-2004, 08:43 PM
hey quizboy - thanks for the reply. I saw the other post, I just posted it in two different forums so that more people would see it and hopefully i'd get more of a response from more people. So thats the reason for the double post. I will give your idea a try, I never thought of doing it that way before but now that I think about it it seems like the best way to do things. I'll let you know how it goes, and thanks again so much for taking the time to answer my problem

:beer:

-Tom N.

nottoshabi
01-17-2004, 09:42 PM
Tom N > There is nothing wrong with the rig. The reason your foot is sliding is cause you are moving the world control. You dont need to move the world control unless you are position him some where in the scene, other wise dont touch that. You just have to get used to using the waist to drag him around. If you want to animate with the world control then you will have to match the movement of the feet with the world control, wich is really hard and time consuming. This is strickly a animation situation not a rigging issue.

Tom N.
01-17-2004, 10:54 PM
Originally posted by nottoshabi
Tom N > There is nothing wrong with the rig. The reason your foot is sliding is cause you are moving the world control. You dont need to move the world control unless you are position him some where in the scene, other wise dont touch that. You just have to get used to using the waist to drag him around. If you want to animate with the world control then you will have to match the movement of the feet with the world control, wich is really hard and time consuming. This is strickly a animation situation not a rigging issue.

Hey, thanks for the reply as well. The problem is, if I animate him walking and say he takes a few steps, it leaves the world control behind. Then when I wanna make him change directions, I would want to rotate the world control, and now hes outside of the circle (world controller) so the pivot point is way outside his center of gravity. Is there something I'm still missing? or is that not the way it works?

-Tom N.

Tom N.
01-18-2004, 02:48 AM
Nevermind. I got it workin now, I did what you said and didn't use the world control for changing the direction of the character. I just thought thats what that control was there for, but I guess not. Thanks everyone for the replies, I appreciate the help!

-Tom N.

YankyBJeans
01-18-2004, 11:34 PM
ive had the same prob. my world control also got left behind but my professor told me that there was nothing that could be done about it. seemed a little troubling to me but oh well.

Yanky

schock
01-22-2004, 11:34 PM
Here is how you can make the global control follow the rig controls.

Two objects cannot follow eachother with constraints, but they can follow eachother relatively. For example this can be done with direct connections from control A's translation to control B's group translation. And inversely from control B's translation to control A's group translation. The controls are relatively affecting eachother which sneaks by the usual loop error by trying to connect object's translation directly. This techniuqe won't work with rotations because they are "dirty". One rotation axis channel will affect another depending on what your rotation order is so the groups will get "lost".

here is a file to demonstrate. The two locators are like your foot controls but they can be whatever in your rig. I have it set up with a simple expression to get the global control to follow the average position of the two locators and to allways stay below them.
The expression is applied to the glabol controls group. Here it is.

global_ctrl_group.translateX = (rig_left_leg_ctrl.translateX + rig_right_leg_ctrl.translateX) / 2;
global_ctrl_group.translateZ = (rig_left_leg_ctrl.translateZ + rig_right_leg_ctrl.translateZ) / 2;

if (rig_left_leg_ctrl.translateY > rig_right_leg_ctrl.translateY)
global_ctrl_group.translateY = rig_right_leg_ctrl.translateY;
else
global_ctrl_group.translateY = rig_left_leg_ctrl.translateY;

:)

Matt Schiller

CGTalk Moderation
01-17-2006, 04:00 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.