• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Question: parent a property to child layers starting at different times

Engaged ,
Jun 18, 2020 Jun 18, 2020

Copy link to clipboard

Copied

Hi all,

 

I need help from people smarter than me! I can't figure out how to do something that I'm sure there's an easy way to do. Here it is:

 

In Comp A, I've got a template for an entrance effect on a line of text (it's a text animator that fades text in from left to right). In Comp B, I've got several additional text layers that I want to apply the same effect to, and the obvious way is to parent the text animators for each layer in Comp B to the one in Comp A (the end state to be that I only need to change it in Comp A and have the change propagate throughout the entire project, so I don't have to go through and change every one if I decide to make a change).

That part's easy.

This is the part where I need help: the text layers in Comp B will come in at different times, but when I parent the text animators, they all follow the time from Comp A. (So, in other words, if I set the animator in Comp A to go from 0:00:00 to 0:00:15, all of the animators in Comp B will work at those times, regardless of the mark-in time of the text layers in Comp B...so if any of those layers come in after 0:00:15, the text won't animate because by the time the layers start, the parented animation is already done.)

Thus, what I'm looking for is a way to parent a property from one comp to another, but have the parented animation start at the mark-in time of the text layers in Comp B. (And it has to be a dynamic expression, because after Comp B will be Comp C, D, E...and so on, and they're all going to have different times.)

Has anyone figured out how to do this?

TOPICS
Expressions , How to

Views

124

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Jun 18, 2020 Jun 18, 2020

Copy link to clipboard

Copied

Could be as trivial as adding/ subtracting a few frames/ seconds or a fixed offset like the in point along the lines of myAnimator.valueAtTime(time-thisLayer.inPoint) with "myAnimator" apparently needing to be the reference to the parent comp...

 

Mylenium

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jun 19, 2020 Jun 19, 2020

Copy link to clipboard

Copied

LATEST

The most efficient way to do this is to create an animation preset. You have two options for setting up the timing. The first is to set the animation preset up so that the animation starts at the first frame of the comp. When everything is the way you want it to be, select the layer, Select all of the properties that you have modified that you want modified and then save that selection as an animation preset. 

 

Now you can just apply the animation preset to any text layer in the comp and the animation will start where the CTI (current time indicator) is parked. This is how almost all of the text animation included with AE work. Set the CTI where you want the animation to start, apply it, and that is when the magic happens.

 

The second option is almost the same. YOu create the animation but instead of setting keyframes, you write an expression that animates the transition based on the layer inPoint. Then all you have to do is drop the text layer in the comp, apply the preset, then adjust the in point of the layer. This can be faster than Sliding a bunch of layers in the timeline. 

 

The following expression will animate a range selector from 0 to 100 in 1 second and it will always start at the layer in point.

 

t = time - thisLayer.inPoint;
ease(t, 0, 1, 0, 100)

 

 

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines