Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Forums Adobe After Effects Expressions Control the speed of appearance of a text

  • Control the speed of appearance of a text

  • Gregory Wannwitz

    October 26, 2021 at 12:45 pm

    Hello,

    I have a question on how to make letters appear at the same speed, even if the text has not the same number of characters.

    In my case, let’s say that I want to make a text appears at the rythm of 1 letter every 2 frames, the problem with keyframes is that the letters will appear slowly with a short text, and quickly with a long text.

    So I created a slider controler linked to the source text (text.sourceText.length;) that return the number of characters of the text.

    Then I created another slider controler (named “Animate On”) linked to an “Opacity Animator” on the Start value, with wich I can key the start and end value (On Start value:

    V = linear(effect(“Animate On”)(“Slider”),0,100,0,effect(“Character Count”)(“Slider”));

    Math.round(V);

    and on End value:

    effect(“Character Count”)(“Slider”)

    But here is the problem, the speed is variable depending on the length of the text.

    I looked for a way of making the letters appearing at the same speed but I do not find any solution.

    I put a simple project to see, because it is hard to explain in detail.

    If someone can help me here, it would be great help.

    Thanks in advance.

  • Tomas Bumbulevičius

    October 27, 2021 at 6:57 am

    Hey Gregory, first of – well done that you uploaded a project file to test with. Its a lot easier to find a workaround this way!

    I think it can be simplified, but a few things to clarify:
    1. Essentially, what you need to achieve is for phrase to animate phrase in a constant speed. Depending on their chars count, animation will change in duration if its 1letter / 2 frames. Is this correct assumption?
    2. If above is correct, keyframes has to go away completely from animate On slider. As now its the reason why animation duration is not constant for each letter. You are forcing it to fit within 20 frames, disregarding phrase length.

    Based on above thoughts and with least changes to existing structure.

    ~ Remove keyframes from Animate On;
    ~ Set Animate On slider to setting, for characters animation count/frame. 1 will be 1char every frame, 2 stands for 1 char every 2 frames, etc.
    ~ Remove keyframes from Range Selector.

    Apply below expression to achieve this, applied to yours Animator 2 Range Selector 1>Start.

    var animSpeedPerChar = effect("Animate On")("Slider");

    var numChars = effect("Character Count")("Slider");

    var frameDur = thisComp.frameDuration

    var animLength = animSpeedPerChar * numChars * frameDur;

    var res = linear(time, 0, animLength, 0, numChars)

    Math.round(res)

  • Gregory Wannwitz

    October 27, 2021 at 7:44 am

    Hello Tomas,

    Thank you very much for your answer, it is a really smart way of making it working ! And it is easy to change the speed with the use of the slider.

    I was totally struck with my keyframes as you understood it.

    There is so many ways to achieve the same result with expressions that you can easily go in a wrong direction and lost yourself.

    Thanks again.

  • Tomas Bumbulevičius

    October 27, 2021 at 3:02 pm

    Gregory, no worries, glad I understood the needs! There are without a doubt many ways on achieving the same things through a different technique – thus, don’t hesitate to explore the options – only though trial and error ideas pops in front of us. Good luck!

Viewing 1 - 4 of 4 posts

Log in to reply.

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy