Menu

Tutorial 158: Noise Fields and Text

Joe Clay | Jan 11, 2019

This week, inspired by Kyle Hamrick's #textperiments on twitter, we explore using noise() for randomization within text animators. Unlike traditional randomization like the Wiggly Selector, using noise() allows us to keep the randomization of nearby elements similar—sort of like the Noise effect versus the Fractal Noise effect.

With this technique, we can get really interesting movement and reveals—especially when combined with the range selector. You can expand on this technique by using more graphical characters, custom fonts, and even icon fonts so, as always, I encourage you to experiment. We've only scratched the surface in this tutorial.

Make sure to check out Tutorial 34, 35, and 36 for more information on the Expression Selector.

Expression Code

Here's an expression for 1D noise.

x = textIndex + time/thisComp.frameDuration;
x *= effect("Noise Scale")("Slider");
noise(x) * 100;

Here's an expression for 2D noise linked to three sliders named Noise Scale, Speed, and Scale. I added in the variable n so that you can quickly modify the number of characters in a row.

n = 3; //change to number of characters per row
y = Math.floor(textIndex/n);
x = textIndex % n;
if(x == 0) {
    x = n;
    y -= 1;
}
speed = time/thisComp.frameDuration * effect("Speed")("Slider");
x += speed;
y += speed;
x *= effect("Noise Scale")("Slider");
y *= effect("Noise Scale")("Slider");
noise([x,y]) * effect("Scale")("Slider");

To incorporate another range, or possibly even another expression selector, modify the final line to look like this. It is important to divide the selectorValue by 100 because we want to use it as a percentage to scale the final result.

noise([x,y]) * effect("Scale")("Slider") * (selectorValue/100);

To reverse the noise direction, before doing anything else subtract like this. We'll set that to a variable i just in case we need to use it in more than one place.

i = textTotal - textIndex;

That way you can use i like so:

//2D noise
x = i % n;
y = Math.floor(i/n);
// 1D noise
x = i + time/thisComp.frameDuration;

Then you can get fancy and make a checkbox to reverse the direction by changing the value of i. There's a lot that can be done. Experiment! This technique goes way deeper than I've explored in this video, so I hope you can take these examples and build on them!

Grab the Project Files

Get the project file through our Gumroad Store. This project file contains all of the examples, textures, and graphics shown in the tutorial, plus a few small updates. This project file was made in AE CC 2019 (v16) but a file is included that will open in v14+.

If you're buying project files, consider becoming a Patron. At the $5/mo. tier, you get access to project files as they come out and some tutorials also come with additional BTS content showing more of the builds.

Get the project on Gumroad

Become a Patron

If you'd like to help support Workbench, check out our Patreon page. Thank you for even considering clicking this link to support what we're doing. We appreciate it. Patrons get all sorts of benefits, from additional files to early product releases depending upon the tier.

Check out our Patreon Today