If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

Cartoon Girl Shelly [extended walk]

Back in August of last year, Shadosk started a thread on a cartoon girl he was modeling in Blender. He posted the blend file on BlendSwap in February of this year, and has updated that a few times. It is a very cute character, and I thought it was a shame that no one seems to be animating her, even though she's been downloaded over 10,000 times.

So I thought I'd take a shot at it.

This is Shelly. She didn't have a name, so I am calling her Shelly as a working title. She looks like a 'Shelly' to me. Now I am going to teach Shelly how to walk.

First I cleared rotations, locations and scale from Shelly's pose, getting back to the rest position. The rig is centered on the global origin.

Shelly's platform heels, in rest position, extended below the xy grid by almost an inch, so I went into edit mode and shortened them so she stood exactly on the grid. Not quite as stylish, perhaps, but easier for her to keep her balance.

Richard Williams, in The Animator's Survival Kit, explains a simple way to build a walk, starting with three drawings, or, in Blender, three poses. The first two are contact positions.

Now, I don't want to move the root. Moving the root makes it very difficult to make a walk cycle without the feet slipping on the ground.

I want to use Feet IK to make the feet stay where I plant them, while moving the rest of the character. In pose mode, I start grabbing bones and moving them to see what happens.

(notice her WTF expression? This character is such fun to work with)

It turns out the Torso bone is the one I want. Moving the torso moves everything except the feet... and the hands. The hands are also set up as IK. I decide to turn off IK on the hands so they will move along with the rest of the body. The Hand IKFK switch is in the Custom Properties panel of the Bone Properties panel, with the hand selected in Pose Mode. Setting the slider to 0,000 sets the hand to FK, which is where I want it for now. Shelly has two rigs: rig and rig.001. Not sure why. I am posing rig.

I set up the first contact pose, I move the torso down a bit and forward, bending both legs. Then I move the left foot forward and adjust rotation so the boot heel is the lowest point. I adjust the left foot in the z axis so the boot heel is just touching the floor. I rotate the right foot to get the boot heel off the ground, I adjust the rotation of the boot toe so the boot sole is almost flat (not quite, this foot is about to lift from the floor, but she shouldn't look like she is standing on her toes) and adjust the right foot in the z axis so the boot sole is just touching the floor. In front view, I move both feet toward the center, placing the inside edge of her boots just at the centerline. Williams says this is how women walk, and Shelly, even though she is still a teenager, is practicing for when she will become a woman. I will give her a stomping around walk later. Finally I move the torso up along the z axis to straighten her legs.

I select the torso, hand_ik.R and L, foot_ik.R and L, and toe.R and L, and Insert a Keyframe at frame 1 for those bones.

Once the first contact pose is settled, I copy and mirror paste it back onto the rig. I switch to frame 17 (I am building a 16 frame walk cycle, a leisurely, strolling step) and insert another keyframe.

Now I have to adjust Shelly's position in 3D space. Simply reversing the pose has her marching in place, with her feet sliding past each other on the floor. That's not walking. I add a marker object (a cube, scaled way down and then scaled up a bit along z to make a stick, and place the stick at the back of her forward foot's heel. Then I select the torso, the hands and feet and toe bones, and move them along the y axis until the back heel looks like it is in the same place. Since the back foot is rotated and the heel is above the floor plane, I do this by eye

Matching Shelly's trailing foot to the marker stick

With the two contact poses set and working fairly well, I added another sixteen frames to the walk to get a complete cycle. Even with just those two poses, Shelly has a rudimentary walk. She looks like she is balancing some invisible books on her head, but it is a start.

Do the whole walk at once, not in parts.
Look up the anatomy of a walk cycle (contact - down - passing - up - contact)
It can be easier to see your poses if you animate with constant interpolation on your first pass.
Lastly, don't forget the hips!

@Hammers: I keep moving the 3D cursor by hitting the wrong mouse button. I've used the cursor before as a marker, but had to constantly reposition it when I accidentally LMB'd. Adding a marker stick is much more stable for me.
@freen: I want to see how well Richard Williams' layered approach outlined in The Animator's Survival Guide works in Blender. And trust me, I won't forget the hips when working on a model with such a cute butt.

Now I add two passing poses, which are poses where the non-weight bearing foot moves past the weight bearing foot, when seen from the side, about half way through the pace. Since I am using a 16 frame step, the passing poses will be on frames 9 and 25.

This is Blender's interpolated 'passing pose.' With the torso and feet basically just moving in the y direction, it looks like Shelly is crouching a bit in between contact poses. On frame 9, Shelly's left foot is weight bearing, so I plant it firmly on the floor. This involves straigtening out the toe rotation interpolated into the toe bone, straightening out the foot rotation, and moving the foot down to the floor. I use my marker stick to mark the location behind the left foot in frame 1, and place the left foot on the mark. Once the foot is planted, I move her torso up and forward over her weight bearing foot. I leave a little bend in the left leg so the walk doesn't look too stiff. I also rotate her torso a bit so she leans into the walk.

I set up the second passing pose by copying frame nine and mirror pasting it on frame 25, then sliding the whole rig forward to match the mark set on her trailing foot from frame 17.

Once I insert keys for the two passing poses, I use Blender's Motion Path tool to take a look at what her head is doing while she walks.
The dotted line shows the tail of her head bone during the walk cycle. I notice it is a fairly subtle curve, so this probably won't end up being a 'cartoony' walk, but a more realistic one.

@freen: I want to see how well Richard Williams' layered approach outlined in The Animator's Survival Guide works in Blender. And trust me, I won't forget the hips when working on a model with such a cute butt.

You forgot the hips.

Seriously though, if you insist on approaching this using a layered workflow (and while I understand you wish to experiment, I would very much back Freen up and gently suggest pose-to-pose may be a better introduction) then I would highly recommend you begin with the hips, not the head, and work out. Starting with the head and working back will make an already difficult task even more so.

Think about chains, in this particular case the head will be at the end of the chain, so it makes much more sense to begin with the hips (the base) and work up.

I also did not start with the head, I simply used the head bone to create the Motion Path visualization. It wouldn't have mattered if I had used any bone in the chain above the torso, they would have all made the same motion path. I used the head bone because it is easier to visualize what the head is doing during the walk when the motion path comes from the head.

The reason I didn't begin with the hips is because in this particular rig, the hips are not the base... the torso bone is the base. I alluded to that in my first post, but didn't spell it out. Sorry for the confusion. The only posed and keyed bones at this point are the torso, the feet and the toes. Everything else is just along for the ride.

I added a low and high pose to Shelly's walk. The low position is after the contact position affecting the weight bearing foot, when that leg actually takes the weight of the character and bends. This pose adds the illusion of weight to our girl, but she is pretty light and spry, so her 'low' position won't really be all that low during her normal walk.

I put the low position on frame 5, half way between the contact and the passing pose. I adjusted the toe to remove interpolated rotation and to flatten the boot sole, and adjust the foot_ik to plant the foot flat on the ground with her heel touching the marker. Using shift to fine tune grab movements comes in handy.

Since her right foot is now off the ground, I straighten out the toe rotation to flatten that boot sole as well. That toe should stay flat until she starts pushing off the ground in the high position. When ever her boot is in the air, the sole should be flat.

Since I already moved Shelly's torso over her weight bearing foot in the passing pose, here I will move it forward, but not completely over her foot. I also move her torso down to get her leg to bend under her weight. After I insert keys on frame 5, I move to frame 13, the first high pose. I rotate her left toe and adjust the position of her foot to match the marker... interpolation moved the sole of her boot under the floor a bit. Then I lift her torso to straighten her left leg. It does not seem like she is pushing off enough, so I rotate her left foot to push her toe beneath the floor, then raise her left foot back to floor level and adjust the heel to match the marker again. Looks better. I raise the torso a bit more. I move on to her right foot, rotate it so she is leading a bit with her heel, and move her foot up a bit. I insert keys on frame 13 and scroll through the first step to see how it looks.

I thought it looked pretty good, so I added the up and down poses on the second half of the cycle, using copy and mirror paste, and using the marker to position her feet. Then I ran another Motion Path for her head bone.

So I went back to the down pose and moved her torso down a bit more, and copy pasted the torso's z location onto the second down pose rather than eyeballing it (although having a slightly different down for each leg might look more realistic, unless the difference is too extreem: she would look like she's limping.)

After a couple of tries, I had a down pose I was happy with, and moved on to adjust the up pose. I had to rotate her weight bearing foot some more to give her more of a push off from her toes, since her weight bearing leg was already almost straight in the up pose. I finally did get a teensy bit more height on the up pose. The resulting motion path looks good for a normal walk.

So, here she is with all the foot motions in place. I originally billed this as a leisurely stroll, but she is taking large steps, so this is a fairly quick walk. Must be the boots. Hard to imagine anyone taking small steps in those boots.

and they all have visible and selectable turned on in the outliner, but when I select upper_arm.R in the outliner, nothing lights up in the 3D viewport. I will ask Shadosk for advice. Meanwhile, I will turn IK back on for the hand bones and pose them that way.

Back to frame 1: I move hand_ik.R forward, rotate the hand to a more natural position. In top view, I move the hand closer to the body. I adjust the elbow target to bring the elbow in. Then I move Shelly's left hand to a position behind her body, and rotate the hand and adjust that elbow target as well.

Once the hands are more or less in place, I select both shoulders and, in top view, rotate the shoulder to follow the hands: left shoulder back, right shoulder forward. I go back and adjust the hands a bit.

In frame 1, the left leg is load bearing, so in front view, I rotate Shelly's hips to move the left hip up.

I select all the bones, and insert keys on frame 1. hips, shoulder.L, upper_arm_pole.L, shoulder.R and upper_arm_pole.R are added to the dope sheet. I select these plus hand_ik.r and L and copy them, then mirror paste them to frame 17. Unfortunately deselecting things in the dope sheet does not have the effect I was looking for (only copying the poses for the hands, shoulders and hips) and the mirror copy pose moves the torso back to its frame 1 position. So, back to placing the marker and moving the pose forward to the mark.

Mirroring the pose seriously messes up the location of the elbow targets (upper_arm_pole.L and R) so I reposition them before setting keys for frame 17.

Scrolling between frame 1 and 17 exposes a new problem: the hands, now IK, are responding to the old frame 1 positions, which also messes up the pose. I should have moved the hand IK bones to the approximate locations of the actual hands as I was working earlier, or just left IK on and posed the hands along with the feet.

I delete the hand keys for the intermediate poses, and let Blender interpolate hand poses between the two contact positions. Then I adjust the hand and elbow positions for each intermediate pose, and insert hand and elbow keys again. This way I get an idea of approximately where the hands should be at each pose, and can make adjustments so the hand doesn't pass through the body or the elbow go all wonky.

After I set up the hand and elbow target poses, I carefully scroll through the cycle, checking particularly to see whether there is daylight between Shelly's hands and her hips at all times.

Everything looked good, so I OpenGL rendered an animation, this time making two passes, one front view and one back view. I added the word “front” and “back” to the output file name so they wouldn't overwrite each other. I made two strips in the Video Sequence Editor, and placed them end to end on track 1 before I rendered the animation.

Naturally, once the video is up and running on Vimeo, I begin to notice things I should have caught and corrected earlier. The elbows need a lot of attention.

Anyway, since the walk is moving into the polishing phase, does anyone see anything else that needs to be corrected? Also, any recommendations on delaying parts to show inertia, or anticipating motions?

Once I get the first complete cycle done and polished, I'll work on a longer sequence. Many of the 'long' walk sequences you see have the model simply walking in place on a featurless plane so you can't see the feet slipping across the surface, sometimes with a bit of camera animation thrown in so it looks like they are moving toward the camera when it's actually the camera moving toward them.

I spent a few hours looking for Shelly's FK controls. Finally, in a footnote to a supplement to an appendix to an obsure document, all the way at the bottom of the page, I found

You need to separately link in the rig_ui.py text block. Otherwise the rig UI will not appear in the n-panel

I opened the text editor. Indeed, Shelly had a rig_ui.py. In the text editor header was a big button labled "Run Script". I pressed it.

Eureka!

A Rig Layers panel showed up in the 3D Viewport's n-panel. It had, among other things, a button that turned on the arm FK controls. So, I set Shelly's rig up to use IK arms, which put her arms back into rest pose. And, it's late, so I decided to do a little fan service, and made an extended walk cycle with no arm animation (so Shelly is back to tight rope walking again) and set it to music.