Menu

How To Offset Layers in After Effects

MA-Tutorial 30-Offset Layers from Motion Array on Vimeo.

Introduction

Hey everyone, this is Owen with Motion Array and in this tutorial I’ll be showing you how to create an offset animation. In this case we are going to offset both time and position to create a lower third animation. Alright, let’s get started. .

How To Create An Animated Wiggle Effect In Adobe After Effects

This text has been transcribed from the video for optimal reading

Begin by making a new composition (1920x1080 29.97fps) and call it “Lower Third”. Then use the type tool and type out the text for the lower third. In my case I did two lines. Then go to Layer > New > Shape Layer. Call the new shape layer “Text Box 1”. Use the add button to add a rectangle and a fill to Text Box 1. Adjust the size of the rectangle path to fit your text and change your fill to whatever color you want. Drag the text box below the text layers in the layer stack. Parent the text layers to Text Box 1 and then move Text Box 1 into place as a lower third.

Let’s go ahead and animate this text box so when we add the offset layers we’ll see it happening. At frame 20 set a keyframe for the position of Text Box 1. Then at frame 0 change the Y position of the box so that it is off screen. At frame 40 place another keyframe for the position where it is on screen. At frame 70 change the X position so that the text box is off screen and give it a little bit of extra so any offset copies will make it off screen too. You can ease these keyframes to get a nicer look.

Create a new null object (Layer > New > Null Object) and name it “Controller”. With the null still selected go to Effect > Expression Controls > Slider Control. Rename the the slider control “Delay”. If the null isn’t at the top of the layer stack then go ahead and move it there.

Duplicate Text Box 1 and drag the duplicate below it (should be named “Text Box 2”). Change it’s fill color so that you’ll be able to see which one is which. Pull up the position of Text Box 2 and option (or alt) + click the stopwatch and add the following expression:

m=index-4;
d=thisComp.layer("Controller").effect("Delay")("Slider");
p=thisComp.layer("Text Box 1").transform.position.valueAtTime(time-d*m);

[p[0],p[1]]


So let’s break this down quickly. We’re defining three variables (m, d, and p). “m” is equal to the layer’s index (layer number) minus four. Why four? Because the first layer we are applying this too is Text Box 2 and it should be layer number 5. 5-4=1 and so m=1 (we’ll come back to this). “d” is simply pointing to the delay slider control we made on the null object. “p” looks at the position of Text Box 1 but there’s a little more too it with the “valueAtTime” added. We’re subtracting the current time by “d*m”. So we’re multiplying the delay slider and the layer index minus 4 together and whatever that is equal to is how much we’re offsetting the layer in time. So if we add another text box and drag it to the bottom so that it’s layer 6 then it’s “m” value will be 2 instead of 1 (6-4=2). This is how we achieve evenly offset layers.

Now let’s add some delay to this. Go the Delay slider on the Controller null and change the value to 0.1 (a little goes a long way!). Now when you look at the animation you’ll see you’re offset box. Duplicate Text Box 2 and drag the duplicate (should be “Text Box 3”) to the bottom of the layer stack. Change it’s fill color so that it’s different from the other two text boxes. You’ll see that it’s already offset the proper amount. You can continue this process creating as many duplicates as you like. Just remember that it’s looking at layer index so if you put another layer above the text boxes you’ll have to compensate in the expression.

At this point you can call it done but we’re going to take it a step further by adding some offset in position as well. On the Controller null duplicate the Delay slider twice and rename the two new sliders “X Offset” and “Y Offset”. Set the value to both to 20. Now replace the expression on the position of Text Box 2 and 3 with this:

m=index-4;
d=thisComp.layer("Controller").effect("Delay")("Slider");
p=thisComp.layer("Text Box 1").transform.position.valueAtTime(time-d*m);
ox=thisComp.layer("Controller").effect("X Offset")("Slider");
oy=thisComp.layer("Controller").effect("Y Offset")("Slider");

[p[0]+ox*m,p[1]+oy*m]


Time for another breakdown! This one is similar in a lot of ways but we’ve added two new variables. “ox” and “oy” are pointing to the new sliders we added to the Controller null. Then we are multiplying those values with “m” which we talked about in the last expression. We take the result of those two being multiplied together and then add it to the position to get our offset.

Your text boxes should be evenly offset in position and time now. Again, you can duplicate the text boxes as many times as you need to and it all should work just fine. You can even keyframe the offset sliders to get some cool and unique animations! 

Well, that concludes this tutorial. I hope you found it helpful, if you did, please give us a thumbs up and if you’d like to see more tutorials please go ahead and subscribe because we’re making new ones all the time.  I hope you guys found it helpful.  If you did, we’ve got lots of other Premiere Pro tutorialsAfter Effects tutorials and filmmaking tutorials!

Thanks for watching and see you in the next video.

Music Provided By Motion Array:

https://motionarray.com/stock-...

69284 Files & Counting!

5003 files added in the last 30 days!

Join now, and get instant access to all of our files.

View pricing Join Free