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

Automatically set keyframes to start/end at clip start/end?

Community Beginner ,
May 10, 2024 May 10, 2024

Copy link to clipboard

Copied

I have a simple scaling animation, with 4 total keyframes for subtitling. I have been searching the internet far and wide to find a way in which I can have the keyframes/animation automatically crop to the desired text duration, instead of having to select the two scale keyframes for each and every line of text and adjust them manually. The included photo is just an example of two lines of text. The four keyframes just scale the text from small to large, then from large to small at the end. I hope this makes sense, and appreciate any advice!

Screenshot 2024-05-11 at 1.05.48 AM.png

TOPICS
How to

Views

412

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 ,
May 10, 2024 May 10, 2024

Copy link to clipboard

Copied

I would create the animation using an expression that looks at time-inPoint and outPoint - inPoint, along with a couple of linear or ease interpolation methods. You can set the duration of the animation, the starting and ending values of the first two keyframes, and the starting and ending values of the last two keyframes. 

 

If you wanted the scale to start at 90, 10 and animate to 100, 100 over 20 frames starting at the layer in-point, then go from  100, 100 to 75 , 0 over 20 frames at the end of the clip, the expression would look like this:

 

t = time-inPoint;
animIn = framesToTime(20); // 20 frame starting animation
animOut = framesToTime(20); // 20 frame ending animation
stVal = [90, 5]; // Starting Scale
endVal = [-40, -80]; // Calculate ending scale as 60, 20
animEndStrt = outPoint - inPoint - animOut;
// Animations
sclUp = easeIn(t, 0, animIn, stVal, [100, 100]);
sclDn = easeOut(t, animEndStrt, animEndStrt + animOut, [0, 0], endVal);
// Combine the animations
sclUp + sclDn

 

When you get the animation looking the way your want it to, save the animation as an Animition Preset so you can easily apply it to dozens of layers at the same time.

 

I've probably created about 100 of these kinds of expressions to automate animations. Most of the time, I also incorporate some of the basic principles of animation, like squash and stretch, anticipation, staging, and slow in and slow out, and others as taught in "The Illusion of Life" by Frank Thomas and Ollie Johnson—a book that anyone creating animation should read about every couple of years.  Everything you see here can be automated using expressions:

 

 

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 Beginner ,
May 10, 2024 May 10, 2024

Copy link to clipboard

Copied

LATEST

Thanks so much for your response that helpled a ton. If I were to want to scale back down the animation at the end-point of the clip, what would that look like?

 

Example: My scale starts at 10, goes to 230, gradually goes up to 275, then quickly back down to 0 making four total keyframes. I also do ease out the first two, and ease in the last two. 

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