Tutorial 69: Text Box Reveal Template
Here is another text template tutorial. This time, we are using Text Background Boxes to add styling and complexity to a simple text reveal. But, thats not all. I used Unicode Offset to further scramble text, as it animated on. However, to make it even more complex, I only used Unicode Offset on an Index Range, which dynamically tracks to one of the Text Background Boxes.
This one is quite an advance setup for sure.
Text Background Boxes
Main setup of this tutorial was to have an option to control graphical elements (background boxes, squares, outlines) from a single place – text layer. Change text and all the backgrounds automatically change. In Cavalry, it’s super easy to do. Text > Background > Click on (+) sign. And you have a background linked to the text layer.
If you duplicate this background, it will stay linked to OG text layer. This way, you can control multiple backgrounds from a single place – text layer. It’s 100% responsive, vector based and follows the main text. Perfect.
Visibility Sequence + Value Behaviour
Idea is simple – show only 2-3 boxes around characters, as the text animates from 0-100%. Visibility Sequence imitates text string resize effect – text trim. I wanted to setup an “Animation Control” layer in the form of a Value Array. This lets me “collect” multiple controllers in one place and easily update all the linked properties from one place.
Animation Control – Animate In – 0-100. This drives Text > Visibility Sequence > End property. Then I’m “feeding it” to the Text Background (via Sub-Mesh > Visibility > Visibility Sequence > End Property). What we have at this stage is Text that reveal itself, and background that follows.
The challenge was to hide the background, with a slight delay. By using Value Behaviour on Visibility Sequence > Start property AND using same Animate In values, we can animate text backgrounds IN and OUT at the same time. Simple Time Delay on Value Behaviour lets us delay the animation out and have an interesting “trailing effect”.
Chain Properties Together
From above description you get the idea behind initial setup. Text animates in, background animates in and out at the same time, with a slight delay. Now, to have multiple text boxes, outlines and backgrounds “follow”, we need to chain them together.
- Text In
- Text Background End – In
- Text Background Out follows with Delay
- Text Outline – In (use Text Background Out data)
- Text Outline Out follows with Delay
- Text Background Start – In (use Text Outline Out data)
- Text Background Start Out follows with Delay
That’s about the whole idea. One layer drives another one, which drives another one, which drives another one. Each of these layers, follows “previous one” with a delay. That’s about it. All in sync, all following Text size, length of string and more.
Indicies – Hardest to Setup
Current problem with Cavalry is that it has few systems that use different data. For example, Unicode Offset uses Indexes to select, which character to “shift”, while Resize String allows us to use Percentage of Total String. This makes it difficult to apply certain effects to Strings consistently. This is why, I used Number Range to convert Animation In (0-100) to o – String Length value. This allows me to select characters by Index with a “percentage” equivalent value.
Second problem is that Indices can’t be keyframed. So, we need to create a system that allows to apply keyframes or link data, so we get Indices “on the other end”. This is why, I ended up using following chain:
- Unicode Offset > Indices
- String Array – No Indices OR Indices Range
- Add Logic Gate here with Comparison Layer
- String Generator – Formatted String – create Indices Range from 2 inputs
- String Generator – Value – use Number Range to convert animate in 0-100 to Indices (Indices Range – Start)
- String Generator – Value – use Number Range to convert animate in 0-100 to Indices (Indices Range – End)
This is pretty complex setup to visualise, so I hope I was able to demonstrate it well enough in a tutorial. In simple terms, we are detecting where Rectangle outline is, in terms of Character Index, and set Start and End Range accordingly. Then, we turn it off, once the Rectangle outline finishes animating.
Hopefully, in the future, developers will add percentage sliders, so we can animate Unicode Offset and other text manipulators with simple 0-100% sliders.
This project file contains all the assets necessary to make animation in the tutorial in final form. Everything is labeled, linked, with expressions and ready to use, if you wish to make your own version or just play around with it.
If you have any suggestions for tutorials or how I can improve, please do get in touch. I would love to hear from you.




