Animation Nodes
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.
Text Input
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.
Text Grid
Add a 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 Vector Noise
.
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.)