|The new loop expressions can be a little confusing until you get used to them. Basically, you define the region that you want looped by setting one or more keyframes. Then, the type of loop expression you use determines whether looping occurs before the first keyframe (loop_in) or after the last keyframe (loop_out). The parameters that you provide determine the nature of the looping (cycle, pingpong, offset, or continue) and the duration of the segment that gets looped. An example might make things more clear. Lets say that you have an animated sequence at the start of a layer and you want it to repeat over and over for the duration of the layer. You might use the following expression in each of the animated properties:
(Note that Adobes documentation shows these expressions in the form loop_out(type= cycle, num_keyframes= 0), but you can safely leave out the type= and num_keyframes=. I prefer the shorter form and thats what well use in this tutorial).
This expression tells After Effects to take the sequence between the first and last keyframes and, starting from the last keyframe, repeat the sequence until the layers Out point is reached. Note that the second parameter defines the length of the sequence to be looped by telling After Effects how many keyframes (counting backwards from the last one) to loop. A zero in this parameter says to use all keyframes. The expression given above is probably the one you will use most often and its the one well use for the walk-cycle animation.
O.K. Let's Begin
Go Ahead and open the loop_project file in After Effects. Then open the intro comp. This comp has layers set up with position keyframes and loop_out expressions applied. You will want to examine the various layers in this comp to see how the loop expressions work. Ive set these up so that the keyframes start one second into the comp so that you can see that nothing happens before the first keyframe. Select the cycle_1 layer. As you examine each of these layers, youll want to make sure that it is the only layer visible (besides grid) and that you hit the u key to expose the keyframes in the position property and that you open the little twirly so you can see the expression. Step through the keyframe area and beyond. You might expect, since this is supposed to be a cyclic loop, that the segment between the two keyframes would loop over and over. Thats not quite what happens as youll notice as you move past the keyframed segment.
at first frame of new cycle, box does not return to starting position as expected
It seems that the cycle flavor of loop_out works best when the starting and ending positions are the same. Toggle the visibility of cycle_1 off and turn cycle_2 on. Youll see that weve solved this little anomaly by adding one more keyframe and moving the square back to the starting position. Now it works the way you would expect. This is something that you need to keep in mind when using cycle. Toggle off the visibility of cycle_2 and turn on ping_pong. As you step through this layer, youll notice that it works exactly the way you would expect the little square moves back-and-forth along its path. Turn off ping_pong and turn on offset. Youll see that the offset version repeats the motion but starts from where the previous cycle left off. Turn off offset and turn on continue. Ive changed the path somewhat for this example so you can more easily see the effect. Youll notice that the little square keeps moving with the direction and velocity it had at the last keyframe.
Feel free to experiment with these layers until you feel comfortable with whats going on. Id recommend changing the expressions to the loop_in variety and seeing that the looping action now occurs before the first keyframe. You might also want to experiment with the num_keyframes parameter, although 0 will probably be what you use the most often. Also try the loop_in_duration and loop_out_duration varieties, where the second parameter is time (in seconds) instead of keyframes.
Go ahead and open the model comp. This comp is an Illustrator file that was imported as a comp. It has a separate body part in each layer. To keep things somewhat simple I made each arm as only one piece and the head is combined with the torso.
exploded view of model showing the pieces
Ive taken care of the animation of one cycle of the walk-cycle (since the focus of this tutorial is using the loop expressions, not character animation), but Ill briefly go over what I did. The first step was to move all the anchor points to the center of rotation for that body part. For the feet this would be the ankle, for the lower legs its the knee, for the upper legs its the hip joint, and for the arms its the sholder joint. I did this in the comp window using the Pan Behind tool.
repositioned anchor points
After the anchor points were in the correct positions, I stitched the character together by establishing parent relationships. Look at the parent column in the time line and youll see that the torso is the parent of the arms and the upper legs, the upper legs are parents of the lower legs, and the lower legs are parents of the feet.
This means that when, for example, an upper leg is rotated, it will rotate around the hip joint and the lower leg and foot will follow. I started the animation with the legs at their maximum distance apart and set rotation keyframes for the arms, upper legs, lower legs, and feet and a position keyframe for the torso. I copied all these keyframes and pasted them in at the end of the cycle (1:02 in this case). I other words, at time 1:02 our model will be back to her starting position. Then I went to the halfway point ( 0:16) and swapped the left and right values. That is, halfway through the cycle the model will be in a position that is reversed from the start of the cycle. Scrub through the timeline and youll see what I mean. I then stepped through the cycle, adjusting the rotation of the limbs to generate a smooth motion. I changed all the keyframes to Bezier to smooth out the action even more. This is really the time-consuming part adjusting the positions of the body parts to give a convincing walking motion.
keyframes for walk-cycle
Adding the Loops
Once youre happy with the cycle, its time to add the loops. If you twirl down the rotation property of one of the limbs or the position property of the torso, youll see that Ive applied the loop_out(cycle,0) expression to each. Youll notice that even though the last keyframes are at 1:02, the walk-cycle repeats to the end of the comp.
You might be thinking that its kind of a pain to enter an expression for each body part (really its not you just copy and paste). There are, of course, at least a couple other ways to accomplish the same looping effect. You could pre-render the walk-cycle, re-import it and set the layer to however many loops you want in the interpret footage dialog. Or, you could copy and paste the keyframes repeatedly to the end of the comp. One advantage of doing it with expressions is that if you need to tweak the walk-cycle in some way to make it look better, you just turn off the expression, make the adjustment, turn the expression back on and youre done.
Go ahead and open the final comp. All Ive done here is animate the model comp moving from left to right at a speed such that her feet dont slip. Try moving the last keyframe around and watch the effect it has on how her feet contact the ground. I also added a ground layer for her to walk on and a little drop shadow.
One More Thing
If you open the extra comp youll see another trick thats pretty cool. For this comp I used a version of the model comp that has the loop expressions removed (model_no_loops). For this layer I enabled Time Remapping. If the time remapping keyframes arent already visible, select the model_no_loops layer, type rr on the keyboard, and open the Time Remapping twirly so you can see the expression. When you enable Time Remapping, After Effects sets keyframes at the start of the layer and one frame past the Out point of the layer. I moved the Time Marker to 1:02 and set another keyframe. Then I deleted the last keyframe. Then I added our old friend loop_out(cycle,0) to the Time Remapping property.
time remapping applied
If you scrub through the timeline, youll see that the results are the same as the final comp. Whats so cool about that? Well, for one thing, you only have to enter one expression instead of one for each body part. Also, now you can adjust the walk-cycle in the model comp without having to disable and re-enable the expressions.
Feel Free to discuss this technique in the After Effects forum here at CreativeCOW.