Animation Nodes is a blender add-on for visual scripting. See the Docs for more info. As you haven't worked with Animation Nodes before, I'll be a bit more specific i nmy explanations.
This is an all-AN-solution, if you don't care about creating the text object inside AN, you can skip the first 2 Steps and just create it by hand.
We have different options to get our text into animation nodes including but not limited to:
- Text Block Reader reads a text block in Blender. Best for multiline text.
- Text Input if you only have a few words
- Random Text thats what I am using here, so I don' have to think about words.
After you have typed in your text, linked a file or created a random string you have the possibility to process the text further. Repeat it, trim it, change case etc. Press shift + a and look through the different text nodes, I think they are easy enough to understand.
I'll go with some uppercase repetition similar to your example.
Creating A Text Object
We need to tell Blender, that we want a text object in the scene. We use an
object instancer to create that object and an
object output node to fill it with our text.
Separating the Text
Thats probably the most difficult part. Add a
Seperate Text Object Node, select the Text Object you just created and click update.
Grid Mesh Generator, that creates an easy to control grid for us. We use the vertex positions (through the
Mesh Info Node) of this grid to align our letters with an
Object Transforms Output. We won't actually see the mesh in the viewport or the renders.
If we didn't care about the order of our text that would have been it. Unfortunately...
The vertex indices start in the bottom left and go up, we want them to start in the top left and go right. SO we need another step:
Ordering the grid vertices
We rotate the grid by 90deg with a
Transform Matrix and a
Compose Matrix node and reverse the vertex list with a
Reverse List node. Great.
This was basically just the Animation Nodes Setup. There are a lot of different ways with Animation Nodes to achieve the scaling, I'll show only one. But maybe that helps you experiment a bit.
Scaling each Letter
This is one possible Node Setup:
What is happening here?
We use the vertex location to create a random value for each location using a
Vector Noise node. As we dont want our letters to scale different in each direction, we are happy with 1D noise. The Vector Noise node outputs negative numbers, so we add 1 to always kepp them positive. you could use a Map Range node so you'd have more controll over min and max values instead. We then compose a vector out of the noise value. The same value for X,Y and Z because again: we want the scaling to be uniform.
To animate the noise I use a
Vector Wiggle Node in combination with a
Time Info node to change the offset of the
That's it. If you have any questions, let me know.
(Thats a long answer, but in the end you need 15 nodes. Thats managable imo.)