Tutorial
No items found.

Tutorial: Animate a Walk Cycle in After Effects with Jenny LeClue

by
Joey Korenman

Here's how to animate a walk cycle in After Effects.

Let's walk the walk! In this lesson Joey is going to break down an character walk cycle from scratch using the Jenny LeClue rig that was generously given to us to use by Joe Russ, the creator of Jenny LeClue, and our very own Morgan Williams who did the rigging. You don't need to know anything at all about character animation to follow along with this tutorial, and this is a great skill for you to have as a Motion Designer.

Practice those walk cycle skills that you just learned on the practice rig you can download below. It may not be as fancy looking as the Jenny LeClue character that Joey uses in the lesson, but it'll get the job done.

If you really dig this lesson make sure you check out our Character Animation Bootcamp where we go in-depth with bringing characters to life. And if you're interested in how Morgan did the rigging on Jenny LeClue check out Rigging Academy.  

{{lead-magnet}}

-----------------------------------------------------------------------------------------------------------------------------------

Tutorial Full Transcript Below 👇:

Joey Korenman (00:17):

What's up Joey here at school of motion and welcome to day 12 of 30 days of after effects. Today's video is something I'm really excited to be able to show you. It's been requested a lot. Actually the topic is creating a walk cycle and after effects with the character. Now, the character rig we'll be using was built by Morgan Williams, who is not only an instructor in the department of motion design at the Ringling college of art and design, but who also teaches our character animation bootcamp and rigging academy courses. And the artwork was done by my good buddy, Joe Russ for his indie video game, Jenny LeCLue. I'm really excited to be able to use the artwork in this tutorial. So if you haven't checked out, Jenny LeClue, look for the link on this page. Anyway, let's hop into after effects and talk about making a walk cycle.

Joey Korenman (01:02):

So the first thing I want to say is that, you know, character animation can really be a completely different career path than a traditional motion design career path. Um, and you know, I, I have said this a lot to Ringling students that I've taught that, you know, character animation is really fun. Um, it's also very, very hard and to get good at it, you have to practice it a lot. And if you're, if you're a motion designer and mostly what you're doing is animating non character things. You're just not going to get to a Pixar animator level. Right. Um, with that said, it never hurts to have a couple extra tools in your tool belt. And so knowing a little bit about character animation and at the very least how to make a, you know, a serviceable walk cycle, um, that can come in really handy.

Joey Korenman (01:50):

So what I'm going to show you guys is how I made this walk cycle. Um, and again, I'm not a character animator, so this is, you know, I'm sure, uh, you know, a real character animator could pick this thing apart and, and tell me everything I did wrong. Um, but I'm hoping that, you know, what I can teach you guys is at least how to approach this. Um, and you know, maybe be able to use this in your own, your own work. So this is the final result. And let me first show you the character rig. Okay. Now, like I mentioned in the intro, this is ou. This is, uh, the main character in Joe Russ's a game that he's, he's making and it's currently kickstarting. Um, as of today, August 18th, uh, there's three days left. So, um, what I w if you want to follow along, there's actually a character rig that Morgan Williams at Ringling has been gracious enough to just give out for free.

Joey Korenman (02:41):

And it's this rig here is based on that one. And the control, a lot of the controls are the same and it should work the same. Um, and I'm not going to get too much into the actual rigging part because rigging is a totally different subject. It's a lot more complicated. There's a ton of expressions going on here. And at some, maybe there'll be a video about that. This is strictly about character animation, but I just want to show you some of, you know, some of the, the controls here, right? You can see that there's a whole bunch of NOLs, uh, and, um, you know, in this comp here, this rig comp, there's a ton of layers that have been hidden by the shy switch. Okay. There's a whole bunch of things that you don't need to see. Um, and when you hide those all you're left with are these Knowles, right?

Joey Korenman (03:24):

So this snowball controls the eyeballs, uh, this snow here controls the hair and you can kind of get little hair wiggles and stuff. Um, and then you've got the main controls, like, you know, this foot, this foot, um, each hand has a control and you, and if you, you know, if you're noticing there's a lot of automatic stuff happening, if I move the hand, the elbow bends correctly, the shoulder rotates all by itself. And this type of a rig is called an inverse kinematic rig. It's a fancy word. It basically means rather than rotating the shoulder than the elbow than the wrist, you just move the wrist in after effects, figures out sort of backwards what the, what the previous joint should be doing. Okay. Um, and you've got all these controls and really rigs like this are super fun to play with this, uh, cog center of gravity Knoll here.

Joey Korenman (04:16):

This kind of controls, you know, the, the main part of the body. And you can see that the feet and the hands get locked into place, but everything else moves around it. Um, and when you click on a bunch of these layers is there's controls embedded in them. Um, so for example, there's a hip roll. Uh, there's a belly roll, so there's a whole bunch of controls here, and all of this took a long time to set up. Um, and once it's set up, you then have this amazing ability to do really cool character animation. So what we're going to make is a walk cycle, and I'm going to show you how I do it, and there's more than one way to do it. Um, and I'm sure some of the things I do are not the correct way, but they work. And honestly, that's, that's all you can ask for some times.

Joey Korenman (04:57):

So we're going to start with the feet. Okay. And actually the first thing I want to do is each of these Knowles has, um, key frames on every single property. It's got a whole key frame at the beginning of the animation, uh, and the reason it has that is, um, it's just a good idea to, to give yourself the initial value on a key frame somewhere. Um, but it's gonna make my life a little bit harder. So the first thing I'm going to do is hit the Tilda key, and I'm going to just select every layer and hit you. And I'm going to just get rid of every single stopwatch that's on here. Okay. So I'm going to hit you again, and I just want to get rid of everything. So I'm basically starting with a blank slate and this will make it easier. Once we start getting a lot of key frames on here, um, to only see the key frames we want.

Joey Korenman (05:43):

Okay. So I'm just going to start by doing that, uh, these time remaps down here, um, you don't want to, you don't need to mess with those. Okay. So really all I'm concerned with are the NOLs, which now have no key frames on them. So I'll hit Tilda again. Right. And let me, uh, give us a little more room here. You'll, you'll notice I have my screen arranged kind of a weird way this time, and that's because I want it to have more room for you guys to see what's actually happening with this rig. All right. So, um, the way I do it is I start with the feet. So, um, you know, you've got your right foot and your left foot, and, you know, rather than try and mimic kind of the complex movement of a foot taking a step, I break each piece of the movement into individual pieces, and that makes it much, much, much, much simpler.

Joey Korenman (06:30):

Um, so actually step one is I'm gonna make my comp much, much shorter than it is. Okay. Um, so all I need it to be is 24 frames. One second. Okay. So I'm going to go to one second. I'm going to hit N to move my outpoint there. And then I'm going to control click in this area and say, trim comp to work area. The reason I'm doing this is because what I want, and this is actually pretty common when you make a walk cycle, it's a lot easier to do. If you've got nice even numbers to work with, right. And a walk cycle should loop. So the first frame should match up with the last frame. And, you know, I'm working in 24 frames a second here. So that makes it easy for me to know. The mid point of my walk is frame 12 and, and, you know, the mid point between that and the beginning, his frame six.

Joey Korenman (07:21):

And so this gives me nice, easy numbers to work with. Um, and it also means there's only 24 frames. So when I ran preview, it doesn't take a long time. So starting with the feet, I'm going to hit P on both of them. And I'm going to control, click and separate dimensions on the position property for both feet. Okay. And I should mention, these are foot controllers. These are not actually the layers for the feet. They're just NOLs that control the rig. All right. So, um, the, the first part is actually pretty simple. Um, so I'm going to set the initial position of these feet. So I'm just going to drag and I'm holding shifts. So I can drag this, uh, drag, this Knoll. And, and one thing that's kind of good to do is kind of move it around a little bit. And you'll see why, if I, if I move this up a little bit, there, there comes a point where there's kind of a snap happening with the layer.

Joey Korenman (08:11):

Right. And so I don't want to move it any further than that. You see how it snaps right. About there. Okay. So I want to, and I want to have the initial position sort of happen right before that snap. All right. And then I'm going to put a key frame on X, then I'll do the same thing on the left foot and I'll move it right. And kind of move it up and down and figure out where that the snap happens. Maybe there. Okay. So let's try that. Okay. Um, and the reason the snap is happening is because this is an inverse kinematic rig. And so this Knoll controls the foot, and then there's some math happening to figure out where the knees should be and where the hips should be. And of course, you can't see the hip it's underneath the clothing. Um, but sometimes that, you know, having, uh, that math, um, it, it means that there's going to be a value where all of a sudden, the result jumps really quickly.

Joey Korenman (09:02):

Um, and you want to try and avoid that. There's a lot of controls that can help you adjust that, but initially let's just try and make it easy for ourselves. Okay. So now what I'm gonna do is I'm going to go to the midpoint of my animation and I'm going to move the left foot. Right. It's this one I'm going to move this one backwards until it's more or less where the right foot is, and then I'm gonna move the right foot over here. Okay. So it's, it's more or less where the left foot was. Um, and if I can't remember where the left foot was, I'll go back to the first frame and I'll just put a little guide here. Okay. So then I'll go forward to the next key frame. And I can see, I did a pretty good job of landing those feet up.

Joey Korenman (09:41):

Okay. Um, and then I'm going to go down, I'm going to go to the last frame, right. Frame 24. And I'm going to just copy and paste both of these key frames like this. Okay. And what that just did is it created a looping animation. Okay. And if I just ran preview this real quick, you'll see that, um, you know, the legs are just kind of moving back and forth, sort of like someone's walking. Um, there's a little hitch at the end of the animation. And that's because this last frame in this first frame are identical. So it's actually playing that frame twice. So while I want my comp to be 24 frames per second, and I want it to be 24 frames long, I actually only want to play the first 23 frames before the loop happens. So now I can see I've got this seamless loop of the legs moving back and forth, and I'm going to leave these, uh, these key frames as linear.

Joey Korenman (10:40):

And the reason for that is because eventually we're going to have to move this layer at the correct speed. So it feels like those feet are stuck to the ground. And that is so much easier to do when you have a linear movement, um, you know, with the feet. And in general, if you study, you know, if you look at people walking, um, you know, their, their forward momentum can be fairly constant. It's all the other stuff that has variation to it. Okay. So that's step one, legs moving back and forth. Step two. Now we just moved to Y position. Okay. So what happens with four with this back foot? Okay. And if you think about someone walking, they land on their front foot and then the back leg lifts up and kind of comes over and then sets down. Okay. So what I'm going to do is I'm gonna start with the right foot and I'm going to put a key frame on Y position.

Joey Korenman (11:26):

Okay. So it's on the ground and halfway, you know, basically right here, this frame here, frame six, this is where that foot should be the highest. So what I'm going to do is I'm gonna adjust the Y position so that the foot lifts up. Okay. And, and you can sort of eyeball about how high you want it. And if someone's walking slowly, it doesn't lift up as much. And if they're running, it lifts way up. Okay. But this is a walk. Um, so let me put that maybe right. About where the shin is. And then at this point here, right, this, this is the mid point of the walk cycle, and now this foot should be down. So I'm just going to copy and paste the Y position. And so now you can see that it lifts up and comes down. Okay. Um, and now let's easy ease those, and let's go into the curve editor and talk about this for a minute.

Joey Korenman (12:19):

This, what this is showing me is the speed graph, which I hate using. So let's go to the value graph. So you can see that the Y position of the foot it's easing out, right. It's sort of slowly lifting up off the ground and it reaches the apex, and I'm going to ha I'm going to extend these Bezier handles out. So as it reaches the apex, it hangs there for a second, and then it comes down. Now what's happening by default is it's coming down an easing into the ground. And that is not how people walk walking is controlled falling. Um, and so what's going to happen is Jenny's going to lean forward and that front foot's going to land and just stop because it's literally gravity pulling it into the ground. So this is what it should look like easing off the ground, you know, getting to its highest position easing out of that and then falling to the ground.

Joey Korenman (13:09):

So this is what that curve needs to look like. And now I need those same key frames to happen on the other foot. Okay. So that's one foot and now on the left foot, I want the same thing to happen. Um, but just, you know, now at this point in time, so let me just paste those key frames and see what we get. Um, and I may need to adjust this Y position a little bit. So with all three of them, um, selected all three of those key frames. I can actually adjust all of them as a group and lower them a little bit. Did you guys catch that after effects just crashed on me? Um, and it actually, hasn't done that on me in a while. So I'm, I'm guessing it has something to do with all this fancy character animation we're doing. Um, but anyway, either way we're back and, uh, let's take a look at our animation curves for our left foot wide position.

Joey Korenman (13:58):

And that looks good. So let's, let's just do a quick Ram preview and let's see what we've got so far. Um, you know, uh, so far all we have is the, um, you know, the ex back and forth movement of the legs, and now we've got each leg sort of picking up and setting down, um, and already the legs kind of look like they're trudging forward. Okay. Um, and so, you know, the, the rest of this is really going to be adding, you know, some overlapping actions and follow through and, and just trying to, to mimic the dynamics of someone walking. Um, and we're just going to take it piece by piece. Let me switch this to quarter Rez. So we get a little bit faster Ram preview. Um, this artwork is very high Rez. This is actually a 5,000 by 5,000 pixel comp. Um, so we're in quarter Rez and still looks good.

Joey Korenman (14:48):

All right. So now that we've got the, the feet basically doing what they're supposed to do, and we might tweak them, um, why don't we now start incorporating the rest of the body? So let's start with the center of gravity. Okay. And let's, let's scrub through this and think about this, right? When, when someone takes a step and their foot lands, that is when the, all of the weight of their body falls to the ground and they have to catch it. And then when they come, when they step up in the air, all of the way to their body goes up in the air. Okay. So when we're in a position like this, the weight of the body should be down. So I'm going to open up the position, key frames, uh, the position property of the center of gravity in separate dimensions, put a key frame on Y and I'm just gonna tap shift in the down arrow and just lower the body a little bit.

Joey Korenman (15:35):

Okay. And then I'm going to go to the midway point of this step, which is going to be frame six, remember frame zero's the beginning frame. 12 is the midway point in and frame 24 is the loop point. Um, and so frame six, I'm going to now hold shift and nudge the body back up a little bit. Okay. And not too high. Cause if you nudge it too high, you can actually create some weird, um, some weird, you know, kind of popping with the joints of the legs. So you don't want to go too far with it. And then just sort of look what we've got. Right. The foot steps up the body goes up. Right. And then on frame 12, I'm just going to copy and paste this. Okay. So this is what the body's doing now. Okay. It's going up and down with the step.

Joey Korenman (16:20):

And now I just wanted to repeat that. So I'm just going to copy and paste this. Okay. Um, and let's hit easy, ease on these and do a quick Ram preview and let's see what we got so far. Cool. All right. So, you know, that certainly helps, but here's the thing, you know, all of these motions that we're going to start adding, they don't all happen at the same time when, when Jenny takes a step. Right. And she goes up in the air, all of her weight is moving up in here. And then when she lands, it's all coming down, but it's going to continue to come down for a frame or two after the step lands. And it's going to continue going up for a frame or two after she goes up in the air. So what I really want to do is nudge these key frames forward one or two frames, right.

Joey Korenman (17:07):

And that way we can get some overlaps and follow through, and you're going to see the problem with that. It looks good on the second part of the animation, but the problem is these first couple of frames. There's no movement at all. So what I need to do is actually, um, go to this last key frame. I'm just going to select Y position. I'm going to click on the property, selecting every single key frame, and I'm going to hit copy paste. Okay. And this is what that's done. It's given me if I now select the Y position, it's given me key frames that actually extend out way past the timeline's kind of ending point. And so what I can do, um, you know, I know that this key frame and this key frame are identical. So what I, what I like to do is put a little marker on this layer.

Joey Korenman (17:54):

So with it selected, hit the asterisk key, the one on your number pad, and now go to the first frame. And now I can just shift this layer over, line it up with the marker and extend this. And now if I move this forward, a couple of frames, the animation that's happening here is actually happening back here too. So I've still created a seamless loop. Um, but now I can sort of decide where I want that loop to begin. And no matter where I slide this layer, it's going to be a seamless loop. All right. And so now there's like a, there's a little bit of a delay when she, when she goes up, her body keeps going up even as she starts to come back down. Okay. So it creates a little nice, a little bit of a lag, which is nice. All right.

Joey Korenman (18:38):

Now, at the same time, there's also kind of a shifting of a weight that happens when you're walking, right. You shift from, from leg to leg, and this is a 2d character rig. So you can't, you know, we're not literally going to shift her in Z space or anything like that, but we can sort of fake it by justing the rotation of the center of gravity. Okay. And so let's just do the same thing now to make this a little bit easier, I'm going to slide this layer. I'm actually going to, I'm going to slide it back to the starting point. Um, and then that way, it's just going to be easier because now I can line up my rotation with these key frames and then I can offset them afterwards. So let's put her, okay. Our rotation key frame on here, let's easy, ease it.

Joey Korenman (19:20):

And let's think about what is actually going to be happening. Okay. As Jenny steps up in the air, she's going to sort of, you know, she's going to sort of, uh, you know, lean back to get the leg off the ground, but then lean forward when she lands. Okay. So when, when her feet are on the ground, she's probably leaning a little bit forward. Not very much. Okay. Let's, let's try two degrees and see what that looks like. Which means that when her leg is up in the air, right. At frame six, um, she's going to be leaning back a little bit, right. Sort of using her momentum to throw that leg up. And it's not literally throwing the leg up. It's just a subtle little shifting of weight. Okay. Then on frame 12, we're going to be back forward again. And then we just want to repeat that.

Joey Korenman (20:08):

So I'm select those key frames and paste them. Then I'm going to go to the last key frame, select all my rotation, key frames, hit, copy paste, and now, same thing. I'm going to move this layer and then move it a couple of beats forward, a couple of frames forward. And so now you can see, let me, let me do a quick, random preview that her center of gravity is moving up and down and rotating a little bit as she's walking. Okay. And you know, so it's starting to feel a little bit more natural. Um, but the up and down in the rotation are happening at the same time in the rotation might actually happen a little bit before. Right. It may actually precede the motion. So what I can do is click on the word. Don't select all the visible key frames here, because there's other key frames here and here that you can't see, but if you click on the word rotation, it selects everything.

Joey Korenman (20:56):

Then I can just slide these back a couple of frames, or maybe even slide them back four frames. Right. And so now you're going to get this little leading movement with the rotation. Right. And it's a little too much. So let me, let me pull this back maybe. So it's only one frame proceeding the walk. Okay. And now it's starting to feel like there's a little bit of weight to Jenny. Okay. Okay, cool. So, um, since we're still working on the bottom or basically working on the bottom half of this animation, why don't we, um, talk about what the dress should be doing? Right. Um, Morgan, who made this rig, um, had the brilliant idea of putting little puppet pin controls on the, on the dress itself. Right. Um, and so if I grab one of these controls, I can actually move the tress. And so what I'm going to do is I'm going to open up the position property on all of these, separate the dimensions.

Joey Korenman (21:51):

And I'm just going to put key frame on Y position for all of them. And again, think about what's happening on this, in this pose. All of the, all of the weight has been pushed down towards the ground. So all of these puppet pins are going to shift down a little bit. Okay. So I can just select them all and nudge them down. And what I probably want is for this, the, the higher part of the dress to not move as much. So maybe I'll do this in two steps. I'll pick the upper puppet pins and I'll just nudge them down, maybe four pixels, right. Just tap four times. And then the lower part of the dress can move a little bit more. So maybe do like eight times.

Joey Korenman (22:33):

Okay. And then we're going to go to frame six, and this is where now everything's moving up. So now we'll move these backups. So the upper left will go up for frames and the lower left and lower right. We'll go up eight frames. Cool. All right. And then we'll go to frame 12 and I'm just going to one at a time. Copy each of these, and then I'm going to want that to repeat. So I'm gonna select all the key frames on each layer and copy paste. Okay. And then I'm going to go to the last frame and I'm going to click Y position one layer at a time and copy paste again. So now I can offset this and still have the key frames, looping, I'm going to grab, I'm going to grab all of these, I'm holding command and just clicking each property and hitting F nine for easy ease.

Joey Korenman (23:24):

And I'm going to go to my graph editor, and I'm just going to grab, I'm going to actually, um, one at a time click and hold shift and click on each of these positions. Here we go. So there's 1, 2, 3, 4, and then click on each one. So now I've selected every key in the, in the curve editor. And I can pull the Bezier handles like this so that there's more of a hang to that dress, right? It's gonna, it's gonna ease a lot more strongly into position each time. And then, you know, the, the top of the dress is probably going to move a little bit sooner than the bottom of the dress. So I'm gonna take these bottom key frames and I'm going to drag them. Well, first thing I need to do is go to the last key frame, put a marker on every layer and then move that marker to the first frame.

Joey Korenman (24:16):

So now I can offset things. So now I can take the, the lower left and lower right Knowles, and I can just scoot them forward, a couple of frames and maybe the upper left and upper, right. I could scoot forward one frame. Right. And so what this should do is give us a little bit of overlap, where as the weight comes down, you're going to see the dress, uh, sorry, the, the coat kind of react. Okay. And you can decide if you want more or less like the, you know, the bottom of the coat, isn't moving very much. And I would like it to move a little bit more. So here's a cool trick. What you can do is select, um, go to your curve, editor, select both properties. And then once again, you, you just click on both properties and it will select every key frame here.

Joey Korenman (24:59):

Um, and what you want is the transform box. And if you don't see it, just make sure you click this button here, that transform box with the transform box on what I can do is I can click these little white squares and I can hold command and I can scale my entire animation curve. And so what that's doing is it's increasing the maximum and decreasing the minimum values, um, for my animation. And so now they're going to have the exact same timing and the same curves, but they're just going to move more. Okay. And that's kind of cool. That's great. Okay. Uh, let's talk a little bit more about some of the great controls here on the center of gravity. No. Um, you know, we've all we've done so far as adjust the Y position of the NOL and, and the rotation, but there's all these other great controls.

Joey Korenman (25:46):

Okay. And so, uh, for example, you've got a, um, a belly rotation, right. Which is going to let the top half of Jenny kind of move. And so we can use the same rules and very quickly animate those. So I'm going to put a key frame here on belly rotation. Let me hit you so I can bring it up and on this frame, um, you know, let's just look at what the, what the center of gravity Nola's doing right on this frame. Um, it's rotated forward a little bit. It's rotated almost two degrees forward. And then when Jenny's up in the air, it's rotated backwards a little bit. So let's just do the same thing here on this frame. Let's add, let's put the belly rotation, you know, a little bit less than two degrees, go to frame six and just bring it back a little bit.

Joey Korenman (26:32):

Okay. And it doesn't have to go back too far, maybe half a degree. Um, and then we'll go to frame 12 and we're just going to do the exact same workflow we've been doing. We're going to copy and paste these key frames. Okay. Select them all easy, ease them. Um, and now I can select all of these key frames and I can move the key frames back. Right. So that now I have extra key frames here, so I can move them forward and still have a looping animation. And, you know, I try to, I try to make it so that, um, you know, there's never really two key frames on exactly the same frame. It just, it, you know, something's always moving and it just kind of creates a more natural life-like looking walk. And now you can see that little thing. It's just a little bit of overlapping animation with the top half of her body, as she's walking.

Joey Korenman (27:23):

Now, one thing that is probably starting to bother you guys, this, this weird jackhammer thing that's happening with the, uh, with the arm. So this is another amazing feature of this rig and, and you have the same control on the free rig that Morgan's given everybody this, uh, this is the right hand. Okay. And right now it's set up with inverse kinematics, which means what I want the arm to do is swing like this. But in order to do that with an inverse kinematic rig, it's actually a little trickier because I, I, what I need is to animate this Knoll in a kind of arking fashion, right. And you can do that, but it's a lot trickier. What would be helpful is if, instead of animating the arm this way, I could just animate it the old fashioned way where I just rotate the shoulder than the elbow than the rest and, and make it easy.

Joey Korenman (28:11):

Um, and so there's actually a switch here. There's an effect. Uh, and it's a, um, it's an expression checkbox, and it's labeled I K slash FK, if, all right. So if I turn this off, it's going to deactivate the EK controls for the rig, um, for that arm anyway. And so now what I can use is I can use this upper FK lower FK and a couple of other controls here to just rotate and move this arm, you know, sort of the normal way that you rotate stuff, that's parents together and after effects. So let me start by going to the first frame and, um, and just putting a key frame on upper FK lower FK. Um, I also, I'm going to want the end FK, which is the hand. Um, and then there's some extra cool controls here. There's, um, there's a sleeve angle, which kind of lets you adjust the sleeve of the shirt a little bit.

Joey Korenman (29:03):

Um, and so what don't I put a key frame on that too. Okay. All right. So now let's hit you on our hand layer and let's actually animate this thing. So what we want this hand to do, right? This is the right arm. Uh, so it needs to do basically the opposite of whatever the right foot is doing. So right now the right foot is in the back. And so we want, you know, that we want the arm to actually be swung forward at this point. So let me, um, let me just start messing with the values. So the upper FK is going to rotate forward like this, and then that elbow is going to be swinging up and then that hand is going to be swinging and then that sleeve is actually going to be swinging up to. All right. And so that's one position now when Jenny steps and the next foot lands at frame 12, now this arm should be back.

Joey Korenman (29:55):

So now I'm just going to swing, I'm going to, excuse me, I'm gonna use the, uh, the upper FK and swing it back this way and then the lower FK. Right. And then the end FK and then I'll adjust that sleeve angle. This, the sleeve will kind of swing back to with the momentum. All right. And then on the last frame, we just need to copy all of the first key frames and repeat them. Okay. Um, I'm going to select all of these key frames and hit F nine, and then I'm going to select all of them and hit command C command V copy paste. Okay. And of course I did that, so I can select all of these and move them over and have repeating animation. Um, I could put a marker here and move this to the beginning. Okay. Because the arm animation is probably going to be delayed a little bit from everything else.

Joey Korenman (30:48):

Right. So I just moved it forward a few frames and it should still loop seamlessly and it should give us a nice little arm swing. Okay. Now of course you don't want every single piece of the arm to move at the same speed. So everything's going to move from the top down. The shoulder moves first. That's the upper FK, then the elbow will move. So let's delay that by a frame, maybe two frames then the hand. So let's delay that by two more frames and the sleeve will be somewhere in the middle, maybe in between the lower FK in the hand. Right. And so just by selecting all these key frames and offsetting them, it gives it a little bit of a, of a looser feel. Okay. And that's getting pretty nice. Excellent. All right. Let's talk about the other hand now. Um, so this left hand, uh, which he actually can't see right now, but this is still an I K control, and we're going to keep it that way because this hand is holding a flashlight.

Joey Korenman (31:50):

Okay. Um, and it's, it's kind of rotated in this funky little position here. Um, so let's, let's rotate the flashlight up a little bit. Okay. And keep that arm out, maybe like that. There we go. Maybe that's a little bit nicer. Um, and so what I want is I want it to feel like this arm is swinging, but this one's kind of hanging there, but maybe bouncing up and down a little bit. Um, so all I need to do is just sort of animate this arm, bouncing up and down, and I'll automatically get shoulder and elbow rotation because this is an I K control. So this just shows you how you can mix and match. I K. And FK when you're, when you're doing character stuff. So, uh, let's separate the dimensions on the left hand, put a key frame on Y and again, in this pose, all of the weight has come down to, you know, towards the ground.

Joey Korenman (32:38):

So let's move that flashlight down a little bit and let's move it a little closer to her body too. Um, okay. And then when she steps up, so by frame six, the flashlight's coming up now with, with the weight of her body. All right. And then it framed 12, it goes back down. Then we just copy and paste these key frames, go to the end, copy and paste, all key frames, put a marker there, let's select them all and easy ease. Right. And bring a, let's bring this marker to frame one. And so now of course, I can just move this forward. However many frames, I want this to sort of be delayed from the main walking. I can just slide this layer around. Um, and also, you know, what I might want to do is I'm going to my curve editor and, and stretch some of these Bezier handles out so that it feels like that that flashlight is going to have a little bit more weight to it.

Joey Korenman (33:32):

Um, all right. So now let's look at that. Okay. That's kinda cool, but I wonder what would happen if this was actually kind of inverted. So instead of having, you know, if you look at this animation, it's just a cycling animation, which means if I slide this layer, so the next key frame lands on my playhead, it's now actually going to be ha it's going to be playing in reverse. Right. And that is too much. And I don't like it, but I, I didn't love it when it was sort of perfectly in sync with everything. I think it needs to be a little bit offset. So I'm just kind of playing with the timing of it. And I'm digging that a little bit more. And so what I may also do, um, is play with the rotation of this a little bit too. So I'm going to put a key frame on rotation and, you know, when she lands on the ground with each step, maybe that flashlight dips down a little bit dips forward.

Joey Korenman (34:27):

So then on frame six, it can sort of come back up a little bit more. And then on frame 12, I can just do the same thing. Copy paste, copy paste, come to the end here, copy paste, easy ease. Um, let me easy ease all of them. Um, and now if I hit you, I can grab all my rotation, key frames, and maybe I can, um, you know, let me, let me move all of them back like this. And then I'll just nudge them forward a couple of frames. So now you're going to have the weight of the flashlight kind of pulling the arm down and the, and the flashlights rotating a little bit. And it just starts to feel a little bit more natural and, you know, really like knowing what to do and which controls to, to, to kind of use, to create that, that just takes a little practice.

Joey Korenman (35:12):

But hopefully what you're seeing is every single move I'm building almost identically almost the same way. All right. Uh, now let's talk about the legs a little bit, cause now looking at them, I mean the, the upper body is doing some kind of nice things. Um, but the, but all, you know, a lot of the easy eases I still haven't really changed. Right. Um, and so I want to mess with the curves a little bit, and actually, I think I'm going to start with this shoulder. So let's go back to the right hand, hit you to bring up our key frames and let's look at the upper FK animation curve and I'm going to, I'm going to, I'm going to tap the, uh, the property with this window open so I can select every key frame. And I am going to really yank these Bezier handles.

Joey Korenman (35:55):

Okay. And what that's going to do is it's going to make each arm swing happened faster. Okay. And it's going to ease more. Right. And so it just gives it a totally different character. And now I don't want to do as a similar thing with the feet. So when they I'm here, let me, let me hit P on both of these feet for the Y position, right. What I want, I want that, that foot lift to take longer. So it's faster in the middle. And then once it's there, I want it to hang even more. I want this to be even more extreme. Um, and so then I'll do the same thing on, on this foot, right. And I'm really just making more extreme animation curves. And so what that'll do is it's going to make the initial foot lift feel slower, but then it's going to pick up speed and hang there for a little bit longer.

Joey Korenman (36:47):

It's going to give it a little bit more character, and this would be a good, a good place to talk about some of the other foot controls. Now, this particular character, uh, if a de-select something, um, if you look at the feet, they're very tiny and they, you know, they don't really draw your eye as, you know, if this was a clown and maybe there'd be bigger shoes or something. Um, but when someone walks their ankles are also rotating and there's other things happening with the feet and this rig does give you controls for that, which is great. Um, if I look at the foot like the right foot, um, there is a, uh, let's take a peak here. You've got, um, the end FK okay. And what this is going to do, let me zoom in here. So you can actually see what this is doing and FK is actually rotating the foot.

Joey Korenman (37:36):

Okay. As I adjust it, it's actually rotating sort of like the, the, you know, the angle that the foot's hitting the ground. Um, and so this is, this would be a great thing to animate also. Okay. So on this frame, right, this, this foot should be rotated a little bit forward, right. Because the toe is kind of on the ground and it's about to lift up. Okay. But it should be sort of pointed forward like this. Um, and so then, so then put a key frame there as we scrub forward, um, the foot is going to lift up in the air and as it lifts up, it's going to actually rotate backwards. Right. And then by the time it lands, when it lands, it's going to flatten out and be zero. Okay. And so, you know, then let's look at the timing of this, right.

Joey Korenman (38:29):

If I just sort of let this play, you know, you can kind of see that now it looks like that foot is bending in and sort of lifting off the ground. Um, and the only problem we're going to have is that eventually we're going to need this foot, which, you know, it's sort of pointing here, we're going to need it to be flat so that it will loop. Um, so what I'm going to do is I'm actually gonna move this key frame a little bit and I'm just gonna copy and paste the flat one. Okay. Um, so that it actually will look like the toe bends and it will, and it will now be a seamless Lupul thing. Okay. Um, and now I can select all these key frames. I can easy ease them. Um, and I can, of course, like pull the Bezier handles out so that the, the motion happens a little bit quicker, more extreme.

Joey Korenman (39:17):

Um, and at the end here, because the foot is just going to hit the floor. I don't need an ease into that movement. All right. So now just looking at the one foot that has this control on it, um, you know, could use some tweaking, but it just helps a little bit. And let's take a, let's take one last, look at this frame here. Um, and we may want to pull this value up so that, that foot really swings forward. There we go. Just make, make the key frames a little bit more extreme. Um, okay. There we go. Cool. Let me do a quick random preview. Okay. That's a little much, I went overboard. See how quickly you can take something that looks okay and make it just terrible. Okay. Um, cool. So now we, uh, we're going to take those key frames. We just added the, uh, end FK, I'm going to copy them.

Joey Korenman (40:10):

And I want the same thing to happen on the left foot, but obviously sort of, you know, in time with, with that foot's footstep. So I'll just paste them there. Um, and what we could try to do is let's see what happens if we offset this. You know, if we, um, if we just delay this a couple of frames and delay this, a couple of frames, and you know, what you're going to run into, uh, here is a problem where now those key frames don't actually finish. Um, and so what you'd have to do is actually paste key frames over here to, to create that, that loop bubble thing. Um, so let's, let's first see if we even like having it delayed like that. I mean, it's not even something I really noticed. So rather than create a whole bunch of more work, why don't we just put these back where they were all right.

Joey Korenman (40:59):

Now we've got foot roll. All right. Let's zoom out, take a look at what we've got so far. You're going to see me saving a lot because after effects has crashed two or three times while recording this tutorial. All right. So now, um, this is, this is getting there. Um, so what other things feel like they should move with her head, for sure. Um, and, um, there is a head Knoll with a whole bunch of controls on it. Um, but you know, in its simplest form, you can move the head up and down and you can rotate the head. So I'm gonna, I'm gonna put key frames on the wide position of the head and I'll do rotation at the same time, maybe. So I positioned in rotation. So for Y position, remember on this frame, everything's moving down. So that head is going to come down a little bit.

Joey Korenman (41:44):

Okay. Um, and we're also sort of leaning, I guess, a little bit back. So let me, let me just rotate the head back a couple degrees, go to frame six and here is where we're sort of leaning forward. Right. And all of the, um, all of the motion is sort of going up in the air like that. So the head's going to move up a little bit, go to frame 12 and copy and paste these, and then we can just kind of like scrub through and see if this makes sense. Right? Yeah, it does. It makes sense. Cool. Uh, so let's copy and paste. These come to the very last frame and select everything, copy and paste it, select everything again, easy, ease it. And now we'll move all these key frames to the beginning. And you, you know, sometimes I'm actually moving the layers.

Joey Korenman (42:32):

Sometimes I'm moving the key frame. It doesn't really matter. As long as you can keep track of what's going on, and then I'm going to delay it, a couple of frames. I'm going to go into my curve editor, I'm going to select everything and I'm just going to pull the busy handles out. So we get a little bit more of an extreme ease. Okay. And let's see what we got now. All right. So it's moving away too much, moving away too much. And it's probably rotate it definitely rotating too much. So I'm going to select just the rotation. I have my transform box on, so I can hold command and just scale that down. And then I'm gonna do the same thing on Y position, scale that down. So I keep the motion, but I just make it less. Okay, cool. Um, and the other thing I might, I might mess around with too, is if I look at, if I click on this center of gravity, no.

Joey Korenman (43:24):

Um, there's a neck rotator. Okay. Um, and that might actually mean, it's probably, I'm guessing it's doing the same thing as the head rotation. Um, so it's interesting. So you actually have multiple controls that can kind of do the same thing. Maybe this is just an easier way of, uh, of doing it, but I've also got a, a chest rotation, um, which I haven't used yet, which, which might actually help, you know, cause w what this kind of feels like, it almost feels like the head is moving too much for the amount the chest is moving. So let's do the same thing real quick for the chest. So we're gonna put a key frame on chest rotation. Let's take a look at it. Here it is. And it should maybe be leaning back a little bit here at frame six. It should be leaning forward a little bit.

Joey Korenman (44:09):

Um, and that's probably too much, then we'll go to frame 12, copy paste, grab all three key frames, copy paste, go to the end, select all key frames, copy paste, select all key frames, easy ease. And there you go. And then let's, uh, let's offset that maybe one frame, because I know we offset the head, a couple of frames. We could do the chest by maybe one frame and all of these little subtle offsets. They start to make this make sense. Okay. So this is starting to work, and now it's down to the finishing touches. Um, if we, if we click on the, um, on the eyes now, um, first thing I want to do is move the eyes to the right a little bit. So I'm just going to nudge, I'm going to nudge this, and I just want Jenny to sort of be looking in the direction she's moving.

Joey Korenman (44:59):

Cause that makes sense. Um, and then there's controls on the eyes and all to, uh, to Amie her glasses. Um, and there's this cool, um, glasses bend, um, controller here. So I'm going to use that. Um, so I'm just going to bend them right on this position. Everything's moving down. So let me bend the glasses down just a little bit. It's probably too much, right. Add a key frame, and then we will go to frame six and you guys probably know what's going to happen next at this point. Um, and hopefully you're starting to see how, how quickly, you know, once you kind of get a groove going, how quickly you can start building a pretty decent walk cycle. All right. And, uh, let's, that's going to be offset that three frames, select all of these and, uh, let's really drag those Bezier handles out.

Joey Korenman (45:52):

Right. And so now you're actually going to get a little bit of animation action on the glasses and it's subtle and it's probably even still too much. Um, so what I might do is, um, grab that transform box, hold command, and just shrink it down a little bit. Cause, you know, I want, you want subtlety with stuff like this. You don't want it to look like her glasses are not really attached your face, just a sod, a little bounce you're getting. And w another great feature of this rig that, that Morgan added is you also have hair controls. And so what I can do is exact same thing. I'm going to open these up, separate the dimensions on each one and why don't we just do X and Y at the same time. Right. So, uh, why don't we start here and on this frame, everything should be down.

Joey Korenman (46:40):

Okay. So I'm gonna nudge everything down. Um, and I'm going to nudge them, I'm holding shift. Right. And, uh, and just kind of moving these things randomly. Okay. And, and, and it's D you know, all the weight's moving down and it's going to sort of pull the hair. It's probably going to pull the hair a little bit closer to her face, right. Because as the hair gets pulled down, it's going to wrap around her face a little bit more. Then as we move up in the air, right, the bangs are gonna come up a little bit, the right side of the hair is gonna kind of come out and up a little bit. And then the left side is gonna come out and up. Right. So, so this is going to kind of happen. And then on frame 12, we just copy and paste all of these.

Joey Korenman (47:28):

And then one at a time, copy and paste, copy, oops, copy and paste, copy and paste. There's actually a pretty cool script that I have seen on AA scripts.com that lets you paste key frames from multiple layers back onto the same layers, which would save some time here, select all of these and easy, ease them, and then move all the key frames back here. And I want the bangs to be offset, maybe two frames, and then everything else can be offset kind of randomly from there. Okay. And because I have all those extra key frames back here, I know it's going to loop seamlessly. Um, I also will go into my animation curve editor and just select everything real quick, like this, and just tweak, pull those busy handles out and let's see what that gives us. Okay. And so now that hair, and so you can sort of see the chain of events, right?

Joey Korenman (48:26):

The feet are the main thing, moving the center of gravity, slightly delayed. And then you've got sort of the belly, the chest, the neck, the head, the glasses, the hair, and the arms, and all of them are kind of offset in time. And that's going to give you a nice, you know, a nice feeling of weight and that's what you want when you're animating characters. So at this point, um, I mean, you could keep staring at this and nitpicking it. Um, and, uh, but you know, the, you, you should definitely have the tools now to create a pretty serviceable walk cycle and be able to adjust it, um, and understand just some of the basic principles of it. So now let me show you how to actually use this, um, on a background. So I'm going to now take this pre-con first time. Let me actually make a new comp here.

Joey Korenman (49:13):

Let me just make a 1920 by 10 80 comp. Okay. Six seconds long. And now we can actually go back to a, um, you know, sort of a normal, a normal workspace here, so we can, we can actually see things a little bit easier. All right. And I'm going to grab, um, that, that final rig that we made, I'm going to drop it in here and I'm going to scale it way down. Let's go down to half, whereas here and here is a little trick that I figured out. Okay. So now, um, you know, first we want to be able to loop this thing, right? We want it to just loop endlessly. And so what you can do, here's a real easy trick is you can just enable time remapping. Okay. And then extend the layer out however long you want. And I'm going to put an expression on the time remap.

Joey Korenman (50:03):

Okay. So if I don't have that expression and we ran preview this, you see what happens is it just plays through once and then it's just going to stop. And so I'm going to put an expression on it. That's going to automatically loop it over and over again for me. Um, and this is, uh, this is one of the most useful expressions. There is. Um, you can use it for a lot of different things, but for walk cycles, it's handy. So option, click the stopwatch type loop out, and you have to do it just like this lowercase loop, uh, you know, initial caps on out then in parentheses. Um, you need some quotation marks and you say, cycle close your quotations, close your parentheses. There you go. Loop out. And then in quotes cycle, and what cycle does is it plays whatever key frames you have on that layer, it's going to play them.

Joey Korenman (50:53):

Right. So it's going to go from zero up to one second and then it's going to cycle again. Now you can see we've got a problem here, which is, um, we are actually, we're getting this empty frame here. So what I want to do is go back one frame from this empty frame, put a key frame there and then delete the empty frame. And so now the next frame will be frame one. Now this is something that I don't truly understand, and maybe someone can explain it. This comp starts on frame zero, right? And then it goes to frame 24, which is one second. And when you do the loop out cycle thing, if you go to the next frame, it skips frames zero, it goes right to frame one. Now that actually works fine for what we're doing, because we want to skip either the first frame or the last frame so that we have a seamless loop.

Joey Korenman (51:45):

And so now, if I ran preview this, you see, I've got this endless seamless walking Jenny, which is great in order for this to actually be useful. She needs to be moving forward and she needs to be moving forward at the right speed. And that can be tricky if you try to do it manually. If I just say position and I separate the dimensions and I put a key frame here on X, and then I go here and I say, okay, move to here. And then I hit Ram preview, right? It's a K and it's close, but look at her feet, they're slipping, they're slipping. It doesn't look like she's gripping the ground and you can just keep tweaking that and trying to play with it and figure out what the right speed is. But there's a cool little trick. And this is what the trick is.

Joey Korenman (52:27):

Um, you need to add a guide, so hit command R if you don't have your rulers drag a guide out. Okay. And what you want to do is, um, you want to put that guide, you know, where the front foot is. Okay. And then you want to scrub through, okay, first, let me take off the, uh, the key frames here. There we go. Okay. The idea is the ground should not be moving. The layer should be moving. So that foot should never look like it's actually leaving. You know, it shouldn't look like it's slipping. So if you go forward one cycle, which we know is 24 frames, sorry, go forward one cycle of the foot. Right. So this foot moves backwards, 12 frames, and then it comes forward again. So in that 12 frames, I know that Jenny should move and I'm gonna put a key frame on exposition, go to frame 12.

Joey Korenman (53:20):

She should now be here. Okay. And if I play that, you can see that that foot looks like it's stuck to the ground, which is cool. Okay. But then it stops. So it was sure it would be great if I could just whatever speed this is happening. Just continue that like forever. Okay. Um, and so there's an expression that will do that for you. It's really pretty cool. Um, so hold option, click on the exposition. And it's actually the same loop out expression. So loop out and then print the C's quotation marks. And instead of cycle, you want to type in continue. Okay. And now what this does is whatever speed the, um, the key frame value is changing at on the last key frame, it continues that forever. And now let me zoom out and you can now see that we have a perfectly stuck to the ground perfectly times, you know, walking Jenny here, pretty cool.

Joey Korenman (54:24):

And then you can take, you know, a background and a, and you know, Joe was nice enough to, um, to give me this background to use. And there you go, you can put this one on whatever background you want. Um, what, what I did was actually, once you get the, um, once you get the, the character walking at the right speed, pre comp, that whole thing, right? So now I could, I could parent, um, I need to actually open up my, I need to open up a different column to be able to do this. Let me open up my parenting column. Uh, you could now parent this to the scene, and if you wanted to put like a little, a little camera move on there, you could write and, and do something like this. Right. Um, and so now you've got a character that walks and looks like, you know, they're actually attached to the ground and everything's great.

Joey Korenman (55:16):

Okay. Um, now I know in the example, animation, I actually had the character stop. Um, and I'll show you how I did that. I'm not going to walk through every step because it would just take too long. Um, but I will show you the workflow that I used for that. Um, so if I go to my final comp here and we look at this full walk cycle, what I actually have is two separate animations. I have my walking animation here. Right. But then at a certain point, I swap that out and I have a completely separate timeline here. Let me zoom out a little bit. And in this timeline, all I animated was one step and then stop. Okay. I animated this separately. And then in my pre comp, where I sorta worked out the speed that the layer needs to move at a certain point, I just swap out for the new rig that stops walking.

Joey Korenman (56:10):

There you go. And so now in the final copy, you can see that, you know, Jenny walks in right stops. There you go. I also added a little shadow and a little camera move a little depth to feel what you, but, um, you know, the, the technique I used to make it as the same one we just went through. So, uh, that was a lot of information. Again, I hope I hope these tutorials are not too jam packed. I know there is a lot in them. Um, but walk cycles are, you know, uh, I'm pretty sure if you went to, you know, if you went to like a character animation school, you might spend your first year on walk cycles and run cycles and really understanding how bodies work and how they move. Um, and you know, as a motion designer, you may not have that luxury.

Joey Korenman (56:56):

And frankly, you may not need it. You may never need to animate a character, this articulated. Um, but you will probably be asked to animate something, walking at some point. And if you know how to do it, and if you know the strategies, you are good to go. So I hope, uh, I hope this was useful. Thank you guys so much. Thank you. One more time to Ringling in, oh dear Lord. Here we go. Uh, stay tuned for the next day of 30 days of after effects. Thank you guys. Thank you so much for checking out this lesson. I hope it inspires you to start animating your own characters. And this lesson is really only the tip of the character animation iceberg. If you loved working on this walk cycle and you want to get in depth with animating characters, you'll want to check out our character animation bootcamp.

Joey Korenman (57:41):

It's a deep dive into the world of character animation taught by the magnificent Morgan Williams. You'll learn all about using the, to pose method of animation to bring your characters to life in after effects. And if you want to learn more about how to make a rigged puppet in after effects like the Jenny LeClue rig that we used in this lesson, make sure you check out our rigging academy. It's a self-paced treasure trove of rigging knowledge that will give you all the skills you need to create rigs, both simple and complex to use in your animations. Thanks again. And I will see you next time.

The All-Access discount is SOLD OUT, but you can still get 25% off all individual courses! We’ve been quietly rolling out our new All-Access program, where you can get every course we make for one low price. It’s a crazy good deal even without this sale. But until Wednesday 12/4, you can get it for 25% off. For this sale we are opening up 100 spots. After those sell out, you’ll have to wait at least a few months until we open more. Don’t sleep on this deal. We expect it to sell out fast.

ENROLL NOW!

Acidbite ➔

50% off everything

ActionVFX ➔

30% off all plans and credit packs - starts 11/26

Adobe ➔

50% off all apps and plans through 11/29

aescripts ➔

25% off everything through 12/6

Affinity ➔

50% off all products

Battleaxe ➔

30% off from 11/29-12/7

Boom Library ➔

30% off Boom One, their 48,000+ file audio library

BorisFX ➔

25% off everything, 11/25-12/1

Cavalry ➔

33% off pro subscriptions (11/29 - 12/4)

FXFactory ➔

25% off with code BLACKFRIDAY until 12/3

Goodboyninja ➔

20% off everything

Happy Editing ➔

50% off with code BLACKFRIDAY

Huion ➔

Up to 50% off affordable, high-quality pen display tablets

Insydium ➔

50% off through 12/4

JangaFX ➔

30% off an indie annual license

Kitbash 3D ➔

$200 off Cargo Pro, their entire library

Knights of the Editing Table ➔

Up to 20% off Premiere Pro Extensions

Maxon ➔

25% off Maxon One, ZBrush, & Redshift - Annual Subscriptions (11/29 - 12/8)

Mode Designs ➔

Deals on premium keyboards and accessories

Motion Array ➔

10% off the Everything plan

Motion Hatch ➔

Perfect Your Pricing Toolkit - 50% off (11/29 - 12/2)

MotionVFX ➔

30% off Design/CineStudio, and PPro Resolve packs with code: BW30

Rocket Lasso ➔

50% off all plug-ins (11/29 - 12/2)

Rokoko ➔

45% off the indie creator bundle with code: RKK_SchoolOfMotion (revenue must be under $100K a year)

Shapefest ➔

80% off a Shapefest Pro annual subscription for life (11/29 - 12/2)

The Pixel Lab ➔

30% off everything

Toolfarm ➔

Various plugins and tools on sale

True Grit Texture ➔

50-70% off (starts Wednesday, runs for about a week)

Vincent Schwenk ➔

50% discount with code RENDERSALE

Wacom ➔

Up to $120 off new tablets + deals on refurbished items

Success! Check your email (including spam folder) for your download link. If you haven't yet confirmed your email with us, you'll need to do that one time.
Oops! Something went wrong while submitting the form.
Featured
No items found.
No items found.