Creative Commons License

Advanced Text Animation

Last week we covered the basics of creating, editing and animating Text layers. However, we've only touched upon their full power - they have an advanced animation system which works a little differently than basic property animation.

When you change or keyframe most properties the change is applied to the whole layer. With text this often isn't the most efficient way to work. For instance, if you have a sentence with five words in it and you want to make each word fly on screen individually you would have to create five layers, one for each word, and animate each layer separately. Now what if you wanted to fly each character on screen individually - your timeline starts becoming extremely complex and unwieldy.

AE's text layers solve this problem by allowing you to apply property changes to a subset of the text on the layer. You can use a Range Selector to select a portion of your text and apply as many or few property changes to it as you want. You can also keyframe the Range Selector itself, so your property change can be applied to all or some of the characters on a layer over time. A group of properties and selectors is called an Animator, and you can apply as many Animators to a layer as you wish. This means you could have a single layer with several lines of text, and have each line animate in differently than all the others.

Applying an Animator to Text

Start by creating a text layer and adding a single line of text to it (all of this will be easier to comprehend if you start out simply). On the timeline, twirl down the triangle next to the text layer name to reveal the layer properties. Now toggle open the Text properties - you should see the options we talked about last week, 'source text' and 'path options'. To the right of the Text property name (in the next column over) is an option called 'Animate' with an arrow next to it (1) - this arrow reveals a drop down menu with a list of text properties (most of the properties that are available in the Character Palette). Choose a property to start with - I recommend starting with position as it is a property you are readily familiar with and it is easy to immediately see the effects as you change it. As soon as you choose your property an animator (called 'animator 1') will appear on the layer with a few options below it - 'Range Selector 1' and the property you chose - 'position'. Try changing the second position value (for the y axis, or vertical position) and watch what happens - all of your text will move up or down just as if you had changed the position value for the entire layer. Leave the value changed for now - this will let you see the effect as we change the selector.

Basic Range Selector Properties

When you changed the position value, the whole layer moved...this is because the default selector selects the entire text. To change this, toggle down the Range Selector 1 triangle to reveal it's properties - start, end, offset and Advanced. We'll start by looking at the first three.
This sets the beginning of your range, as a percentage of the entire text on the layer. If you look at your text in the comp window you will see a vertical line before the first character on the layer - this indicates the position of the start of your range. Change the start value and notice what happens - as you move the value the line moves, and characters before the line will snap back to their original position while characters after the line have the new position value added by the animator.
End is just what it sounds like - the end of the selection range. By changing both End and Start you can limit the position property you have added to a single character, word, or any segment of your original text.
Offset lets you move both the start and end of the range simultaneously. With this property you can animate a particular range moving through the text without having to try to keyframe both the Start and End of the selection in sync.
You can just use these properties to select a particular portion of your text, but the real power comes when you keyframe them.

For instance, change the position property's y-axis value to a value that puts your entire text off the bottom of the screen, but then change both the Start and End values to 0% so that the text is back on screen. Turn on keyframes for the End value and add a second keyframe somewhere further down the timeline with the value set to 100%. When you preview you should see the text slide in character by character as the range expands to include the entire line of text. By default the characters will transition smoothly from the original position to the new one - we'll look at how you can change this later.

Now turn of keyframes and try setting the Start and End values very close together, with just a couple of characters selected, and change the position value so that the selected characters are just slightly higher than normal. Keyframe the Offset value from -10% (so that it actually starts with no characters selected because the selector is before the beginning of the text) to 100% - when you preview you should see a ripple move across the text as the selector slides through.

You can see from these two examples how much time the selectors save - imagine having to create either of these animations using individual layers for each character. Even worse in that case would be changing the animation if it was too fast or slow - with the selector we can just change a keyframe or two and the speed of the entire animation is changed.

Adding properties to a selector

So far we've just been working with a single property, position. But what if you want the text to fade in as it slides offscreen? AE allows you to add multiple properties to an animator for just this reason - and each property will be affected by the range selector for that animator.

Next to the Animator name (in our case, 'animator 1') there is a drop down menu called 'add'. Click on this and choose 'Properties' to get a list of all available character properties. Choose Opacity and it will be added to your animator. Change the opacity value to 0% and then scrub through your Offset value to see how both the Position and Opacity values are added to the selected range.

Advanced Range Selector Properties

One of the options under your range selector is 'advanced' - toggle this down to see a list of the advanced settings:
This has two options - percentage or index. The default, percentage, applies the Start, End and Offset values based on a percentage of the whole text layer. Index applies these values to particular characters starting from the first one. Index can be useful if you know you want to select the 5th through 10th characters, for example.
Based On
This sets how the selector breaks up the selection. The default, 'Character', treats each character or space as a separate item. 'Characters Excluding Spaces' does the same thing but skips over empty spaces. 'Words' treats each word (group of characters with a space on either side) as a single entity - in the ripple example I gave earlier each word would move up and down instead of the individual characters. Finally, 'Lines' treats each line as a whole entity and moves it all together.
This sets how the effects of the selector will be combined with other selectors or animators on the layer when they overlap. For instance, if you have two animators with position properties set, and the selectors are set to add, the text will be moved up with the added position values. If you change one selector to subtract, the value of that animator will be subtracted from the other animator in order to determine the final position of the text.
This lets you change the percentage of the property change that is added to your selected text. For instance, if you have a scale property with a value of 200%, but you set your amount value to 50%, the final scale will end up at 100% (half of 200%).
Shape refers to the invisible shape of the selector itself. For the default setting, square, imagine the selector is a rectangular box around the characters inside it. Anything inside the box will be affected by the property change, anything outside won't be. The other shapes cause some of the characters in the box to only receive a partial amount of the property change - this allows a gradual change from the original property value to the new one at the transition point of the selector:
  • Ramp Up gives the text before the range start the original value, the text after the range has the new value, and the text inside gradually transitions between the two settings.
  • Ramp Down is the opposite of Ramp Up - the text before the selector has the new value, the text after has the original value, and the text within the slider transitions in between
  • Triangle makes the selection box a triangle, with the peak in the middle having the full value of the new properties and the text on either side transitioning back into the original value in a linear ramp.
  • Round is similar to triangle, except the transition has a smooth curve to it instead of a linear ramp up or down.
  • Smooth is halfway between Triangle and Round - it has a peak in the middle with curved ramps on either side, but the curve is more logarithmic rather than round.
It's worth trying out the different options to see how they change the selector transition, because it's much easier to understand when you see it in action than reading a description.
Smoothness affects how fast the characters transition from their initial state to the new property state as the selector moves across them. At 100% they animate smoothly from the initial state to the new one (in our position examples above they slide from one position to the next). At 0% they jump from one state to the next abruptly. Values in between basically change the speed with which they move - higher values are slower and smoother, lower values are faster and more jumpy.
Ease High
Easing affects how the characters change from the original to the new property and back. In this sense it is similar to the Shape control, except that the easing controls give you additional control over the transition shape. For instance with a Triangle shape the Ease High control allows you to make the peak of the triangle more or less sharp, so that the transition at the top of the shape is more or less gradual.
Ease Low
Ease Low does the same as Ease High but affects the bottom of the selector shape instead of the top.

Wiggly Selector

In addition to the standard Range Selector you can add another type of selector called a Wiggly Selector. The Wiggly Selector is applied from the same 'Add' menu we used above to add another property to an animator, but is listed under 'Selectors>Wiggly' (note that you can also add another range selector here if you like). The Wiggly Selector works within the main Range Selector but adds an element of randomness to the transition between the old and new property values. Thus, if you have an animator with a position property set to move the text up 10 pixels, the Wiggly Selector will make each character or word (depending on settings) move independently within a range of + or - 10 pixels up and down. Since you can keyframe the Wiggly properties you can make your text jump, scale, etc randomly but settle down over time, or start from a still state and then gradually get more jumpy over time.

The Wiggly Selector has several properties that affect how it is applied to the text - these are visible if you toggle the arrow next to the Wiggle Selector on your timeline:

This sets how the results of the Wiggly Selector are combined with the Range Selector to determine the final position of the characters.
Max Amount
This the max amount of the properties value that will be applied - so if you have a scale value of 150% then a Max Amount of 100% will allow the characters to scale up to 150% while a Max Amount of 50% will only go up to 125% (half the difference between the original and new scale).
Min Amount
Min Amount is the opposite of Max Amount - by default it is set to a negative number which will allow the property to change in the opposite direction of the original property change. So if you have scale set to 150% a Min Amount of -100% will allow the text to scale down to 50% (50% less than the original value instead of 50% more)
Based On
You can apply the wiggle values to characters, words, lines, etc just like the Ranger Selector.
Sets how frequently the values should be changed
This sets the amount of difference between different characters, words, or lines (depending on your 'Based On' settings above). With a 100% correlation they will all move in synch, with 0% they will all move independently.
Temporal Phase
This changes the beginning of the random pattern so that if you have multiple layers with otherwise identical settings you can use a different temporal phase setting to keep them from all moving in synch.
Spatial Phase
This takes the current pattern of text changes and moves it left or right through your text so that you can have a randomize change slide through the text.
Lock Dimensions
This locks the x and y dimensions of your scale property so that the characters or words won't distort from their original proportions.
The Wiggly Selector can give your text a more dynamic look, but it can also be difficult to make it do what you want. Take your time and experiment with each property to get a feel for how it affects your animation - remember that it's effects occur over time so you need to preview to see what's really happening.

Because of the complexity and power of the text animators it can be easy to get so overloaded on a layer that it becomes hard to get it to do what you want. I recommend starting out simply with just a single selector and one property, then try changing the individual components to see how they affect the text. In general you can create fairly sophisticated animation without too many keyframes if you carefully analyze the motion you want to create and break it down into it's individual components.

To explore the text animators further I highly recommend reading chapter 25 in the Creating Motion Graphics with AE, Vol. 1 book.