ValueAtTime Expression- Adobe After Effects tutorial

Sdílet
Vložit
  • čas přidán 24. 05. 2019
  • The valueAtTime() property is one of my most used expressions in Adobe After Effects. In this short tutorial, we'll cover the basics of how it works, and how to make a simple trail with a custom delay. Do don't delay, and follow along with this tutorial!
    If you have any questions just let me know in the comments.
    Download this project file:
    evanabrams.com/valueattime-exp...
    Connect on the Internets
    www.EvanAbrams.com
    ecabrams
    www.Facebook.com/EvanCAbrams/
    EvanCAbrams
    Suggest a tutorial topic: docs.google.com/forms/d/13A2e...
    Google+
    plus.google.com/+EvanAbrams/

Komentáře • 131

  • @JonJagsNee
    @JonJagsNee Před 5 lety +21

    10/10 tutorial. I figured this out a few months ago and it works great for so many projects

    • @ECAbrams
      @ECAbrams  Před 5 lety

      It is pretty rad. Glad you still enjoy the tutorial on it :)

  • @DavidHendersonHean
    @DavidHendersonHean Před 4 lety +1

    GREAT TUT - thank you. I can so easily apply this to so may projects, along side other expressions I'm familiar with.
    Got going within a few minutes, after hitting my head against a wall with some other tuts.
    Cheers!

  • @MordechaiHammer
    @MordechaiHammer Před 5 lety +3

    Evan, you explain complex concepts with so much clarity and professionalism.Thank you for what you do; it's a pleasure and a privilege to have access to the depth and breadth of your knowledge through these tutorials. I leaned heavily on your channel during an AE class I took a couple years ago, and have recently been hired to do some motion graphics. This is thanks, in no small part, to you.
    While I'm here: are there any especially surprising applications of this expression, outside of time remapping?

  • @DaveHuxtableLanguages
    @DaveHuxtableLanguages Před 4 lety

    Very useful! Many thanks. Just used it to link the complex motion of two objects together with a 1/10th second delay to make it look more random.

  • @taylorking7135
    @taylorking7135 Před 2 lety +2

    This lesson is incredible. Just learning expressions and the way you describe it is perfect! Thank you.

    • @ECAbrams
      @ECAbrams  Před 2 lety

      That's fantastic to hear! I hope I can make the time to create more videos like this one :)

  • @hachi-machi
    @hachi-machi Před 8 měsíci +1

    Youre a life saver! Thank you! I really like how clearly you expained what the functions refer to :)

  • @kevincruz2470
    @kevincruz2470 Před 5 lety +1

    Love your expression videos! Like that you show how an expression can be used in different ways 👍 helpful when learning for fun

    • @ECAbrams
      @ECAbrams  Před 5 lety

      Thanks! I'm glad the extra context helps.

  • @ZachHealey
    @ZachHealey Před 5 lety

    You are an awesome teacher! Keep up the great work

  • @RyanDaily
    @RyanDaily Před 5 lety +6

    Great info and I really like the way you teach. Thanks for sharing.

  • @DavidHendersonHean
    @DavidHendersonHean Před 3 lety

    Super helpful- as usual. Just revisiting this now, as you do such a great job of of explaining these concepts :) Thanks for your valuable time!

  • @idozaks7876
    @idozaks7876 Před 5 lety +6

    keep up the good work Evan! would love more advanced expressions videos and generally more expression stuff

    • @ECAbrams
      @ECAbrams  Před 5 lety +4

      I'm working on just such a video ;) we'll see how long it takes to get it together though.

    • @elissitdesign
      @elissitdesign Před 5 lety +1

      Seriously. It’s one of those areas that can never get enough attention.

  • @sympolzion
    @sympolzion Před 4 lety

    1:58 wow I know it’s not rocket science, but being an AE beginner...I could never really grasp what all that meant. But you just described it so wonderfully and it all makes sense now. Two minutes into the vid and I’m already learning. That’s Evan Abrams for you! 🤝

  • @peta23
    @peta23 Před 5 lety +1

    Great explanations! Thank you!

  • @ankursalunke5974
    @ankursalunke5974 Před 4 lety

    Exactly what I was looking for..... Thanks Mr. Abrams

  • @nematurd
    @nematurd Před 5 lety

    Thank you EC. This is a great help!

  • @WGCaTMInt
    @WGCaTMInt Před 4 měsíci

    This is really works for me! And very eazy to understand the expression. Thanks a lot!

  • @paulphilipps9480
    @paulphilipps9480 Před 2 lety +1

    This is very helpful thank you! Also enjoyed the puns!

  • @julialincoln-stefan1066
    @julialincoln-stefan1066 Před 5 lety +2

    I appreciate the detailed explanations. I think there's a huge chance continuing from here showing some real life applications. Like, maybe a simple example of how you use it in an actual project... not that I'd expect you to give away all your secrets :) But maybe kinda like the write-on video. Personally I'm a slow learner, and I get a lot of inspiration from seeing how it's actually used and then getting into more detail with the technique.

  • @nick_g
    @nick_g Před 3 lety

    great videos, i've watched 3 or 4 now and worth subbing

  • @uuguul
    @uuguul Před 4 lety

    Best tutorial about this expression I ever saw! :D Thanks a lot for the good work! : ))

    • @ECAbrams
      @ECAbrams  Před 4 lety

      Thank you so much. Glad you enjoyed it!

  •  Před 3 lety

    Thank U. I did it with path property. And it worked well.

  • @MESHK0FF
    @MESHK0FF Před 2 lety

    Thanks for such a great explanation

  • @steveschreiner7444
    @steveschreiner7444 Před rokem

    Index - 1 was the most important thing, I learned her Thanks!

  • @charlesm835
    @charlesm835 Před rokem +1

    Wow.. Excellent breakdown

  • @outovmusic
    @outovmusic Před 3 lety

    in Abrams we trust (regarding scripting), LOVE this channel. I'm pretty sure most people would use the echo effect to get something like this and then play with the echo effect. Problem is that method is very heavy on the processor and doesn't allow you to work smoothly in real time like you are which hinders work flow. So this is deffinetly a much better method. Thanks for offering new perspectives to what's possible.

    • @ECAbrams
      @ECAbrams  Před 3 lety

      I'm glad it helps expand what is possible for people. I hope it starts you on a journey into even more expressions :)

  • @anthonytonev1357
    @anthonytonev1357 Před 5 lety +4

    There is a lot of value you can get for the time of this tutorial.

  • @eduardoasta
    @eduardoasta Před 2 lety

    Many thanks. I used it to build a "spiked wheel".

  • @tylerarmentrout2775
    @tylerarmentrout2775 Před 5 lety +11

    This tutorial is super useful. Btw we met at NAB! I was the weirdo who said I owed my career to your tuts. If you’re ever in Seattle I owe you a beer.

    • @ECAbrams
      @ECAbrams  Před 5 lety +10

      I’m happy to hear it. That means a lot to me. When I hear that stuff it truly motivates me to keep the channel going.

    • @madmoon9946
      @madmoon9946 Před 5 lety +5

      @@ECAbrams I also got a job in motion design mostly thanks to the great content you put up haha, so thanks!

  • @FunFuerFelix
    @FunFuerFelix Před 3 lety +18

    Just as a reminder for myself :D
    P=thisComp.layer(index-1).transform.position;
    D=thisComp.layer("Adjustment Layer 1").effect("Slider Control")("Slider")*thisComp.frameDuration;
    P.valueAtTime(time-D)

    • @richochet
      @richochet Před 2 lety

      Thanks! I so needed this!

  • @tebrazepam
    @tebrazepam Před rokem

    Perfect explanation..

  • @TheCemeteryDetective
    @TheCemeteryDetective Před 5 lety

    I almost skipped this one...but here I am, watching my little arrow and dots move around the screen.
    Another great tutorial.

  • @korf.design
    @korf.design Před měsícem

    Thank's a lot!

  • @Grumpist1
    @Grumpist1 Před 5 lety

    Just last week I was wishing there was a time delay option inside the shape repeater (which would still be good to have, Adobe...) but this seems like it could solve that issue, which is nice.

    • @ECAbrams
      @ECAbrams  Před 5 lety

      This can get you close for sure :)

  • @TyronePerry
    @TyronePerry Před 4 lety +1

    My one comment that I was hung up on...
    When trying to reference one value in an array... (ref. X value but not Y value)
    You have to do the array indexing after valueAtTime():
    Don't do this:
    t = thisComp.layer(index-1).transform.position[0].valueAtTime(time - x);
    Write it like this:
    t = thisComp.layer(index-1).transform.position.valueAtTime(time - x)[0];
    Thank you Dan Ebberts for this bit of info.

  • @rommlll
    @rommlll Před rokem

    Thanks Evan.

  • @FandubUniverse
    @FandubUniverse Před 2 lety

    OMG THANK YOU SO MUCH!!

  • @alideep9656
    @alideep9656 Před 5 dny

    Thank you

  • @QZ_AU
    @QZ_AU Před 2 lety

    Gosh I wish I have discovered this earlier! I wasted so much of my valuable time doing it myself (and failing). Thanks!

  • @Ement
    @Ement Před rokem

    Another use - Create an animation (can be 3D cams, 3D nulls, colors, sliders, etc.) and set a key at frame 0 and at the last frame in the comp. Then, create a null and add a slider control, this will be used to drive the time remap of the comp! Simply add the expression : (valueAtTime(sliderControl)’ to whatever value you want to control. sliderControl is the slider you made on the null in the last step. Then, animate the slider and it will work just as fine remapping a video will!

  • @ethanwimsett
    @ethanwimsett Před rokem

    Great pun!

  • @gaston.
    @gaston. Před 3 lety

    thank you... once it sinks in, its a handy tool to know!

  • @ErfunA.M
    @ErfunA.M Před 4 měsíci

    this is Echo with costume shaps. it's awesome.

  • @kyrojohn
    @kyrojohn Před 3 lety

    Hello Evan,
    I think that ValueAtTime could be used to animate a follow through hair or something, could you explain if it was possible ?
    Big fan, thank you for these amazing tuts

    • @ECAbrams
      @ECAbrams  Před 3 lety

      Great suggestion! I've done that a few times using a Math.sin() to generate the motion, value at time to get samples from later or earlier, and all of that driving relative puppet pin positions. But it's a great idea. Does any of that help get you started?

  • @JouMadrid
    @JouMadrid Před 4 lety +1

    I have a question: How can I make stop the follower object at a certain point, not at the leader's final position? Thanks for the tutorial!

    • @ECAbrams
      @ECAbrams  Před 4 lety

      if we modify the time to be now, or now minus time, that could be a way. You might even keyframe that relationship. Does that help?

  • @json5467
    @json5467 Před 5 lety +3

    Hey Abrams I am still confused by what frameDuration means at 6:30. Could you rephrase it and why we multiply the slider control number by thisComp.frameDuration? Thanks!

    • @ECAbrams
      @ECAbrams  Před 5 lety +2

      frameDuration is the time in seconds that one frame lasts. So in a comp that is 24 fps for example, one frame last 1/24th of a second. Because valueAtTime understands inputs in seconds only, if you want to relate with the the value on a per frame basis you need to do this little bit of math. So if we want to get the value from 5 frames ago we want to know how long in seconds 5 frames is. We can find that number by multiplying 5 by the frameDuration. Does that make sense?

  • @hi.val.design
    @hi.val.design Před rokem

    What would I need to add to the expression "var P=thisComp.layer(index-1).transform.position;
    var D=thisComp.layer("Adjustment Layer 1").effect("Slider Control")("Slider")*thisComp.frameDuration;
    P.valueAtTime(time-D);" in order to make the followers also respond to scale?
    Love the tutorial. Extremely helpful and well explained.

    • @ECAbrams
      @ECAbrams  Před rokem

      Glad you enjoy it. The main difference, apart from applying the expression to the scale property, is that is needs to reference the transform.scale of another layer and not the transform.position of the other layer.

  • @itsajay1
    @itsajay1 Před 2 lety

    Thanks for the tutorial mate. What if the trailing obejct inpoint needs to be indepent

    • @ECAbrams
      @ECAbrams  Před 2 lety

      In what sense should it be independent?

  • @HaroldFromSpace
    @HaroldFromSpace Před 3 lety

    Hey Evan, for something like a money counter graphic, i was wondering if it was possible to work that into a mogrt / expression? like have a counter that counts up/down to a number controlled by a slider within a timeframe controlled by another slider? I kinda can see how time remapping with ValueAtTime might accomplish this but was wondering if there was a better way you knew of.

    • @ECAbrams
      @ECAbrams  Před 3 lety

      It really depends on the methods and mechanism you're planning to use. Value at time could be part of it. I'm not sure it's the primary driver in such a system though. Any time we're talking about going from one value to another over a period of time, I would recommend thinking about the linear() and ease() functions that remap values like time from one thing to another.

    • @HaroldFromSpace
      @HaroldFromSpace Před 3 lety

      @@ECAbrams thanks! I got something with linear that works

  • @donggeon-kim
    @donggeon-kim Před 3 lety

    Hi! Great video! May I know how you made the balls move in that infinity-symbol path? Can you share with me the codes you used for this if any codes were involved? Thank you!

    • @evanabrams2735
      @evanabrams2735 Před 3 lety +1

      Hi. That infinity sign is made with one circle making the journey around using position keyframes. And others following it using the valueAtTime() that we discuss in this video. I don't think there was much more to it than than. I hope that helps.

    • @donggeon-kim
      @donggeon-kim Před 3 lety

      @@evanabrams2735 Thank you so much for your answer!

  • @MorZarCH
    @MorZarCH Před 2 lety

    Hi, I'm trying to implement the 9:40 version from scratch, It's not working and I'm not sure if the tutorial is "too old" and something has been updated to after effects, but it's not following the path of the null. (not updating it's position at least, the thing with the slider seems to work)

  • @Fabitalism
    @Fabitalism Před 3 lety +1

    Is there a way to copy the value of keyframes for position? That a box follows the exact movement of another object, but at the current position of that object? (Every time I copy the position value, the objects moves to the exakt same position, which I did not want - only the value)

  • @Winkwave0
    @Winkwave0 Před rokem +2

    P=thisComp.layer(index+1).transform.position;
    D=thisComp.layer("Adjustment Layer 8").effect("Slider Control")("Slider")*thisComp.frameDuration;
    P.valueAtTime(time-D)

  • @thomasnooren1714
    @thomasnooren1714 Před 5 lety

    Hi Evan! I was wondering how you made the trail in the intro and outro animation go in front of and behind the text layer. I would try to tackle that problem by making them 3D layers and shifting the position ffom 1px to -1px. Is there an easier way to do this?

    • @thomasnooren1714
      @thomasnooren1714 Před 5 lety

      @@arturmartirosyan6286 But what if the trail is longer than it is now?

    • @ECAbrams
      @ECAbrams  Před 5 lety

      @@thomasnooren1714 Hey Thomas. What i did was just make everything 3d. The text, the dots. The leader dot is moving in front and then behind the text by a significant amount. Maybe 100px. I wanted a bit of size change as it went around the course. Does that make sense?

    • @thomasnooren1714
      @thomasnooren1714 Před 5 lety

      @@ECAbrams It does! Thanks!

  • @EverlastingEclipses
    @EverlastingEclipses Před 2 lety

    I hope you can see this message..
    Question..
    what if i not only wanted to delay but also have the trails to freeze on whereever it stopped and not keep going to the leader's keyframe, (so it stays behind the leader and not overlap)

    • @ECAbrams
      @ECAbrams  Před 2 lety

      I'm not sure I understand the intention. But maybe this will help: valueAtTime() literally returns the value at whatever time you put inside the argument (). So if you did valueAtTime(time) that would be whatever the value is now. If you did valueAtTime(1) that will be whatever the value is, or was, or will be at the 1 second mark of the timeline. So, if you want to change what time is being referenced you might use a slider control inside the valueAtTime() argument or you might use x+time*y so you can control the offset and ratio of time being offset? Does that get you started at least?

  • @mauriciopalaciopinedo2523

    Question here: I have multiple layers (like a dropdown menu) and I want to animate the top layer and the other layers follow that top layer but with a delay but also keeping the relative position at the beginning and at the end of the animation, so How can I achieve that?
    thanks and sorry for my bad english

    • @SrJinx
      @SrJinx Před 4 lety

      I worked with something similar and I've resolved this, dude. Share me your mail to send you my file with this expression =D

    • @mauriciopalaciopinedo2523
      @mauriciopalaciopinedo2523 Před 4 lety

      @@SrJinx mjpalacio91@gmail.com, thanks man!

    • @asyabelk
      @asyabelk Před 2 lety

      @@SrJinx hey, I now it's been 2 years but can you please send me that?

  • @hesher4360
    @hesher4360 Před 3 lety

    hi Abrams im not sure if you would reply to a comment from a video more than a year ago.. but I have a question.
    I followed through your tutorial til (8:10) and made a 'leader' and a 'follower'. it worked until here.
    Then I made the 'followers' into a triangle as well and applied 'Auto-orient' to keep track of its direction.
    However the first and last few frames of 'followers' had some problems. (looking at the wrong direction, layer teleports here and there..)
    I don't know how the 'Auto-orient' effects the layer without modifying the rotation of a layer,
    so I can only guess that I can't use 'Auto-orient' with the expression for the 'followers'.
    Can you please help me understand which property is effected by 'Auto-orient' and why it can't be used with 'valueAtTime()'?

    • @ECAbrams
      @ECAbrams  Před 3 lety +1

      The issue with the tangents can be solved by pulling out tangents for the motion path to remove the ambiguity. That should help smooth the issues I think.

    • @hesher4360
      @hesher4360 Před 3 lety

      @@ECAbrams you're right. I just have to get rid of auto orient in this case. I figured that it's a zero length vector and being static should result abnormally while it doesn't move. thanks.

  • @maria123jed123
    @maria123jed123 Před 9 dny

    How do you adjust the space in between the circle? Thank you in advance!

    • @ECAbrams
      @ECAbrams  Před 9 dny

      In which sense? If you increase the difference in time between each layer that will cause a larger change in the position. But if you just want to change where the circles are you must adjust their position values. Does that make sense?

  • @Awesomeneshed
    @Awesomeneshed Před 4 lety

    I am trying to use this technique with path points. I have created nulls from the path, so that the path points follow the nulls. I want all of the nulls to follow 1 null, but be a little bit behind, so that my shape becomes a bit wobbly. I am stuck, trying to implement valueAtTime to give my nulls a slight delay.
    So my question is: How do you make an object follow another object with a delay, while still maintaining the positional difference, so that my shape stays intact?

    • @Awesomeneshed
      @Awesomeneshed Před 4 lety

      So i figured out a solution. I had to make another null for each path-point, which was pick-whipped to the x-position of the point it had to follow. I then subtracted/added to the [temp, temp] that the pick-whip created for me, so that the null was offset by the right amount to keep my shape intact. The null, which my path-point followed, could then be pick-whipped to the extra null, so that I could add the valueAtTime-expression to that null.
      If this made any sense at all, it could make for a great tutorial on how to offset without following the exact position of another object.
      Great tutorials btw. I love your videos!

    • @sanjeeva2153
      @sanjeeva2153 Před 4 lety

      Hi dude, I am trying to achieve the same effect,
      could you please elaborate more on the solution or it will be great if u make a tutorial on this

  • @NotavelMundoOculto
    @NotavelMundoOculto Před 2 lety

    I simply cand create 'var' , whenever i wrote var in front of any of my variables it acuses an error "undefined value used in expression"

    • @ECAbrams
      @ECAbrams  Před 2 lety

      I think I would have to see a copy/paste of the lines you've written to really understand what's happening.

  • @hungvinh7879
    @hungvinh7879 Před 3 lety

    This tutorial was great!
    I'm hoping somebody can help me. I'm trying to replicate a spirograph that follows a path and grows, so I need the followers to stay put instead of resolving into the leaders position.
    So I have two questions:
    1) Is there a way to make the following layers stay in the position instead of resolving in the leaders position?
    2) Is there a way to duplicate the followers with an expression instead of duplicating the layers? I need like 500 following layers and it gets a bit crazy.
    Any info on this would really help...thanks in advance!!!

    • @ECAbrams
      @ECAbrams  Před 3 lety

      1. certainly, with expressions and parenting you could cause all kind of movement having children layers ignore or adopt or modify their relative properties based on the parent's properties. thisLayer.parent.transform.rotation*-1, for example, would have a child counter-rotate as the parent rotates causing the appearance of no rotation at all in the child layer.
      2. when you're dealing with 500+ elements it's best to consider a particle solution. perhaps a repeater on shape layers. Perhaps an effect or script is needed. But when you need large arrays of things to behave procedurally you'll want to look into 3rd party plugins I think.

    • @hungvinh7879
      @hungvinh7879 Před 3 lety

      @@ECAbrams Thank you! I'm a newbie with expressions...what would I change from your expression to make the follower stay put in it's position instead of a delay?

    • @ECAbrams
      @ECAbrams  Před 3 lety

      @@hungvinh7879 So, not follow at all? I'm not sure I follow what you're looking to see happen specifically.

    • @hungvinh7879
      @hungvinh7879 Před 3 lety

      @@ECAbrams Sorry I know this could sound confusing. So I want it to follow but then not resolve at the endpoint of the leader. So once the follower follows it stays in that position instead of ultimately resolving in the leaders position. Essentially leaving a trail of followers that stays put. Does that make sense? Not sure if that's even possible.

    • @ECAbrams
      @ECAbrams  Před 3 lety

      ​@@hungvinh7879 well, with valueAtTime(x) you'll get the value that was at time x. A static time. If you were to take the ValueAtTime(time+x) it's the current time, plus a static value. So the first example would never change or move at all because it's only referencing what the value is at that specific time. Does that help?

  • @noyceofficial
    @noyceofficial Před měsícem

    how to stop and start time at desired time frame ?

    • @ECAbrams
      @ECAbrams  Před měsícem

      I'm not totally sure I understand. What are you trying to do specifically?

  • @paulvansommeren
    @paulvansommeren Před 5 lety +8

    I 'm only here for the PunsAtTime(0:14;0:29)

  • @rajeshfatehpuriya6507
    @rajeshfatehpuriya6507 Před 2 lety

    i need to get "current time frame number" at "value of slider control". can you help me . how i can achieve this.

    • @rajeshfatehpuriya6507
      @rajeshfatehpuriya6507 Před 2 lety

      Basically i am making growing leaves on a path which has trim path on it(linked to a slider control) and all leaves are linked to path(leaves animation in a precomp). Now i want to trigger leaves animation start when trim path cross the each leaves. currently i have done it from time delay slider rig and match the speed.

    • @rajeshfatehpuriya6507
      @rajeshfatehpuriya6507 Před 2 lety

      this is the video link of that animation instagram.com/p/CT7E7fYJniV/?

  • @elijahlucian
    @elijahlucian Před 3 lety

    isn't there some way to just write a script that will "add X followers" ?

    • @ECAbrams
      @ECAbrams  Před 3 lety

      So you have one layer and you would like to hit a button and have X things that are followers of that layer? I'm sure you could script up something for that. It doesn't sound impossible to me at all.

    • @elijahlucian
      @elijahlucian Před 3 lety

      @@ECAbrams thanks I will be looking into these expressions

  • @user-uf5cu8qj8t
    @user-uf5cu8qj8t Před 2 lety

    var P=thisComp.layer(index-1).transform.position;
    var D=thisComp.layer("Adjustment layer 1").effect("Slider Control")("Slider")*thisComp.frameDuration;
    P.valueAtTime(time-D)

  • @adamphillips6747
    @adamphillips6747 Před 2 lety

    I wanted to add .position change to my ValueAtTime and I am pulling my hair out!!! I know it's gotta be easy.

    • @ECAbrams
      @ECAbrams  Před 2 lety

      are you trying to find the value of a position property at a certain time? Or what's the combination of position with value you're looking to achieve?

    • @adamphillips6747
      @adamphillips6747 Před 2 lety

      @@ECAbrams basically looking to do this:
      thisComp.layer(index-1).transform.xPosition+140;
      valueAtTime(time-.5)
      Try to move stars in at different positions with delay. I know I am missing something easy but I am new to expressions. Thanks for the reply.

  • @felixbrochat
    @felixbrochat Před 4 lety

    came for the tutorial, stayed for the jokes...

  • @LoveForGraffiti
    @LoveForGraffiti Před rokem

    So cool learning AE from Seth Rogan 😁

    • @ECAbrams
      @ECAbrams  Před rokem +1

      I suppose all Canadians of a certain age do sound the same eventually.

  • @aaronjohnson4604
    @aaronjohnson4604 Před 4 lety

    Nice pun ! lol

    • @ECAbrams
      @ECAbrams  Před 4 lety +1

      Finally someone appreciates the true value of the channel!

  • @ChristopherAzar
    @ChristopherAzar Před 5 lety

    Abrams at his brutalist

    • @ECAbrams
      @ECAbrams  Před 5 lety

      Oh, I am always brutal... but more like the architectural style.

  • @studeonyx
    @studeonyx Před 3 lety

    Punny that...

  • @dianastanciu7625
    @dianastanciu7625 Před 4 lety

    This is not a good tutorial, unnecessarily complicated and dives right into examples without first explaining what the expression actually does....

  • @jodise111
    @jodise111 Před rokem +2

    P=thisComp.layer(index-1).transform.position;
    D=thisComp.layer("Adjustment Layer 1").effect("Slider Control")("Slider")*thisComp.frameDuration;
    P.valueAtTime(time-D)