ADOBE AFTER EFFECTS: Forum Expressions Tutorials Creative Cloud

Character text delay based on position over time using a null

COW Forums : Adobe After Effects Expressions

<< PREVIOUS   •   FAQ   •   VIEW ALL   •   PRINT   •   NEXT >>
Emmanuel Roba
Character text delay based on position over time using a null
on Aug 2, 2018 at 6:30:22 pm
Last Edited By Emmanuel Roba on Aug 2, 2018 at 6:41:50 pm

I wanted to create a per-character delay using textIndex via the Expression Selector, but with a lot of google and trial and error... i got bupkis. (nothing)
I was also wondering about pic-whipping the position value in the text animator to a null. So that any animation with the null could be pushed to the text layer that would get delayed. (per-character)

basically after writing all this I found a plugin that does exactly this: TextDelay

but I really want to know how to do this with only expressions.

any help would be appreciated.

also: most of my knowledge comes from those underground Dan Ebbers expression pages. (it helped me so much)

more info: i did check the section of the text expression presets and found it was possible to delay per character animation (text bounce) but I dont know how to modify that to my needs.

even more info: is it possible to control the delay with an expression slider?

thanks in advance!

one more question? why is information about after effects especially expressions so hard to find? and when i do find info its usually outdated? and the community is not dead b/c after effects is still used by everyone, so why is the community so dead?


Return to posts index

Kalleheikki Kannisto
Re: Character text delay based on position over time using a null
on Aug 2, 2018 at 6:49:24 pm
Last Edited By Kalleheikki Kannisto on Aug 2, 2018 at 6:50:14 pm

The expression selector returns, as a percentage value, the amount of the effects being applied to a specific character or word by the text animators. So to move the characters, you will need to apply a position animator. The expression selector only says how much each letter will be affected by the position animator. Based on that logic, can you figure out what will happen with the following text expression selector code if you have a position animator on the text that moves it up by 100 pixels?
100-time*25+textIndex*25

Kalleheikki Kannisto
Senior Graphic Designer


Return to posts index

Emmanuel Roba
Re: Character text delay based on position over time using a null
on Aug 2, 2018 at 7:51:53 pm

its working! but its really wonky. they are not delaying evenly. (spaced out properly)

i still have a couple of questions:
could you explain the logic?
where would i add a slider expression to control the delay?

also I was able to pic wip the position in the text animator to a null but i wanted to separate the dimensions because they needed separate functions. that part worked but putting them back together pulled up a global error. how do i go about this?

also: i just realized im pretty new to this even with years of simple expressions

p = thisComp.layer("Null 1").transform.position[0] + 253
q = thisComp.layer("Null 1").transform.position[1] + 142
[p,q];


Return to posts index


Emmanuel Roba
Re: Character text delay based on position over time using a null
on Aug 2, 2018 at 11:48:15 pm

after some more searching I understand the logic now but I still can work around the delay part.

im only replying to the fact that i forgot my stupid semicolons.

i will edit the main post and my reply accordingly.


Return to posts index

Kalleheikki Kannisto
Re: Character text delay based on position over time using a null
on Aug 3, 2018 at 7:12:22 am

You really have two main factors that everything else is based on: textIndex and time (and the fact that you are outputting a percentage of effect strength). The only thing that is different between the characters (or words) is the textIndex value, so your delay will have to utilize that. Since the textIndex differs by just one unit, you will want to multiply that to get more separation between letters, otherwise the difference is just one percent. Time will control how fast the motion happens. Again, by itself, one second would come out as one percent, so you'll need to multiply that unless you want to wait 100 seconds for the full animation to take place. Fancier variations build upon those two basic factors. I'm sure there are more scientific ways to look at this, but those are pretty much the first things to consider.

Kalleheikki Kannisto
Senior Graphic Designer


Return to posts index

Emmanuel Roba
Re: Character text delay based on position over time using a null
on Aug 3, 2018 at 3:01:58 pm

after your response I looked back into the whole expression selector features and now I completely understand the concept.
it worked but in reverse.

I think its better to show you.
12605_cgpgreystripped.aep.zip


Return to posts index


Kalleheikki Kannisto
Re: Character text delay based on position over time using a null
on Aug 3, 2018 at 4:48:07 pm

Oh, I see, you actually used my expression there. That was just meant as an example of something that uses time and text index, not specifically meant as the expression applicable to your situation. Anyways, you could modify it in this way to get closer to your goal:

Math.max(-100+time*50+textIndex*25,0)

This way it is going from 0 to 100 with a delay between characters.

Kalleheikki Kannisto
Senior Graphic Designer


Return to posts index

Emmanuel Roba
Re: Character text delay based on position over time using a null
on Aug 3, 2018 at 5:42:40 pm

ahh! finally! thanks so much!

it works as planned but even with some modifications I cant seem to get it to follow my easing curve.

would there be a way to code that in?


Return to posts index

Kalleheikki Kannisto
Re: Character text delay based on position over time using a null
on Aug 3, 2018 at 7:40:29 pm
Last Edited By Kalleheikki Kannisto on Aug 3, 2018 at 7:43:17 pm

The letters don't really follow the motion of your null, they just tend toward the position where the null is at a given time by the given percentage. Which means easing the null motion will not result in easing in the text animator. To add ease to the motion of the characters, you need to ease the expression selector percentage value itself. An "easy" ease would be:

v = Math.max(-100+time*50+textIndex*25,0);
ease(v, 0, 100, 0, 100)


Kalleheikki Kannisto
Senior Graphic Designer


Return to posts index


Emmanuel Roba
Re: Character text delay based on position over time using a null
on Aug 6, 2018 at 2:15:27 pm

thank you so much for the help!

really appreciate it.


Return to posts index

<< PREVIOUS   •   VIEW ALL   •   PRINT   •   NEXT >>
© 2018 CreativeCOW.net All Rights Reserved
[TOP]