Activity › Forums › Adobe After Effects Expressions › Delay + index PropertyGroup on Text Animator
-
Delay + index PropertyGroup on Text Animator
Posted by John Burgess on April 23, 2023 at 2:22 pmLooking to make a delay + index expression work with a text animator.
I’m guessing this needs PropertyGroup adding somewhere though was struggling to find much online.Was looking for the position of ‘Letter 2’ to delay ‘Letter 1’ and keep incrementing when duplicated
Brie Clayton replied 1 year, 9 months ago 4 Members · 9 Replies -
9 Replies
-
Dan Ebberts
April 23, 2023 at 3:49 pmI think we need more info on what it is that you’re trying to do exactly, and maybe an example of what it would look like.
-
John Burgess
April 23, 2023 at 6:44 pmHi Dan,
I was trying to achieve something similar to your classic delay expression but work on a single text layer using text animators
delay = 5; //number of frames to delay
d = delay*thisComp.frameDuration*(index - 1);
thisComp.layer(1).position.valueAtTime(time - d)
I want to be able to delay the position for every text animator in the stack. Like in the GIF
I know this can be done much simpler using a range selector but find the control if it lacking compared to delay and offsetting it by a set number of frames
-
Filip Vandueren
April 23, 2023 at 7:52 pmTo automate that all the ranges (which you duplicate yourself) are sequential:
Range, based on Characters index, from 0 to 1, offset has this expression:
thisProperty.propertyGroup(3).propertyIndex-1;
The first Animator has its properties keyframed (position in your example), the following ranges’ properties have this expression:
delay = thisComp.frameDuration*2; //
thisProperty
.propertyGroup(3)(
thisProperty.propertyGroup(2).propertyIndex-1
)
("Properties")
(thisProperty.propertyIndex)
.valueAtTime(time-delay)You’ll notice that the propertyGroup counts are not intuitive if you try to count up by eyeballing the levels of properties you see in the timeline, because there are some hidden levels: An Animator has a hidden propertyGroup of “Selectors” and a hidden PropertyGroup of “Properties”, and also the animators themselves are inside a propertyGroup “Animators”, all these levels are not represented by a twirly > in the timelines structures.
So, counting up from a property Position to the Pool of animators it is a child of takes 3 steps:
comp
layer ("Text") ("Animators") ("Animator 1") ("Properties") ("Position") -
Dan Ebberts
April 23, 2023 at 8:56 pmSince it’s all one text layer, did you consider using a single Expression Selector, where you could use something like this for the Amount:
delay = 5; //number of frames to delay
d = delay*thisComp.frameDuration*(textIndex);
d0 = delay*thisComp.frameDuration*(textIndex-1);
ease(time,d0,d,100,0) -
Filip Vandueren
April 24, 2023 at 7:37 amHey Dan,
I tried it, and for me this does the characters one by one like a square selector instead of with an overlapping delay.
The only way I can get a delay in an expression selector to work with custom keyframes/timings is to have the actual keyframes somewhere else (in another deactivated animator, or in a point control, on a Null…), because once a property is already keyframed down to 0, no amount between -100 and 100 is going to change it to be anything else.
My approach with Position expressions Selectors is to give the property a fixed value of 10,000;10,000 and then use the amount expression to use percentages to turn those into pixel positions. (It’s unfortunate that all selectors are limited form -100% to 100%)
I’d love to hear your thoughts on this technique, maybe there’s another approach with expression selectors?
-
Dan Ebberts
April 24, 2023 at 2:10 pmYou can get the expression selector movements to overlap if you decouple move time from the delay, like this maybe:
delay = 5; //number of frames to delay
dur = 7;
d0 = delay*thisComp.frameDuration*(textIndex-1);
ease(time,d0,d0+framesToTime(dur),100,0)But yes, the technique appears to be clamped to the range from -100 to 100, so it’s only suitable for specific cases.
Reply to this Discussion! Login or Sign Up