After Effects Expressions 205 - Linear & Ease

Поделиться
HTML-код
  • Опубликовано: 17 янв 2025

Комментарии • 84

  • @gregkrazanski
    @gregkrazanski 2 года назад +3

    linear/ease is truly the best expression in AE imo. thanks for the great tutorials, I've been sharing them with some people I'm trying to teach AE to

    • @Animoplex
      @Animoplex  2 года назад

      Amazing! Yes, they are extremely versatile. Thanks for sharing it with friends, maybe they will get some value out of these lessons!

  • @cenadj
    @cenadj 3 года назад +1

    this series is just outstanding mate!!

    • @Animoplex
      @Animoplex  3 года назад

      You're outstanding mate!!

  • @advocat1090
    @advocat1090 6 лет назад +2

    Wow, this is awesome! I come from your tutorial regarding the wiggle method, and I must say that I really love the way you describe things. Subscribed right away.

    • @Animoplex
      @Animoplex  6 лет назад

      I'm glad you approve of the teaching method :) Thanks for the subscribe, let me know if you have any other questions along the way!

  • @elreydebastos
    @elreydebastos 2 года назад +1

    Thank you for such a great course

    • @Animoplex
      @Animoplex  2 года назад

      You're very welcome, thanks for stopping by!

  • @davidwkr3560
    @davidwkr3560 3 года назад +1

    I've been searching for this informations like crazy! thanks a lot

    • @Animoplex
      @Animoplex  3 года назад

      You're welcome a lot, glad you found it!

  • @تبصرة
    @تبصرة Год назад +1

    very neat and informative content .. Thanks!

  • @sandyh278
    @sandyh278 6 лет назад +1

    This is a very good and clear tutorial. thank you.

    • @Animoplex
      @Animoplex  6 лет назад

      Thanks! Glad you found it clear, hope it was helpful.

  • @Byte1ocked
    @Byte1ocked 7 лет назад +4

    Subbed, you definitely need more attention.

    • @Animoplex
      @Animoplex  7 лет назад +1

      Thanks! Your compliments are appreciated. As long as it helps people with expressions, the course has done it's job.

  • @MylonasFilms
    @MylonasFilms 4 года назад +1

    Love these Tuts

  • @bentherobotcop
    @bentherobotcop 7 лет назад +2

    Thanks! Really informative

  • @pnksmigge5324
    @pnksmigge5324 Год назад +2

    Hey Animoplex, I love this series on Expressions! One quick questions that comes up as I apply more of the new knowledge is whether we can control the interpolation further? I know that Javascript in general allows more control than just the default ease(In/Out), which would be super cool. Because in this case it's fine because you're mapping from a slider anyway, so you have access to the curve, but sometimes we can't do that, at least I think so. For instance I'm currently working on a project where I'm interpolation between value1 and value2, but both of these values aren't keyframes, because they have to work with different user inputs (text size changes). Sooo it looks a bit shit without control of the easing that's all. Thank you for the series again and no worries if you can't help or understand the question because I ramble :)

    • @Animoplex
      @Animoplex  Год назад +2

      A bit late on the reply here, there's a few things to unpack:
      1) You could connect value1 and value2 to Expression Controls and then attach those to any value you want. As long as it's a numeric value, it'll work.
      2) Non-default easing via expressions is more complicated. A trick you can use: keyframe a Slider Control from 0 to 1 using any ease curve you wish (from Flow or other plugins) - Then, reference the slider from the expression-driven value and use it as a multiplier. This way, you get an easy-to-edit ease curve while controlling a dynamic value. Something like:
      transform.scale * effect("Slider Control")("Slider")

    • @oliverdelprado9419
      @oliverdelprado9419 4 месяца назад

      @@Animoplex Amazing!

  • @RobertYarde
    @RobertYarde 7 лет назад +1

    Great stuff!

    • @Animoplex
      @Animoplex  7 лет назад

      Thanks! More coming in a few days, stay tuned.

  • @TinyLittleMaggie
    @TinyLittleMaggie 5 лет назад +1

    Hey Parker! Thanks for the great tutorial!!
    At 2:21 you used "value" to reference the original value of the Y position - does this "original value" refer to the Y position value BEFORE applying the expression? (i.e. this value is a static number that doesn't change over time)
    It's a bit confusing for me because the expression you wrote is the equivalent to "value = linear(thisComp.layer("Control").effect("Rocket Launch")("Slider"), 0, 100, value, value - 1500)" where you are updating value using value itself. Intuitively this code can be interpreted as "value" is changing constantly, and acting as a feedback to itself - which doesn't seem to be what's really happening. Could you perhaps explain this in more detail?
    Thanks!!

    • @Animoplex
      @Animoplex  5 лет назад +1

      Great question, sorry for the confusion. When referring to the current property, value is the keyframed value before the expression is applied. In the example expression you included, the value attribute is referring to the original property before the expression is evaluated. It is animating from it's original value minus 1500 across a 0 to 100 Slider animation. You are, as you said, updating the value using value itself. But the expression won't stack or apply the modification more than once since value *always* equals the property value before any expressions are included. Hope this clears things up!

    • @TinyLittleMaggie
      @TinyLittleMaggie 5 лет назад +1

      ​@@Animoplex Yay! Thanks a lot! So let me correct myself - if I've already added keyframes to the Y position before applying the expression, the "value" may actually change over time. When I apply the linear expression on top of that, then for each frame, After Effects will take the keyframed value of this very frame and map it onto the new range defined by the expression, then place the object in this new position, but this result won't be used for evaluating the position of the following frames, right? (I think I sort of understand how it works but it's hard to put to words!)

    • @Animoplex
      @Animoplex  5 лет назад

      It sounds like you've got it right. Each frame is independent, an expression runs on every frame. The only value that would change frame to frame in your scenario would be the keyframed value animating over time. Hope this clarifies things!

    • @TinyLittleMaggie
      @TinyLittleMaggie 5 лет назад +1

      @@Animoplex Awesome! Thanks again!! :D

  • @DaviAyres
    @DaviAyres 6 лет назад +2

    Hi Parker! I researched and haven't found a way to make the graph steeper whilst using the ease expression. I usually use the Graph Editor to resolve it when using keyframes. Have you figured this out? Best regards,

    • @Animoplex
      @Animoplex  6 лет назад +1

      Unfortunately, it's not as simple as a single line of code, but you can get the Flow plugin which allows you to apply a custom ease curve via expression: aescripts.com/flow/

  • @AlexAnder-mq1by
    @AlexAnder-mq1by 2 года назад +1

    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

  • @vcruelbrawl
    @vcruelbrawl 3 года назад +1

    Bro how can i get something like toggle keyframe with a wiggle expression for position ??

    • @Animoplex
      @Animoplex  3 года назад

      Can you explain what you mean by 'toggle keyframe'? Not sure if you mean Toggle Hold Keyframe setting or a Checkbox Control.

    • @vcruelbrawl
      @vcruelbrawl 3 года назад

      @@Animoplex toggle hold key keyframe, that makes the interpolation looks like a stopmotion movement

    • @Animoplex
      @Animoplex  3 года назад

      Try using posterizeTime() for that, here's a short video on how it works:
      ruclips.net/video/YLapbNyYxLs/видео.html

  • @amirzeinali563
    @amirzeinali563 3 года назад +1

    if i want in expression Scale my shape write :
    ease(time,2,3,[0,0],[100,100])
    ease(time,4,5,[100,100],[0,0])
    This command does not execute, why?

    • @Animoplex
      @Animoplex  3 года назад

      The ease method won't work with an array. You'd need to just use 0 and 100 and then create an array on the next line, like this:
      myEase = ease(time,2,3,0,100);
      [myEase, myEase]

    • @amirzeinali563
      @amirzeinali563 3 года назад

      @@Animoplex If I want to continue the same formula that you wrote, it should be Unscale to 4 and 5, is it possible?

    • @Animoplex
      @Animoplex  3 года назад

      You can use 4 and 5 as values if you need. Recommendation is to try it, only one way to find out!

  • @davidsaint6097
    @davidsaint6097 6 лет назад +1

    Great tutorial! Can you think of a way to get more customised expression-based easing? Such as the expressions from Ian Haigh's Ease and Whizz plugin, but still being able to feed the values it transitions between?

    • @Animoplex
      @Animoplex  6 лет назад +1

      Hey David, thanks for the question! It's a good one. Are you familiar with bezier curve values? You can get a lot of control over an ease curve with them. There's a great plugin called Flow that allows you to visually adjust a bezier curve and apply it to keyframes via an expression. Check it out if you're interested: aescripts.com/flow/

    • @davidsaint6097
      @davidsaint6097 6 лет назад +1

      Animoplex Thanks so much for the advice! I had the first part down but the Flow portion looks like exactly what I've been looking for. Seems like a great way to visualise those curves before converting to an expression, and should give me greater control to keep my data-fed animations slick :D
      Thanks again for your help!

    • @Animoplex
      @Animoplex  6 лет назад

      Nice! Glad it helped you out. It's a great plugin and the Apply to Expression functionality is easy to work with once you have a good grasp at what's going on. Post back if you get it to work!

    • @davidsaint6097
      @davidsaint6097 6 лет назад +1

      Animoplex Thanks, will do :)

    • @davidsaint6097
      @davidsaint6097 6 лет назад +1

      If you look at aescripts.com/flow/ and scroll down to the bottom, there's a section called "Download additional preset packs to spice up your daily motion!" which I found had ample examples, plus you can right click and save the speed graph gifs to save as a visual reference for each value!

  • @Sam-qe5wj
    @Sam-qe5wj 5 лет назад +3

    How can I ease all keyframes on a layer using an expression?

    • @Animoplex
      @Animoplex  5 лет назад

      Easiest way to do this is with the free plugin from AE Scripts:
      aescripts.com/ease-and-wizz/

  • @NullStaticVoid
    @NullStaticVoid Год назад +1

    its weird, when I type it in just like this it gets a syntax error. (for which AE provides no help in locating)
    But when I use the expression menu and pickwhip the layer for input it works fine. I even copied both expressions to a note and compared them. No difference I can see?

    • @Animoplex
      @Animoplex  Год назад

      Fascinating! What expression are you trying to use that's giving you the error? Wonder if it's an issue with quotation marks not being formatted correctly?

  • @mohamedtayel334
    @mohamedtayel334 4 года назад +1

    Hello 1st thanks for the great tut ... I have a beginner question :) how can I create the layer call "control" in this tut and what are the values of it ... thanks.

    • @Animoplex
      @Animoplex  4 года назад +1

      In this video, the "Control" layer was made using an empty shape layer. You can use a null layer instead if you'd like:
      Layer > New > Null Object
      And then you can add an expression control:
      Effects > Expression Controls

    • @mohamedtayel334
      @mohamedtayel334 4 года назад

      @@Animoplex thanks a lot my friend

  • @mfaizfaufanid5947
    @mfaizfaufanid5947 6 лет назад +1

    oh god, this channel only get 3,2k ?? are you kidding me? *lets subscribee guysss!

    • @Animoplex
      @Animoplex  6 лет назад

      I’m just glad so many people are enjoying the content :) Thanks for the subscribe, updates coming soon!

  • @rifqiartstudio
    @rifqiartstudio 7 лет назад +1

    So how about with speed% because I use speed% in twixtor not a position

    • @Animoplex
      @Animoplex  7 лет назад

      The linear method simply translates an input range to an output range so any source should work. If you plug in your desired property as the first input argument and specify your output range, it should do what you want. Hope this helps, if you need clarification please reach out.

  • @geeleeggan
    @geeleeggan 4 года назад +1

    Psycho thought: can you nest an ease expression within a linear expression (or a random or some other type for that matter)?

    • @Animoplex
      @Animoplex  4 года назад

      Technically yes, it's easy to do with a few variables. What are you trying to achieve with this?

  • @antimczenko
    @antimczenko 6 лет назад +1

    АХХЕРЕННА! Спасибо чувак)

    • @Animoplex
      @Animoplex  6 лет назад

      Translated: “Thanks man!”
      You’re very welcome!

    • @MrPippec
      @MrPippec 5 лет назад

      А нам расскажешь, что он сказал? Я нихрена не понял

  • @aleksandragraphics9584
    @aleksandragraphics9584 5 лет назад +1

    Your tutorials is very useful for me, I really learn a lot thanks to you! But can you tell me please, in what case we can use the linear/ease/easeIn/easeOut expressions?

    • @Animoplex
      @Animoplex  5 лет назад

      Glad to hear it, thanks for the feedback! You can use linear and ease expressions on values you want to be converted from one range to another. For example, a rotating dial (0 to 360 rotation) can be linked to the transparency (0 to 100 opacity) of a layer using a linear expression. This would create a dial-like control for adjusting opacity of a layer.

    • @aleksandragraphics9584
      @aleksandragraphics9584 5 лет назад +1

      @@Animoplex thank you :)

  • @dmytro_korolkov
    @dmytro_korolkov 5 лет назад +1

    Nice video, thanks! Is it possible to give some kind of loop for linear or use it twice or more? In example I need to rotate main object on 180 degrees twice during 2 time periods of clock layer(between 105 and 260 degrees and repeat linear between 470 and 615):
    MAIN OBJECT EXPRESSION:
    r=thisComp.layer("clock").content("hour").transform.rotation;
    ease(r,105,260,180,360)&&ease(r,470,615,360,540);

    • @Animoplex
      @Animoplex  5 лет назад +1

      Try this on the rotation property:
      r = thisComp.layer("clock").content("hour").transform.rotation;
      if (r < 470) {
      ease(r, 105, 260, 180, 360);
      } else {
      ease(r, 470, 615, 360, 540);
      }

    • @dmytro_korolkov
      @dmytro_korolkov 5 лет назад +1

      ​@@Animoplex Thanks, it works! I have no experience to use such simple but interesting expression logic.

    • @Animoplex
      @Animoplex  5 лет назад

      Happy to help!

  • @MuhammadNurbasit
    @MuhammadNurbasit 4 года назад +1

    how can we change the speed and value if we use ease expression instead of keyframe?

    • @Animoplex
      @Animoplex  4 года назад

      Speed and value are determined by the input, ease() and linear() only affect how it is mapped.

  • @cauealvarenga1945
    @cauealvarenga1945 6 лет назад +1

    i dont get this linear expression, wouldnt
    value + slider
    do the same thing?

    • @Animoplex
      @Animoplex  6 лет назад +1

      In this simple example, probably. But any time you want to use a Slider (or other input) to be output to a different range of values, the linear method will be your best friend. It's more than simple addition, it's remapping the value to a new range. If you have additional questions, please reach out.

  • @EverlastingEclipses
    @EverlastingEclipses 5 лет назад +1

    i came here for trim path offset easeIn so i can ease in the infinite loop of trim path

    • @Animoplex
      @Animoplex  5 лет назад

      Awesome! Did it work as intended? Feel free to share your code, curious to see how you used it.

    • @EverlastingEclipses
      @EverlastingEclipses 5 лет назад

      @@Animoplex sadly.. :( i ended up doing the copy and paste the trimpath and path file as group multiple times (the only way to see the keyframe to manually set the difference between different paths and end the path also..well kinda) but expression as it can be easy to put big motion for me (with no knowledge of coding or expression code whatsoever) Its not easy to use the expression if i cant do any easing or stopping when i want to..
      its almost like a painting of food and i cant eat it..:( maybe you can teach us *trimpath and using expression* *to loop continuously and also ending it* *whenever we want it plus ease in and out of trimpath* as your next episode if you have time :D
      cuz i think trimpath is like one of many big dilemma that us beginning mographer face these days... :(
      Like if i wanted maybe deathstar's outline strokes being continuously trimpathed to look like it's moving or star wars or spaceship shooting laser continuously etc etc....

  • @ErickTessaro
    @ErickTessaro 7 лет назад

    Like

  • @wetwindisland6652
    @wetwindisland6652 7 лет назад +1

    Just a note...the plural of "parentheses" is "parenthesis" and not "parenthesie".

    • @Animoplex
      @Animoplex  7 лет назад

      Hey Matt, thanks for the feedback! Are you referring to the spoken pronunciation, or a typo in the closed captioning or PDF documentation?

    • @wetwindisland6652
      @wetwindisland6652 7 лет назад +1

      The spoken pronunciation.

    • @Animoplex
      @Animoplex  7 лет назад

      Looked into it, you're correct. In the first videos, parenthesis was pronounced "paren-the-see" with a silent "s" at the end. A few colleagues thought the same. But you learn something every day! Thanks for the clarification, Matt.

    • @Animoplex
      @Animoplex  7 лет назад +1

      Just wanted to follow up with another thank you. The 400 series has corrected this pronunciation error. Appreciate the heads up!

    • @wetwindisland6652
      @wetwindisland6652 7 лет назад +1

      Animoplex ahh you are thorough :) top marks