To see this example, load the example setup named expressions_text into Action. This example involves multiple text objects that move along a path, with each letter following slightly behind the last.
Each letter's position and rotation are created through the expressions in the following folder. The letter 'o' rotates its X-axis towards the direction of its movement. The align function is used to generate the rotation vector.
Each preceding letter sets its position and rotation an increasing number of frames behind the letter 'o'. The channel dummy_axis.position.x is used here to store a value determining the distance between each letter. The eval function is used to determine the values of the o_axis.position and o_axis.rotation channels at different points in time.
Channel | Expression |
---|---|
o_axis.rotation | align(o_axis.position) |
n2_axis.position | eval(o_axis.position, frame - dummy_axis.position.x * 1) |
r_axis.position | eval(o_axis.position, frame - dummy_axis.position.x * 2) |
e_axis.position | eval(o_axis.position, frame - dummy_axis.position.x * 3) |
f_axis.position | eval(o_axis.position, frame - dummy_axis.position.x * 4) |
n_axis.position | eval(o_axis.position, frame - dummy_axis.position.x * 5) |
i_axis.position | eval(o_axis.position, frame - dummy_axis.position.x * 6) |
n2_axis.rotation | eval(o_axis.position, frame - dummy_axis.position.x * 1) |
r_axis.rotation | eval(o_axis.position, frame - dummy_axis.position.x * 2) |
e_axis.rotation | eval(o_axis.position, frame - dummy_axis.position.x * 3) |
f_axis.rotation | eval(o_axis.position, frame - dummy_axis.position.x * 4) |
n_axis.rotation | eval(o_axis.position, frame - dummy_axis.position.x * 5) |
i_axis.rotation | eval(o_axis.position, frame - dummy_axis.position.x * 6) |