Dynamically Resizing Line of Shapes - Adobe After Effects tutorial

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 ก.พ. 2025

ความคิดเห็น • 127

  • @Scott.Sandifer
    @Scott.Sandifer 6 ปีที่แล้ว +45

    I’ve said this before, but it bears repeating.
    I love that with your tutorials I learn more than simply what you’re demonstrating. I’ve learned so many concepts from you! Thank you.

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว +7

      You're very welcome. I'm glad the videos are having the intended impact :)

  • @davidp158
    @davidp158 6 ปีที่แล้ว +5

    You have a beautiful mind when it comes to After Effects and expressions. Thanks for sharing your wisdom.

  • @Jeff_H_the_Guitarist
    @Jeff_H_the_Guitarist 6 ปีที่แล้ว +19

    "Things deserve to be EASED." (Love that)

  • @dan-crum
    @dan-crum 6 ปีที่แล้ว +3

    I have never shouted, "That's REALLY cool" at an after effects tutorial before. Thanks a lot man, this is great.

  • @SeyiOlusanya-p9r
    @SeyiOlusanya-p9r ปีที่แล้ว

    Amazing tutorial! Thanks EC Abrams!

  • @MoneyMunday
    @MoneyMunday ปีที่แล้ว

    I wanted to do something like this with columns to create different video panels on one frame for an LED wall and this is going to make it so much easier! Thank you so much!!!

    • @UmbipiccoloU3
      @UmbipiccoloU3 ปีที่แล้ว

      i struggle with that a lot did you manage to do it ? The tutorial helped me to get an idea but i still struggle to conver the technique to a grid

    • @ab71195
      @ab71195 6 หลายเดือนก่อน

      @@UmbipiccoloU3 Same here! Is it possible to make a tutorial about similar situation, but with a grid? @ECAbrams

  • @Workbenchtv
    @Workbenchtv 6 ปีที่แล้ว +2

    Cool idea! It's interesting to see how others would build something like this.

  • @tomtriffitt9329
    @tomtriffitt9329 2 ปีที่แล้ว

    This really helped me code dynamic resizing mogrts!! Thank you :)

  • @slackdave
    @slackdave 2 ปีที่แล้ว

    Really making the complex simple! Beautiful!

  • @7MinuteAETutorials
    @7MinuteAETutorials 5 ปีที่แล้ว

    Super impressive, man. You never disappoint!

  • @MrMuffinLord
    @MrMuffinLord 6 ปีที่แล้ว

    you are too good for this world

  • @OximeFx
    @OximeFx ปีที่แล้ว

    Thanks so much .....😅I was looking for this one

  • @skydmnq
    @skydmnq 3 ปีที่แล้ว +1

    this reminds me of the Ae script "Flex" but even that was supposedly easier, it was harder. :( This video made more sense. Thank you!

    • @ECAbrams
      @ECAbrams  3 ปีที่แล้ว +1

      Yeah, this tutorial predates Flex by a bit. I think Zach cracked the code pretty well myself. Responsive and dynamic compositions are hard in Ae because of the hierarchical nature of the software I think. I'm glad to hear this has helped though.

    • @e11world
      @e11world 3 ปีที่แล้ว

      ​@@ECAbrams I tried using Flex for footage but it has too many issues to make it even useful. The x & y would be sweet if it used simple code / logic like this.

  • @R1ngwraith
    @R1ngwraith 6 ปีที่แล้ว +2

    Wow, you just saved me a lot of time, thanks, keep it up

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว

      Time is perhaps the most precious resource we have. Glad this stuff helps people save even a little.

  • @g_niac
    @g_niac ปีที่แล้ว

    this is awesome. incredibly versatile. wonder what this could look like with warping or deform layers over live action footage. sub’d and lik’d!

  • @cessers
    @cessers 6 ปีที่แล้ว +6

    Cool balls, bro!

  • @thomasculton7633
    @thomasculton7633 6 ปีที่แล้ว

    I love that the tutorial is finished but the reason he gives to end the video is that his mouth is getting dry!! Thanks for making these videos!

  • @cheung1932
    @cheung1932 6 ปีที่แล้ว

    Thank You So Much!! Want to see more video from you!

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว

      I'd like to see more video from me to ;)

  • @fredluzet235
    @fredluzet235 6 ปีที่แล้ว

    Use it now, thanks Evan

  • @bokletbeaton3426
    @bokletbeaton3426 3 หลายเดือนก่อน

    Hey, Super nice tute, thanks! I have a question: Is there the possibility of adding into the expression a line to keep vertical scaling the same value, and the rest the same? So the shapes would scale in only one direction?

    • @ECAbrams
      @ECAbrams  3 หลายเดือนก่อน

      So you mean things squish instead of resize? Like the X will squish (horizontal) but the Y (vertical) should remain as it was at 100%? If that's the case you just need to change the output. When you see something like [thing,thing] with two parts of an array, those correspond to the two parts of the property. So in scale if you wanted just the horizontal to change, leave that part as it is here. And if you want the vertical to always be some other number, change the second part to be that number. Does that make sense?

  • @OneCheapEric
    @OneCheapEric 6 ปีที่แล้ว

    Evan you continue to be my hero. This video also applies to money. Doesn't matter how many honey pots you have. You still only have a finite amount of chedda cheese.

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว

      Honey and Cheddar Cheese? Is that some Chicago style popcorn flavour?

    • @OneCheapEric
      @OneCheapEric 6 ปีที่แล้ว

      ECAbrams those are damn good! And now I need to go to Costco (king sized bag). 😹😸😺

  • @SkyScar7
    @SkyScar7 6 ปีที่แล้ว

    This gimme an idea to use Que Es Span Null from redefinery to achieve something like this. Thanks Evan!

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว

      You're welcome. If the tutorials are giving people ideas then it's working as intended :)

  • @FLOWTUTS
    @FLOWTUTS 6 ปีที่แล้ว +3

    thanks for sharing dude

  • @TheKeyWii
    @TheKeyWii 5 ปีที่แล้ว +3

    Thank you so much for this amazing tutorial! Is there a way to change this expression so only the X-axis of the scale increases while the Y axis does not move?

    • @philipames8583
      @philipames8583 4 ปีที่แล้ว +5

      i did it with [s,100] instead of [s,s]. that way the scale of Y remains at 100%

  • @semillerimages
    @semillerimages 6 ปีที่แล้ว

    So awesome! Thank you Evan!

  • @Lagranjadigital
    @Lagranjadigital 6 ปีที่แล้ว

    Wow! Thx! really good tuto!

  • @alovicentini
    @alovicentini 4 ปีที่แล้ว

    Thanks so much!

  • @paulknirsch186
    @paulknirsch186 2 ปีที่แล้ว

    THIS WAS EXACTLY WHAT I WAS LOOKING FOR. THANKS.... so much :) ! But what should i do if i want some extra space for text between each or just one ball? I could really use an answer for that one :).

  • @Killeuzee
    @Killeuzee 6 ปีที่แล้ว +7

    How can I apply this concept to a grid of squares where both the X and Y properties are affected by eachother?

    • @larryzochowski8364
      @larryzochowski8364 4 ปีที่แล้ว +1

      Was wondering if you ever found out? Trying to do this now and cant get my head around it.

    • @kabarrochi
      @kabarrochi 4 ปีที่แล้ว +1

      i need this too!

  • @norbertadamko1212
    @norbertadamko1212 6 ปีที่แล้ว

    super useful video! 😊 thanks!

  • @maxmarksroyaltyfreemusic9892
    @maxmarksroyaltyfreemusic9892 3 ปีที่แล้ว

    Thanx!

  • @ZsoltHatszegi
    @ZsoltHatszegi 6 ปีที่แล้ว

    Holy megabyte! This trick is fantastic!

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว

      Megabyte you say? Is that a Reboot reference?

    • @ZsoltHatszegi
      @ZsoltHatszegi 6 ปีที่แล้ว

      I have no idea. I just heard it from frined when unknown forces started to mess up my project file.

  • @wadjannah
    @wadjannah 6 ปีที่แล้ว

    great tutorial ... thanks @ECAbrams

  • @keifferbuckles8976
    @keifferbuckles8976 6 ปีที่แล้ว

    great tut bruh

  • @sachapegado
    @sachapegado 6 ปีที่แล้ว

    Golden stuff here \o/ cheers

  • @griff_again
    @griff_again 6 ปีที่แล้ว

    As always, you're a legend!
    Just a quick bit of curiosity, is there any advantage to using the "delta" method as opposed to length(p1-p2)?
    keep doing good things.

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว +2

      Since we later lock down the controllers, there isn't really a difference. But if we left the nulls free to wander around vertically, length() would return us the actual distance between the nulls rather than just their horizontal difference, which could potentially be a larger number than we would like to maintain the illusion of the line. Other than that, length() is a fine alternative.

    • @griff_again
      @griff_again 6 ปีที่แล้ว

      ECAbrams makes sense! Thanks dude

  • @newartz3945
    @newartz3945 ปีที่แล้ว

    Can I do this with a Rectangle and Multiple Rectangles but so that I can Resize x and y seperately ? and rectangles on both sides are changed ?

  • @edwinghudson1223
    @edwinghudson1223 4 ปีที่แล้ว

    amazing!! how do you make the textures(image)? Not the effect of motion tile

  • @clairerennard7538
    @clairerennard7538 6 ปีที่แล้ว +2

    What if you don't want all the circles/shapes to be 360x360 size? How would the expression codes and null object anchor point numbers need to be adjusted?

    • @slackdave
      @slackdave 2 ปีที่แล้ว

      the null objects have to be on the outer edges of the objects
      delta = p1[0] - p2[0];
      s = (delta/360)*-100;
      the 360 would have to be replaced with whatever the distance is between the nulls..
      I sometimes put these expressions into a text object just to check the outputs.. then you can see what result delta gives you and understand the math better

  • @沈梨花
    @沈梨花 6 ปีที่แล้ว

    pretty cool!thxbro1

  • @atropper
    @atropper 4 ปีที่แล้ว

    thanks for sharing this method I find it super useful. I was able to get what I wanted with square following the tutorial, But what can I do if I want some square to be above or under the original line of squares? and make them all react in the size?
    The first thing comes to mind is to add more nulls at the bottom and top of the squares/circles but don't know how to modify the expression?
    Any help would be great

    • @ECAbrams
      @ECAbrams  4 ปีที่แล้ว

      Basically you're looking for a kind of responsive design right? Like a grid where everything reacts to everything else? Is that about the size of it?

    • @atropper
      @atropper 4 ปีที่แล้ว

      ECAbrams yes exactly

    • @dubbelgstudios7319
      @dubbelgstudios7319 4 ปีที่แล้ว

      Did you ever get an answer to this? I'm also busy with a grid of blocks that need to resize responsively to each other

    • @atropper
      @atropper 4 ปีที่แล้ว +1

      @@dubbelgstudios7319 unfortunately i didn't

    • @newartz3945
      @newartz3945 ปีที่แล้ว

      @@atropper Did You find it out how to do it now ? lmao

  • @yikoli8817
    @yikoli8817 3 ปีที่แล้ว

    Really thanks !
    but i want to know if I want to make not just in line form,i want the circle go around the circle, so what should i do ?

    • @ECAbrams
      @ECAbrams  3 ปีที่แล้ว

      So you would like to array these circles around another circle? Is that the idea? I think you would need a lot more math to make that play.

  • @SyeTen
    @SyeTen 6 ปีที่แล้ว

    5:12 I love all of your eawtput :)

  • @tomandtomi164
    @tomandtomi164 4 ปีที่แล้ว

    Great content,I have a question,please help,I am installed after effects in recent days,I wonder how on object becomes smaller when another one appears,like we see in size comparison videos,like of planets etc,can we use the same concept in that vids too?

    • @ECAbrams
      @ECAbrams  4 ปีที่แล้ว

      I hope people can extrapolate the use of this technique to all kinds of things. Usually if you're trying to show the relative size of things though you don't want to then resize them right? So you might want to consider just zooming out of a comp with a 3d camera and 3d layers. Or maybe scaling a null for the whole scene.

    • @tomandtomi164
      @tomandtomi164 4 ปีที่แล้ว

      @@ECAbrams thanks alot for quick response😇

  • @daviderotatori2207
    @daviderotatori2207 6 ปีที่แล้ว

    Thanks for this awesome tutorial. I've got just one question: if i want to do this vertically, what can i write in the expression, instead of Delta=p1[0]-p2[0], to referring to the Y-axis?

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว +2

      the [0] part of the variable is how we select the first part of the property or in this case the x-axis. just change the [0] to [1].

    • @daviderotatori2207
      @daviderotatori2207 6 ปีที่แล้ว

      ECAbrams that’s right, I’ve already figured out trying. Your Tutorials are incredibly useful, thanks for sharing your competence with us!

  • @J_Pisciotta
    @J_Pisciotta 4 ปีที่แล้ว +1

    Hey Evan! I noticed at the 11-second mark the circle on the right sliding horizontally (without scaling) and the middle circle is staying in place. How did you achieve this? Duplicate comps with layers turned off and position keyframes on the pre comp?

    • @ECAbrams
      @ECAbrams  4 ปีที่แล้ว +1

      because everything is parented and controlled by nulls, I think it's just keyframed on the shape layer itself. If i'm remembering right.

  • @elissitdesign
    @elissitdesign 6 ปีที่แล้ว

    I did not catch why you have *-100 in your expression.
    Thanks and loving this tut.

  • @bush9686
    @bush9686 6 ปีที่แล้ว

    perfect one)

  • @austinpinilla7409
    @austinpinilla7409 5 ปีที่แล้ว

    can you do this, but instead of resizing the color changed?

  • @SlimeyNoCommentary
    @SlimeyNoCommentary 6 ปีที่แล้ว

    Nice

  • @Autotelos
    @Autotelos 4 ปีที่แล้ว +2

    Thanks for the tutorial! I have a question though, how do you make it vertical?

  • @sommertime2436
    @sommertime2436 6 ปีที่แล้ว

    Thank you for a great ida and tutorial. :D Can you please tell where you got the sound from and what it is called ;)

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว +1

      All the sound FX come from the Motion Sounds pack available at motionsound.io it's a nice archive of versitile sounds.

  • @MrRobberHood
    @MrRobberHood 6 ปีที่แล้ว

    Any tips on making the shadows? Can't quite seem to figure out how to do shadows with expressions.

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว +1

      In this case no expressions were used in the creation of the shadows. I just pre-comp the elements, duplicate that precomp, move it, scale it, and hit it with a fill effect.

    • @MrRobberHood
      @MrRobberHood 6 ปีที่แล้ว

      Awesome, thanks!

  • @chaosandcreativity3193
    @chaosandcreativity3193 5 ปีที่แล้ว

    This is really cool! Well, in the video. I keep getting a syntax error on my project. Does this still work on AE 2020?

    • @ECAbrams
      @ECAbrams  5 ปีที่แล้ว

      Should work the same in 2020. What error do you get specifically? And what do you have written in the expression exactly?

    • @chaosandcreativity3193
      @chaosandcreativity3193 5 ปีที่แล้ว

      @@ECAbrams
      Error:
      Type Error: Cannot read property '0' of undefined
      I typed:
      s1=thisComp.layer("Null 1").transform.position;
      s2=thisComp.layer("Null 2").transform.position;
      Delta=p1[0]-p2[0];
      s=(Delta/360)*-100;
      [s,s];

    • @booboobooboo4577
      @booboobooboo4577 5 ปีที่แล้ว

      @@chaosandcreativity3193 in your case you do not have variables called p1 and p2; you should write: Delta= s1[0]-s2[0];

  • @colinmakesvideos
    @colinmakesvideos 6 ปีที่แล้ว

    Hey! Did you use ray dynamic texture for the circles? Where did you find the cool black background? Thanks!

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว

      I did not. But I used a similar process to what RDT does. That background is a ramp and noise nothing to it. The textures are from the Peter Quinn texture pack.

  • @katiaboarino6868
    @katiaboarino6868 3 ปีที่แล้ว

    If I wanted to do that on a vertical line of cirles what should I change about the expression? cause it doesn't work

    • @ECAbrams
      @ECAbrams  3 ปีที่แล้ว

      You would need to change everything to work off the other axis.

  • @rosssweetmore2210
    @rosssweetmore2210 4 ปีที่แล้ว

    Does this work on the y-axis as well as the x-axis? So if I had a grid of shapes, not just a line?

    • @ECAbrams
      @ECAbrams  4 ปีที่แล้ว

      At a very base methodology level... maybe. But you would need to drastically change what is controlling what. How exactly do you want the grid to operate?

  • @tebrazepam
    @tebrazepam 2 ปีที่แล้ว

    Can you limit the scale of the objects only to x, horizontal? So that their height stays the same.

    • @ECAbrams
      @ECAbrams  2 ปีที่แล้ว +1

      Absolutely. In any expression on scale, the output is [x,y] so you would need to set x to either a static number or the value of the original property value[0]. Does that make sense?

    • @tebrazepam
      @tebrazepam 2 ปีที่แล้ว

      @@ECAbrams That did it :) Thanks! All the best!

    • @dobrinstefanov4873
      @dobrinstefanov4873 ปีที่แล้ว

      ​@@tebrazepam how did you set a static value to "x" only

  • @EnricoGennariVideo
    @EnricoGennariVideo 6 ปีที่แล้ว

    hawesome tutorial! only a question: how can i change the solid fill in to a jpeg mage? thank you, i'm not an after expert....

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว

      You will want to use the jpeg as its own layer, parented to the existing solid, and using that solid to define its visible area using track mattes, or the set matte effect or another similar method. So you might duplicate the solid, placing it above the jpeg and setting the jpeg to use that new solid as the track matte for the jpeg. Does that make sense?

  • @dobrinstefanov4873
    @dobrinstefanov4873 ปีที่แล้ว

    I was trying to use that method in my project but with the difference that the objects are 3d. can anyone help me with expression? Thanx in advance

    • @ECAbrams
      @ECAbrams  ปีที่แล้ว

      you'll just need to account for everything now having a 3rd component. So instead of the position being [x,y] you will have to account for it being [x,y,z]. The same goes for scale and anchor point. Have you been getting errors when you make the attempt?

    • @dobrinstefanov4873
      @dobrinstefanov4873 ปีที่แล้ว

      @@ECAbrams Thanks! Great tutorial. 5y ago and still usefull.

  • @AzhaguVel
    @AzhaguVel 4 ปีที่แล้ว

    Who are all surprised at 8:12 😃

  • @SlimeyNoCommentary
    @SlimeyNoCommentary 6 ปีที่แล้ว

    Is this action script

  • @andrewcooper9816
    @andrewcooper9816 5 ปีที่แล้ว

    I'm getting "couldn't retun result to a numeric value"

    • @ECAbrams
      @ECAbrams  5 ปีที่แล้ว

      Interesting. What have you written in?

  • @YitzharVered
    @YitzharVered 6 ปีที่แล้ว

    I know i'm dumb, but for me the objects do not "snap" together. I have to realign them one by one, and for you it just does it, showing things exactly. How do i fix this?

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว

      It'll depend on your keyboard configuration and which version of Ae you're using, but for me, I'm holding command as I move layers to activate the snap to feature function.

  • @motiondude
    @motiondude 6 ปีที่แล้ว

    Why you didn't used a fx called "Circle"? It's much faster than shape layer

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว

      Faster in what way?

    • @motiondude
      @motiondude 6 ปีที่แล้ว

      performance, after making more shape layers ur project will be laggy, but it won't happen that fast with the circle fx. It applies to bigger projects, but showing right working manners is important, right?

  • @AiByZahra
    @AiByZahra 3 ปีที่แล้ว

    When it was exactly what I wanted🤌🏻😍

  • @my_name_is_ram
    @my_name_is_ram 6 ปีที่แล้ว

    Hey Evan, thanks for the great lesson again. Love learning about expressions. Makes sense when you think about it, too
    However, I have a thingy. care to help?
    I have a vertical composition that keeps sliding down per 2 keyframes. Like a phone conversation i guess. Using your method shown at 12:12, I tried to lock my X axis using [value[540],0] But it doesn't want to work. The expression you wrote where the numbers are reversed do seem to work though. Is it a different expression to lock a different axis? Thanks for the help in advance, you rock!
    edit: here's a screenshot to clear things up. imgur.com/zWIDSfv
    I'm absolutely sure i'm missing something very obvious. I feel like a baby when it comes to these things even though i've worked with AE for so long. Thanks again!

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว +1

      well, that you've written as the expression would make the second "y" coordinate always 0. And the "x" component will be the value of the 540th part of an array. I think you meant to say [0, value[1]] right? So the horizontal is locked at 0 and the vertical can be the current value of the second part of the property right? It can be helpful to put these things on different lines so it's clearer what is happening.
      x=0;
      y=value[1];
      [x,y]

  • @RollinLeonard
    @RollinLeonard 6 ปีที่แล้ว

    I just did this effect for a big art project that took me forever. I did it the hard way of course. What I also need to do is pin the volume of each clip that resizes to it's size. As it gets bigger it gets louder. Is this possible too? To see the source material "blob opera" see @rollinleonard on instagram.

    • @paulvansommeren
      @paulvansommeren 6 ปีที่แล้ว +1

      If the audio is the driver, check out "Convert audio to keyframes" in the keyframe assistant. If the size is the driver, you can link directly to the Audio Levels property on the audio layer (hit 'L' on the keyboard). In both cases a remapping through linear() is probably necessary.

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว +1

      Paul has it right suggesting you link Audio Levels to the scale. That would use the scale as an input and output a change to the db of an audio layer. I couldn't locate the piece called Blob Opera though. Can you direct link that at me in some way?

    • @RollinLeonard
      @RollinLeonard 6 ปีที่แล้ว

      So in my case the driver is scale so Paul's second suggestion is it.
      I suppose the source material isn't super important but it's funny at least. A bunch of heads in water drops singing. Link: instagram.com/p/Bf3IAsNH-Xm/?taken-by=rollinleonard

    • @RollinLeonard
      @RollinLeonard 6 ปีที่แล้ว

      @ecbrams also! Thanks for posting these tutorials. It's really cool how you make these concepts so easy to understand. I use your Splitting Liquid Shapes idea all the time in different ways. I first used it for this eyeball thing: instagram.com/p/BU8xXb8g9wJ/?taken-by=rollinleonard

    • @RollinLeonard
      @RollinLeonard 6 ปีที่แล้ว

      Hi Paul! I've got the whole project setup just like EC's. I've got my clips' scale and position linked to the shape layers. I just cannot for the life of me figure out how to link the audio level to the scale of the shape. I read about linear() and that seems perfect. 32db to 0db linked to 100% scale to 1000% scale. That makes sense but I just can't figure it out. I did convert audio to keyframes as well.

  • @somilsingh7198
    @somilsingh7198 6 ปีที่แล้ว

    JUST MAKE A TUTORIAL ABOUT THAT GRAINY BACKGROUND FOR GOD SAKE\.

    • @ECAbrams
      @ECAbrams  6 ปีที่แล้ว

      It would be a pretty short tutorial. It's literally just the ramp effect.

    • @somilsingh7198
      @somilsingh7198 6 ปีที่แล้ว

      Thanks for the word ramp. Now i know to start my search from. Thanks