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

Moving Multiple Keyframes using Slider

Explorer ,
Jan 27, 2017 Jan 27, 2017

Copy link to clipboard

Copied

Hey everyone, back again with another question for you guys (I know, I bet you're thrilled)!

I'm back again with another question for you guys! So this question is more about convenience. I've searched all over the internet and have yet to find an answer even when it comes to after effects scripts or plugins, nothing seems to tell me what I want (or I just don't know what to type into google). What I'm wanting to do is move multiple keyframes on a timeline using a, for example, slider effects, let me show you an example of what I am wanting to do.

2017-01-27_16-06-07.gif

I'd like to be able to move those keyframes but with a control layer somehow, and possibly move others from other layers as well without having to manually go into every composition and such to move them to their places. This would be much more convenient if I was able to just move them all with, for example, a slider effect that tells the keyframes where they should be. If I could move all of the keyframes that the ending keyframe is moved to the exact same time as all the rest of them that would be amazing. I'm not really familiar with coding, I'm only slightly familiar with some java and mostly python, so obviously I can't figure this out on my own.
TL;DR: I want to be able to move multiple keyframes to a certain ending point in a composition, like 00:03:33:03 for example. If it makes a difference my compositions are all 60 fps.

Thank you so much for being a helpful community throughout my struggles of making things in After Effects. Even if this isn't possible, just telling me it isn't possible is good enough for me. Thank you!

PS: I do have the script called "Rift" but I can't figure out how it would integrate into this "problem"

Thanks,v
Elryst

Views

5.2K

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

correct answers 1 Correct answer

LEGEND , Jan 28, 2017 Jan 28, 2017

another take on what Rick has suggested is to use a marker to trigger the valueAtTime.

1. set a marker on the layer - this will be your starting point for triggering the animation

2. apply this expression for the property of the layer:

L = thisLayer;

valueAtTime(time-L.marker.key(1).time)

now your animation will start at the marker

Votes

Translate

Translate
LEGEND ,
Jan 27, 2017 Jan 27, 2017

Copy link to clipboard

Copied

this seems like something a script could do rather than an expression. have you looked into this? Trigger - aescripts + aeplugins - aescripts.com

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
Explorer ,
Jan 27, 2017 Jan 27, 2017

Copy link to clipboard

Copied

Roei Tzoref wrote:

this seems like something a script could do rather than an expression. have you looked into this? Trigger - aescripts + aeplugins - aescripts.com

This is close to what I'm looking for but not quite. I want to do specific keyframes and that plugin only allows me to do a whole composition or a whole layer, basically just time remapping which is easy to do manually anyways. I'm looking for something where I can move multiple keyframes in multiple compositions to a certain point where they all should end, if that makes any sense.

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 ,
Jan 27, 2017 Jan 27, 2017

Copy link to clipboard

Copied

You could use an expression for each property you wanted to control with a slider. The expression would be based on value at time and you would simply add the time value of the slider to the value of the property.

For example let's say that you added Effects>Expression Controls>Slider Control to a layer with animated position values. You would then add an expression to position and then add = effect("Time Slider")("Slider"); to the first line. Now the variable s defines the value of the slider. Now you need to call out time but you want to add or subtract the slider from time so you would add t = time + s; to the expression as a second line. The last thing you would do would be to use the valueAtTime method from the Expression Language Menu >Property list to the expression. That's all there is to it.

Screen Shot 2017-01-27 at 7.17.41 PM.png

Your final expression would look like this:

s = effect("Time Slider")("Slider");

t = time + s;

valueAtTime(t)

This takes the current value of the position and offsets by the number of seconds you dial into the slider. Simple as that. You don't need to build an array because all your are doing is modifying the value at time.

You can use this on any property that you are animating with keyframes. If you have also added an expression to the property that you want to slide around in time then you need to define a variable for the array you are driving (if you are driving an array) and then put this part of the expression at the end. There are times with this will not work with other expressions.

There is nothing keeping you from using one slider to drive every animated property on a layer, you'll just have to add the same expression to each property.

If you wanted to use the slider to count in frames of delay rather than seconds then you would add in a time/thisComp.frameDuration to the mix and a little more math. I'll let you figure that one out on your own.

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
Explorer ,
Aug 24, 2018 Aug 24, 2018

Copy link to clipboard

Copied

LATEST

Thanks Rick,, It work perfect for me, but it come in negative value, so if i need the keyframes start after 10 sec in must set the slider to -10, anyway i fix that by adding *-1 to the slider value so it come like this

s = effect("Time Slider")("Slider")*-1;

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
LEGEND ,
Jan 28, 2017 Jan 28, 2017

Copy link to clipboard

Copied

another take on what Rick has suggested is to use a marker to trigger the valueAtTime.

1. set a marker on the layer - this will be your starting point for triggering the animation

2. apply this expression for the property of the layer:

L = thisLayer;

valueAtTime(time-L.marker.key(1).time)

now your animation will start at the marker

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