I'm just starting to learn After Effects and had NO IDEA it could involve coding. It got me excited with the possibilities. Thanks for sharing your knowledge for free!
Jake, you just totally helped me so much! I have spent all morning trying to look for a solution while making half keyframed / half variable sliders to be baked into essential graphics templates for a video editor and your breakdown navigated me to the perfect solution. You're a rock star! Thank you!
It's very difficult to find expression tutorials which is insightful and easy to understand, but you did it ! Thank you so much Jake, you did AMAZING job, I learnt a lot!
Thank you so much for this wonderful tutorial, Jake! I've watched hours of tutorials tonight trying to find the right AE expression that will accomplish what I've been trying to do (I'm attempting to make a reactive faux drop shadow), and yours is definitely the best method I've yet found. Will definitely be using it for this project I'm doing!!
Really awesome information, been working in after effects for a couple years now and just getting into expressions seriously. Your channel has been a big help!
I just discover this channel and immediately subscribe it!!👍🏻👍🏻 They are all so useful!!!You explained them in so details . 🤩These save my life and fasten the workflow in after effect!!!Please keep on and do these kinds of tutorial !!!
Thanks for the great explanation, Jake. I come back to this video pretty regularly whenever the proper syntax escapes me :) Can you explain how one or more of the parameters within the linear() expression can be a linear() expression itself?
Love your all video especially those related to expressions. You are the best at explaining complicated things in a simple fashion! Please, make more videos should it be possible.
I want to bind ROTATION to POSITION using LINEAR example : x = transform.position[1] p1 = 900; p2 - 300; r1 = 0; r2 = 90; linear(x, p1, p2, r1, r2,) when the value of p1 goes through the path to p2, r1 should go through the path from 0 to 90 degrees and back to 0 again, but i can't add the third argument, how can i solve this problem? please, help
I have four objects (three are duplicates of the first). I want the objects to ENTER consecutively but EXIT simultaneously (without using keyframes.) Individually, these tasks are very easy. I can pick whip them to a slider control and add a delay time. But then they all exit consecutively, and I don't want that. I figured I could create two sliders; one for entering animation and the second for the exit animation. I am trying to combine the two sliders to one expression. BUT THE SECOND ONE CANCELS OUT THE FIRST. I don’t know how to solve this problem. Another issue in terms of combining two expressions into one expression is I also want to combine loopIn AND loopOut expressions because I want the animation to start before the first keyframe and continue after the last keyframe. Again, the second expression cancels out the first.
Hi! I'm loving (and binging) your content. You're a great teacher. One question about this box tutorial. When the x position is 0 and you start rotating, the box will not stay within the composition because the diagonal width is greater than the horizontal width. Also with shapes that are not symmetrical, how would you keep them from falling of the composition?
Well done tutor please sir, I want to learn expression and its language to understand deeply in other to use it for work sir. I went into your skill shear butIi don`t really understand how it will work sir please kindly help me out on this.
Hi Jake, this is a great tutorial, pretty much what I was looking for. I have a doubt with the line connecting the two dots. How do you make the end of the shape layer follow one point and the other end follow the other point?
sorry for the previous messages and also this one. I revised the expression in a project. two squares, one just stroke, making the external border. They go to a corner to anothe. Should be nice and easy eheh... though given this expression, also if maybe the wiggle isn't the best way to be written (i was trying with random values for it), var1 = thisLayer var2 = transform.position; var3 = transform.opacity; var4 = thisComp.layer("Livello forma 1").transform.position; linear(var1, var2=var4, var2=var4, var3 [ wiggle (10,10)], var3 [ wiggle (100,100)]); i get "the property name 1914,00413270761,1066,42297484857 is not a property or was removed" message in the fifth line... this doesn't make sense at all nor is nice nor... else... i reinstalled the program. and nothing... have this any solution? maybe... settings or so... i really couldn't come up with nothing after changing five times or so the expression and getting random "needed )" messages and these stuffs
i can change it like var2 = var4-var4/2, var2= var4/2 if starts somewhere else like a little after the animation starts and in the center, for exemple, because like this would be changing from the begging to the end with the animation given the two values, if i thought it correctly... though this doesn't make any sense as error... if would be else, like not doing a thing, ok i would understand i made a mistake... this doesn't make any sense
Hey Jake, Thanks for the amazing tutorial! I worked to apply this to my project where I am scaling a shape layer in the y direction to create a reusable chart element. Using some additional guidance in the comments below regarding using an array for multi value parameters my initial solution didn't cause any syntax errors but the linear() command had zero effect. While I was able to arrive at a solution that ultimately worked I am still not entirely sure why the first attempt did not based on the way you wrote things in the samples above. Likely an over arching concept of expressions or array's I am still learning. Could you help me understand the difference? DIDN'T WORK ----- var x = value[0] var y = effect("Column")("Slider"); linear(y,0,100,0,570); [x,y] WORKED ----- var x = value[0] var y = effect("Column")("Slider"); [x,linear(y,0,100,0,570)]
@@JakeInMotion I see so in your single number example expressions the Linear() command is part of the variable assignment. Okay, thank you so much for the quick response!
You're right! This slight variation on my original attempt works. I miss understood how y was used/updated in the Linear() command. var x = value[0] var y = effect("Column")("Slider"); z = linear(y,0,100,0,570); [x,z] Thank you for taking the time to help me sort that out in my head.
this is so nice... so nice... really, all yur work, i swear... i say more blasfemities than breathing when i try because, for exemple why if i put a variable of a layer property as a position it came out to me an error as "matrix, number or property needed" when all what i wrote is var1 (without numbers and/or with numbers or letters but with spaces, so var 1, says it is an illegal use of var word), space, so var1 =, and then pickwhippe a property as a position?
there is all semicolumn so var1 = (pickwhipped property as position) ; and always, any property i chose get "a layer type object found where is needed a number, a matrix or a property"... i am... disappointed.. ahah
now i have redone var1 = (first layer position) ; it reads it. I add a second variable so making another line var2 = (pickwhipping second layer opacity);. "the result is 2 where meant to be 1"... i mean... for real, i can't get away with a solution and this isn't the first time it happens, moreover
i am sorry i have a problem. I would iike a series of animated dots passing through an object like a null or a regulation lvel going from let say 75 to 100 opacity, i tried an if/else involving a linear so once out they got to 100 opacity, i got some strange problems errors. Ok. I try with keyframe, though for the future i would like to know how to it, i mean that can be very nice to get some other effect but i can't really figure out especcially why when defyining variables that are indeed possible i get errorsas ""varx" is not in global" after a pickwhip or with all parenthesis in place i have to add them, but this is another story. So, If objects passing by a regulation level have to go from a percentage of opacity to another, how can i do it?
in the end i did it with a regulation level and a linear whipe, basically, i would had loved to be more precise, in that sense i mean... thank in advance anyhow though =)=)
Hey man, I just subsribed. And I'm here for a interesting tutorial suggestion and is kinda workflow related: How to create projects which are very flexible? There are a lot of examples: Like you created an animation but now it turns out that you need to add a new part right in the middle of it with the same objects you already use. It seems like this is such a complex task to do because often you have to pick the right keyframes without messing things up, adjust comp-lengths (especially pre-comps!) and open pre-comps to adjust keyframes which are located there. But it's not just that! Like making it flexible to be able to swap graphics at will or change certain graphic positions. What are your workflows doing that?
This will not work in a parameter that has two dimensions and for some reason After Effects won't let you split x and y positions with shape layer groups.
No click-bait, No messing around, No nothing!
It's truly amazing you share this for free. Thank you so much.
You are a great teacher.
he is so underrated
I'm just starting to learn After Effects and had NO IDEA it could involve coding. It got me excited with the possibilities.
Thanks for sharing your knowledge for free!
Great tutorial! I usually forget how the linear expression works exactly and come back to this video again and again to recall the information
I love you, you don't know how long this took me to understand. Thank you, you beautiful AE nerd.
Jake, you just totally helped me so much! I have spent all morning trying to look for a solution while making half keyframed / half variable sliders to be baked into essential graphics templates for a video editor and your breakdown navigated me to the perfect solution. You're a rock star! Thank you!
Wow! amazing explanation!! thanks a lot!!
It's very difficult to find expression tutorials which is insightful and easy to understand, but you did it ! Thank you so much Jake, you did AMAZING job, I learnt a lot!
Thank you Jake!! Super clear, helpful tutorial.
BEAUTIFULLY conceived and explained.
This was so extremely helpful! This is what I've been looking for for years! Thank you!
Clear & simple tutorial! Cheers Jake!
I'm a simple man. I see a fantastic RUclips channel, I subscribe.
Super useful! Thanks for another great tutorial :)
Thank you so much for this wonderful tutorial, Jake! I've watched hours of tutorials tonight trying to find the right AE expression that will accomplish what I've been trying to do (I'm attempting to make a reactive faux drop shadow), and yours is definitely the best method I've yet found. Will definitely be using it for this project I'm doing!!
Really awesome information, been working in after effects for a couple years now and just getting into expressions seriously. Your channel has been a big help!
I just discover this channel and immediately subscribe it!!👍🏻👍🏻 They are all so useful!!!You explained them in so details . 🤩These save my life and fasten the workflow in after effect!!!Please keep on and do these kinds of tutorial !!!
So great! Thanks for being super clear with your explanations!
Love your tutorials. Best online!
Amazing tutor. Thank You!
Really excellent explanation, and you have a very pleasing voice. 10/10. Subscribed.
Genius anticipation of user question, re stroke width. Noice!
1:26 How did you hide the X Position?
Thank you for sharing your knowledge in such high quality.
Nevermind lmao, 2 seconds later you explain it. Whoops.
Thanks for the great explanation, Jake. I come back to this video pretty regularly whenever the proper syntax escapes me :) Can you explain how one or more of the parameters within the linear() expression can be a linear() expression itself?
Awesome tutorial -- thanks Jake!!
so amazing man! thanks!
Love your all video especially those related to expressions. You are the best at explaining complicated things in a simple fashion! Please, make more videos should it be possible.
I'm super thankful for your information and videos in here, have a great day Jake ✌️✌️
It's an amazing tutorial. About the curves, is it possible to do this bezier curves without a plugin?
I want to bind ROTATION to POSITION using LINEAR
example :
x = transform.position[1]
p1 = 900;
p2 - 300;
r1 = 0;
r2 = 90;
linear(x, p1, p2, r1, r2,)
when the value of p1 goes through the path to p2, r1 should go through the path from 0 to 90 degrees and back to 0 again, but i can't add the third argument, how can i solve this problem?
please, help
Thanks a lot, looking forward for new tutorials :)
Thank you Jake!
You are my life savior!! THANKS! By the way can you do more expression tutorials?
Excellent, thanks very much!
AWESOME DUDE, THANK YOU !
thanks for sharing your knowledge Jake
God of expressions!
Thank you ❤️🔥❤️🔥
Thanks Jake. Love your skillshare vids also. Well done!
Thanks man!
I have four objects (three are duplicates of the first). I want the objects to ENTER consecutively but EXIT simultaneously (without using keyframes.) Individually, these tasks are very easy. I can pick whip them to a slider control and add a delay time. But then they all exit consecutively, and I don't want that.
I figured I could create two sliders; one for entering animation and the second for the exit animation. I am trying to combine the two sliders to one expression.
BUT THE SECOND ONE CANCELS OUT THE FIRST. I don’t know how to solve this problem.
Another issue in terms of combining two expressions into one expression is I also want to combine loopIn AND loopOut expressions because I want the animation to start before the first keyframe and continue after the last keyframe. Again, the second expression cancels out the first.
WOW thank you so much! this video is pure GOLD
saved me thank u SO MUCH
Nicely done and explained!
And now it all makes sense. Thank you!!!
Hi! I'm loving (and binging) your content. You're a great teacher. One question about this box tutorial. When the x position is 0 and you start rotating, the box will not stay within the composition because the diagonal width is greater than the horizontal width. Also with shapes that are not symmetrical, how would you keep them from falling of the composition?
If I watched this video in beginning I wouldn't watch 10 videos on youtube and read the documentation in vain, THANK YOU SO MUCH
Thanks Jake !!! Helpful.
thanks Jake
AWESOME explanation. You ruled!
Thanks!
You are awesome.
Well done tutor please sir, I want to learn expression and its language to understand deeply in other to use it for work sir.
I went into your skill shear butIi don`t really understand how it will work sir please kindly help me out on this.
😍Jake love this tutorial, you save my life.
Can I apply the steps in the 'Rotation' chapter also on Scale? How do I write two dimensions in the expression?
This. Is. Great.
Thank you) That’s very easy with you to understand all this hard scripting stuff;)
I understand now!
How did you create that curvy line? 🤔🤔
How can I ease all keyframes on a layer using an expression?
Hi Jake, this is a great tutorial, pretty much what I was looking for. I have a doubt with the line connecting the two dots. How do you make the end of the shape layer follow one point and the other end follow the other point?
Thank you! See 7:40 for the source script I used to have the line path follow two layers.
My god, I have been doing this the hard way for years.
cool stuff, man. a question though, how is that line connected to both dots pls ?
ruclips.net/video/2h9ZfUHVG6Q/видео.htmlm40s
sorry for the previous messages and also this one. I revised the expression in a project. two squares, one just stroke, making the external border. They go to a corner to anothe. Should be nice and easy eheh... though given this expression, also if maybe the wiggle isn't the best way to be written (i was trying with random values for it),
var1 = thisLayer
var2 = transform.position;
var3 = transform.opacity;
var4 = thisComp.layer("Livello forma 1").transform.position;
linear(var1, var2=var4, var2=var4, var3 [
wiggle (10,10)], var3 [
wiggle (100,100)]);
i get "the property name 1914,00413270761,1066,42297484857 is not a property or was removed" message in the fifth line... this doesn't make sense at all nor is nice nor... else... i reinstalled the program. and nothing... have this any solution? maybe... settings or so... i really couldn't come up with nothing after changing five times or so the expression and getting random "needed )" messages and these stuffs
i can change it like var2 = var4-var4/2, var2= var4/2 if starts somewhere else like a little after the animation starts and in the center, for exemple, because like this would be changing from the begging to the end with the animation given the two values, if i thought it correctly... though this doesn't make any sense as error... if would be else, like not doing a thing, ok i would understand i made a mistake... this doesn't make any sense
Hey Jake,
Thanks for the amazing tutorial! I worked to apply this to my project where I am scaling a shape layer in the y direction to create a reusable chart element. Using some additional guidance in the comments below regarding using an array for multi value parameters my initial solution didn't cause any syntax errors but the linear() command had zero effect. While I was able to arrive at a solution that ultimately worked I am still not entirely sure why the first attempt did not based on the way you wrote things in the samples above. Likely an over arching concept of expressions or array's I am still learning. Could you help me understand the difference?
DIDN'T WORK -----
var x = value[0]
var y = effect("Column")("Slider");
linear(y,0,100,0,570);
[x,y]
WORKED -----
var x = value[0]
var y = effect("Column")("Slider");
[x,linear(y,0,100,0,570)]
I believe it's because you didn't store the linear expression in a variable named "y".
Rather, you didn't create a variable for that line, and then call it back in the final array.
@@JakeInMotion I see so in your single number example expressions the Linear() command is part of the variable assignment. Okay, thank you so much for the quick response!
You're right! This slight variation on my original attempt works. I miss understood how y was used/updated in the Linear() command.
var x = value[0]
var y = effect("Column")("Slider");
z = linear(y,0,100,0,570);
[x,z]
Thank you for taking the time to help me sort that out in my head.
genial
this is so nice... so nice... really, all yur work, i swear... i say more blasfemities than breathing when i try because, for exemple why if i put a variable of a layer property as a position it came out to me an error as "matrix, number or property needed" when all what i wrote is var1 (without numbers and/or with numbers or letters but with spaces, so var 1, says it is an illegal use of var word), space, so var1 =, and then pickwhippe a property as a position?
there is all semicolumn so var1 = (pickwhipped property as position) ; and always, any property i chose get "a layer type object found where is needed a number, a matrix or a property"... i am... disappointed.. ahah
now i have redone var1 = (first layer position) ; it reads it. I add a second variable so making another line var2 = (pickwhipping second layer opacity);. "the result is 2 where meant to be 1"... i mean... for real, i can't get away with a solution and this isn't the first time it happens, moreover
i am sorry i have a problem. I would iike a series of animated dots passing through an object like a null or a regulation lvel going from let say 75 to 100 opacity, i tried an if/else involving a linear so once out they got to 100 opacity, i got some strange problems errors. Ok. I try with keyframe, though for the future i would like to know how to it, i mean that can be very nice to get some other effect but i can't really figure out especcially why when defyining variables that are indeed possible i get errorsas ""varx" is not in global" after a pickwhip or with all parenthesis in place i have to add them, but this is another story. So, If objects passing by a regulation level have to go from a percentage of opacity to another, how can i do it?
thank you in advance, you're tutorial are super, nice and smooth eheh =) =) =)
in the end i did it with a regulation level and a linear whipe, basically, i would had loved to be more precise, in that sense i mean... thank in advance anyhow though =)=)
Hey man, I just subsribed. And I'm here for a interesting tutorial suggestion and is kinda workflow related:
How to create projects which are very flexible? There are a lot of examples: Like you created an animation but now it turns out that you need to add a new part right in the middle of it with the same objects you already use. It seems like this is such a complex task to do because often you have to pick the right keyframes without messing things up, adjust comp-lengths (especially pre-comps!) and open pre-comps to adjust keyframes which are located there. But it's not just that! Like making it flexible to be able to swap graphics at will or change certain graphic positions.
What are your workflows doing that?
Can you show how it works with scale? Since scale has 2 values x and y .....so I shoulbe be at least 10 values in linear expressions...
You'll want to make a linear expression for each axis, put those into variables, then use the variables in an array --- [x,y] ---
This will not work in a parameter that has two dimensions and for some reason After Effects won't let you split x and y positions with shape layer groups.
Kingman Jake!
yeah, like school math