Animating text

I would like to animate text but I cannot figure out how. What I want to animate are the characters displayed. for example:

Frame 1-50 displays the text “Hello”
Frame 51-100 displays the text “World”

I know I could make two instances of the text and display them one at a time, but for what I’m doing I would need 125 text objects. So, is there a way to animate it so the characters change?

Blender can not animate a string type parameter at this time. There are some scripting solutions for such a task.

Hmmm… You don’t say exactly what you want to do so you’ll get only vague answers.

To make various texts appear the one after the other, you can just keyframe the renderability in the Outliner, and the visibility too to make things clearer. (Layer animation has been “fixed”… i.e. it doesn’t work any more.)

For your example, on frame 1, you set “Hello” as renderable and “World” as not renderable. You keyframe the 2 states. On frame 50, you inverse the renderability of the 2 texts, set the 2 keyframes. Then at frame 100, you set “World” as non-renderable. Animation done!

If you want to get fancy or instead of animating the renderability, you can animate the materials thanks to a mixer node to choose in between the “real” material and a fully transparent one. Animating the mix factor allows you to have tweakable fade in/fade out effects… which can as well be instantaneous and produce the same effect than animating the renderability.

Any way, I would always consider animating the renderability first. Less objects means faster rendering. Saving a few ms per frame turns quickly into seconds then into minutes… eventually into hours.

As for the 125 text objects, I can’t say much. I don’t know what you want to achieve.

Last, I think you may want to look at RE:Lay and RE:Phrase which might interest you:

Sorry for the lack of detail. I am making an animation that will be displayed on a laptop screen to make it look high tech. Vaguely along the lines of the GUI presented in this video on YouTube. One of the elements requested in my project is four sets of numbers that “randomly” cycle at a high rate. Numbers used in one set, for example, could be:
23.4; 24.5; 75.4; 1.34; 2.3; 225.45; and 64.8
each would only be displayed for maybe 2 frames each. If someone knows a plugin I can use, it would be very appreciated. Or if someone could write one, because Python is one language I have yet to try.

Short answer is no. Long answer is “smoke and mirrors”.

Make the text object with all the words. Then use a mask to display the words you want to see. Animate the mask. You can use rotobezier to do it or the newer compositing mask feature (though I have not tried it with the latter)

Ah, if you are only trying to randomly display data that can be achieved with the particle system. Create each text or number and add them all to a single group and move them to an unused layer. The trick is in the way you setup the Emission parameters. In this example I have a single vertex mesh emitter. Yep, I created a plane and threw away all vertices except 1. Then I added a particle system to it. I set the particle system to vertex emit mode which means particles can only appear at that location, the vertex location. Now I set the particle count to 90. I set the lifetime to 2 frames. To determine the End time multiply lifetime times particle count. So 180 is my end. This means a particle will be generated every two frames then die and be removed from the scene. The particle Render is set to display a group that is picked from randomly. When you play the system the effect is a single particle that appears to randomly change between all the entries in the group.

To increase the rate, lower the lifetime setting (re-calculate the End time also). You can not go lower than 1, however.

As a side note, if you turn off Pick Random in the particle system the particles chosen from the group will be sequentially displayed in the reverse order that you added them to the group. Last in First Out (LIFO).
So you could plan specific phrases and display them sequentially over time using this technique as well.


26_random_text_numbers.blend (85.5 KB)

Oh man, I can’t believe I didn’t think of that. Wow, thanks a ton!

Yeah, that worked perfectly. It’s funny because I knew how to do exactly that. I Just didn’t think to use that system in that manner. Thanks! Mark as Solved.