You sir have a real talent for explaining and visually simplifying complex things. Thank you!
@ECAbrams2 жыл бұрын
Glad it was helpful!
@lakabaka5356 Жыл бұрын
var p1 = thisLayer. transform. position; var p2 = thisComp.layer("Null 1").transform.position; var ScaleFrom = thisComp.layer("Adjustment Layer 1").effect("Scale From")("Slider"); var ScaleTo = thisComp.layer("Adjustment Layer 1").effect("Scale To")("Slider"); var Hitin = thisComp.layer("Adjustment Layer 1").effect("hitbox Inside")("Slider"); var HitOut = thisComp.layer("Adjustment Layer 1").effect("hitbox Outside")("Slider"); var d = length(p1, p2); var r = linear(d, HitOut, Hitin, ScaleFrom, ScaleTo); [r,r]
@ChrisTopher094 ай бұрын
You're a real one for this! TY!
@alienthefirst13 ай бұрын
God bless you man!
@BobShurunkle2 ай бұрын
thanks so much. were you wearing a cape at the time? :D and just in case anyone is looking for the other variation var p1 = thisLayer. transform. position; var p2 = thisComp.layer("Null 1").transform.position; var s = content("Rectangle 1").content("Rectangle Path 1").size; var dx = length(p1[0],p2[0]); var dy = length(p1[1],p2[1]); if (dx
@trejohnson76775 ай бұрын
This is insanely inspiring as web developer. My mind is melting from the possibilities.
@hannaisachanka97484 жыл бұрын
thanks for a thorough explanation of the expression, that's rare and priceless!
@ECAbrams3 жыл бұрын
Glad it was helpful!
@joshlatinka92354 жыл бұрын
Best tutorials....PERIOD!!!!
@Rijckenberg4 жыл бұрын
Merry Christmas and many thanks for the great tutorials in 2020. Happy new year
@toddlawrimore35773 жыл бұрын
Very helpful. Great work pulling the information together for us
@opptender19754 жыл бұрын
Thanks for another great tut. Merry Xmas. Regards from Portugal.
@ashishrandive7727 Жыл бұрын
For anyone trying to do this for opacity, simply change the [r,r] to [r]
@DaveCurrieDesigns3 жыл бұрын
Love the C4D solution to this - exactly what I was looking for!
@ECAbrams3 жыл бұрын
That's great. The c4d mograph module is a lovely thing for procedural graphics like this.
@DaveCurrieDesigns3 жыл бұрын
@@ECAbrams yep I wish Lite had more advanced features but it's not bad for being free with AE.
@ECAbrams3 жыл бұрын
@@DaveCurrieDesigns I will say that their strategy paid off on me. I got the studio version after only a season of exposure to the lite version.
@aina-at-ca Жыл бұрын
thank you so much for this content!
@marans224 жыл бұрын
Excellent tutorial
@Ολεχ3 ай бұрын
Thank you 👍
@aftereffectstechdesk4 жыл бұрын
Great lesson as always!
@manolomaru4 жыл бұрын
Ultrasupermega useful bro!
@zhiwei504 жыл бұрын
This is great!
@Mathing4 жыл бұрын
Loved every bit of this tutorial! I was wondering of there is a way to do all these on a single shape layer😮
@ECAbrams4 жыл бұрын
Where there's a will, there's a way I suppose. This can always be transposed to individual contents, groups or shapes I suppose. But that would not be any less complex in execution.
@alideep9656 Жыл бұрын
Amazing
@ECAbrams11 ай бұрын
Thanks
@emadsalah87694 жыл бұрын
Good job
@BienvenidoCruz4 жыл бұрын
Nice. I think you can also use the sampleImage expression to change their sizes according to a map layer.
@ECAbrams4 жыл бұрын
Absolutely. for details, see other tutorial on this channel.
@trejohnson76775 ай бұрын
Hmm. Finna do this in REACT.
@nicolebry11203 жыл бұрын
Still comig back to your videos, Mr. Abrams. As always, thank you so much for the excellent tutorial! I'll be attempting to use this principle to make a reactive faux drop shadow for a bouncing ball I'm having to animate for my 2D Animation I class. Little do my peers know, I've got some AE experience well before I went into the class, so it's time to flex for me if I can pull this off. Haha! Wish me luck. I will surely @ mention you on Twitter when it's all posted up.
@AzyyyyIV3 жыл бұрын
Loved this tutorial, I'm trying to tweak the first example to effect the position instead of scale. The problem i'm running into is the position for my grid of dots is all set to 0.0 , 0.0 when I apply the expression to it (I changed anything with the word scale to position in the example). Was wondering if anyone knows how to keep the grid of dots in their original place with the cursor moving them slightly as it gets nearby.
@ECAbrams3 жыл бұрын
I would apply the expression to the anchor point instead of the position. Does that make sense?
@sdbvisuals Жыл бұрын
This is so awesome. I wonder - would there be a way through expressions to have the effector null affect the yRotation of the squares in the grid?
@ECAbrams Жыл бұрын
Ceratinly. Any property can hold an expression. So long as you format the outputs to be in line with the expected format of the property. So if you're adapting what you see here, make sure the output is just one part, and not two like scale. And you may want to use a linear() expression to remap the values to the rotation range you're interested in. Does that help?
@sdbvisuals Жыл бұрын
@@ECAbrams Somewhat - I've formatted the output the affect the Y Rotation property, but now I run into an issue where the Null pointer no longer effects the boxes. Is there something that needs to be change specifically for 3D layers?
@dickypbkr3 жыл бұрын
I love your tutorials , Plz tell me expressions of advanced or mid level I get confused and fogot now what i do when i am doing sonthing and that work get to a difficult level
@ECAbrams3 жыл бұрын
Have you checked out a few expressions reference resources? Like ae-expressions.docsforadobe.dev/ and helpx.adobe.com/after-effects/using/expression-language-reference.html they can be helpful things to bookmark and reference when you're working.
@antonfullerton35242 жыл бұрын
This is exactly what I needed, thank you for the great tutorial. I do however have one question and forgive me if it's been asked already, but is it possible to have 2 null controllers working as triggers for the shapes?
@ECAbrams2 жыл бұрын
Anything is possible. The issue here is that you would need all layers to be evaluating both, so likely it would require more if/else expressions. Maybe even looking at the contributions of each trigger and blending them? It's possible, but I would not say easy.
@dr.respect4351 Жыл бұрын
Hello so what does it called For the squares (grids) and the null If i want to tell my friend about it
@VitaliYaronskiDOTcom3 жыл бұрын
This is a great tutorial ! I have a qusetion about how can I make it react to a bigger surface as shape for example? So I can make a custom transition upscaling and downscaling squares as my shape moves from left to right
@ECAbrams3 жыл бұрын
It might be best to take a different methodology entirely and look at using sampleImage() to reference a control layer's values rather than a shape. Does that make sense?
@VitaliYaronskiDOTcom3 жыл бұрын
@@ECAbrams sure, makes sense ! Thank you for suggestion and #standwithUkraine !
@annadonos3 жыл бұрын
Thank you for this video! Can somebody help How can I adapt the first expression to scale only horizontally?
@ECAbrams3 жыл бұрын
if the scale output is [A,A] then you just need to replace the vertical part with a constant number like 100. Let me know if that helps.
@annadonos3 жыл бұрын
@@ECAbrams it works!! Thank you soooo much, it's been bugging me because I couldn't figure out why it kept giving me errors but your answer finally resolved my problem for this animation. You're the best! Thank you again for taking the time to answer, you rock🤘
@nathitappan Жыл бұрын
As usual, when I have an AE problem I dig through the decade of wisdom in your channel. I haven't found yet my answer, so I figured I'd ask while I keep searching. If my grid has to be of hexagons, and I want to very precisely (namely the entire shape at once, not gradually) animate either the stroke of it, or the fill, on a ripple effect towards the outside the comp, how would you go about it? So once a shape is animated, it's very surrounding shapes get animated next. I'm thinking maybe some sort of gradient map, or manually design/animate it, but I'd hate to go about it manually if I could avoid it. Next bit of the problem: let's say I start two ripples from different positions and wanted to point out the intersecting parts with yet a different color? That'd be even more important if I could change that efficiently, just in case the client wanted to make it ripple from other spots. Let me know if your incredible brain has any ideas that I could explore... Thank you again for all the content we get to explore when we hit a wall!
@ECAbrams Жыл бұрын
Hi! I saw that other comment on the control layer tutorial. Hopefully this is a good spot to meaningfully reply. The trouble with that method for solving this problem is that we really only have one axis to work with, light to dark. Now, you could create a map that dynamically creates the overlapping areas as a unique map to be referenced and maybe pipe that into a fill effect. That way you can blend the effects that are responding to unique maps? Now, I would be remised if I didn't mention that this kind of arrays reacting to fields is the specific domain of c4d and its Mograph module. It perfectly captures this exact function of boolean fields affecting an array of objects. That might be a direction to look into as well. c4d lite has access to some of these tools so that might be a viable path. Let me know if that helps, and please feel free to follow up by email if that's easier to info@evanabrams.com
@nikkivanonna34996 ай бұрын
Hi, can I use this method on time remapping? I have an animation that transforms a shape from A to B. I want the proximity of the null to affect the position of the playhead in that animation. So the closer it is, the closer then animation is to point B. Hope that makes sense!
@ECAbrams6 ай бұрын
If a layer has a property you can use this expression on it. Anything that holds a value can take the input of distance and turn it into whatever range you like. Colour. Time. Angle. One, two and three part properties. Anything is possible!
@nikkivanonna34996 ай бұрын
@@ECAbrams Thank you for your quick reply! When I try to add the expression to the time remapping value, I get the error: 'expression result must be of 1 dimension, not 2'. Any idea how to solve this?
@ECAbrams6 ай бұрын
@@nikkivanonna3499 For sure. What it's telling you is that the output just does fit. Something of dimension 2 has two parts. Like position has an x and y expressed as [#,#]. Same with scale [100,100]. So something of dimension 2 is a two part array. Something of dimension 3 would be like 3d position with an z, y, and z. Dimension 1 is just one number. Rotation, time, most effects properties. So, you just need the final output to be one number instead of two numbers. I think in this example the end is x=something then [x,x]. So just make the last line the single output. Does that make sense?
@nikkivanonna34996 ай бұрын
@@ECAbrams Yes that totally makes sense! I got it working now. Thanks a lot!
@ronaldbrugger47702 жыл бұрын
Did you start with a repeater grid or how did you get all the individual shapes neatly in a grid?
@ECAbrams2 жыл бұрын
In this case, because they are all individual layers, they would have been created by moving, duplicating and snapping them by holding the cmd key. One, then two, then four, then eight, then it's done before you know it.
@felipezapata31463 жыл бұрын
Awesome tutorial! What if instead of affecting the scale we affect the shape layer... so going from a square to a triangle?
@ECAbrams3 жыл бұрын
We need to think about what property we want to change. So, in this example if you want something to go from 4 to 3 sides, you might apply this kind of thing to the number of sides of a polygon shape object. If you wanted change to custom paths, you might reference a key index on that path instead. It's all about adapting the output to make sense with the property. Does that make sense?
@felipezapata31463 жыл бұрын
@@ECAbrams Thanks Evan! I know what you mean but I don't l know how to apply this! would be awesome to see a tutorial for this!!
@andrewk79114 жыл бұрын
Thank you for this tutorial, i would like ask, how can i use this forexample in web pages (active BG or..)?
@ECAbrams4 жыл бұрын
If you want something to be dynamic in a live sense you will want to look into other tools like Xd to create live reactive web elements.
@andrewk79114 жыл бұрын
@@ECAbrams ok, thank you
@cordeaumarc34067 ай бұрын
How i can ctrl C and V expressions in all layer ? and not to avoid doing it on each layer individually ?
@vesto68644 жыл бұрын
This is crazy 😧😧😧😧
@stephendallas9709 Жыл бұрын
Can I export this asset as a lottie or similar that would be compatible with iteractive website design?
@ECAbrams Жыл бұрын
I'm not sure of any way to get interactive functionality out of Ae. I would recommend, if that's the output you're after, looking at something like Rive that can make interactive animated web experiences. It'll be much simpler than grafting a video app into creating interactive exports.
@IanStarr4 жыл бұрын
Cute tutorial, but did u ever heard of Motion3 Falloff tool?
@ECAbrams4 жыл бұрын
Yup. And many others besides.
@thegoodthebadandtheugly579 Жыл бұрын
So, do you export it after? Can I add it to my website?
@ECAbrams Жыл бұрын
I'm not totally sure what you mean. What are you looking to do specifically?
@thegoodthebadandtheugly579 Жыл бұрын
@@ECAbrams Create some interactive maps or interfaces on a website? 🤔 is this something I need AE for or another program might be easier? I am using wix and readymag as my website platforms..
@ECAbrams Жыл бұрын
@@thegoodthebadandtheugly579 It's important to understand that After Effects creates moving things but it exports video and images. If you want animated elements I recommend using After Effects. But, those outputs are not themselves interactive. You could export a .json of an animation. But, to trigger that animation you will need to do some coding. Most likely you want something like Rive, where you can do animation and interactivity through states and triggers. People can click and mouse over a Rive player running as an imbed on your website for example. You might even code these interactive things using Javascript entirely in Dreamweaver perhaps. The methods described in this video are JavaScript. But any export from Ae is not interactive in itself. Does that make sense?
@thegoodthebadandtheugly579 Жыл бұрын
@@ECAbrams makes perfect sense - I appreciate highly your response! Thanks so much and you are amazing and your videos are really good! Wish you all the best in your journey!
@pete-g-yih4 жыл бұрын
Great video, thank you so much. I have a question, however... what if I wanted the grid to interact with some keyed out footage, e.g. where there IS footage the grid scales, and where there is no footage it remains unaffected? My ultimate aim is to create some dot matrix animations of people doing things. Cheers!
@ECAbrams4 жыл бұрын
We can do this with the layer maps technique using a particle system. To footage luma values become the map. Would that work?
@pete-g-yih4 жыл бұрын
@@ECAbrams Awesome, thanks, I don't have Trapcode Form but will look to pick it up and give it a go, cheers for the tip!!
@dhw70904 жыл бұрын
5:21 hello! I have a question. why do you use the operator '&&' in the sixth statement? I think the operator '||' which means 'or' is more proper to use. Isn't it?
@ECAbrams4 жыл бұрын
we want the logical "and" not the logical "or". If we used "or" then we would be covering cases when either the pointer is intersecting the vertical OR the horizontal. We want only the case when both are true.
@shvalta4 жыл бұрын
hi, i wonder how could i achieve this. layer reacts to cursor coming closer. but after hovering, layer stays in its hovered state. Like i would like to make layers to disappear but not to show up again
@ECAbrams4 жыл бұрын
That's a great example of something that's simpler to create in the full version of the c4d mograph system, where states can be held or frozen, remembered and transferred. The logic behind doing this with the expression language would be checking if at some point in the past the layers had intersected. I would check out Dan Ebberts work into those areas.
@fabio_arnold3 жыл бұрын
Hey man, awesome Tutorial! I tried the same expression for the first method but there is an error in line 1 where p1 stands called: Error: Undefined value used in expression (could be an out of range array subscript?) Do you have any idea what i can do to fix this?
@ECAbrams3 жыл бұрын
Usually "undefined" is warning us that you've used a variable that Ae doesn't understand. So if I use "p1" later in an expression, but I didn't say what "p1" means it will tell me it's undefined. Most likely you're missing a semi-colon after the variable definition to close the line. That's my first suspicion.
@fabio_arnold3 жыл бұрын
@@ECAbrams you were right! actually i was missing 4 semi-colons haha. Thank you very much for the quick response and help!
@fabio_arnold3 жыл бұрын
@@ECAbrams Do you have any Idea how to adopt this mechanic / expression onto the rotation /orientation of an object towards the null? So that if the null is far away the object is standing still but by the time the null moves closer the objects orientation is turning into the dircetion of the null?
@ECAbrams3 жыл бұрын
@@fabio_arnold sounds like you're trying to do something commonly called a "look at". There are specific methods you'll want to deploy that find the angle of a vector between two points. If those two points are the null and the layer's position, then the vector would be the rotation you want, and the relationship would be about feathering that change from value to the lookat. I would star your investigation there.
@fabio_arnold3 жыл бұрын
@@ECAbrams found a solution, thank you very much! Greetings from Germany :)
@24fps78 Жыл бұрын
Fantastic Video Mr. Abrams! I was looking to sort out a problem and I think this is the starting point of the solution, I'm not that strong with expressions though, maybe someone can give me some help: I'm trying to have blocks in a cluster twitch randomly on and off with this expression on every block: myStart = framesToTime(10); frames = thisComp.layer("FX Control").effect("Hold Frames")("Slider"); seed = Math.floor((time - myStart)/framesToTime(frames)); seedRandom(seed,true) random(1)
@evanabrams2735 Жыл бұрын
So, if you want to use a hitbox like a letter or really any shape that isn't easily expressed with maths, you'll need to do something visual. you might want to explore solutions involving the sampleImage() and remapping the pixels sampled to your desired randomness. Maybe that can get you started? Then you can literally draw the hitboxes using letters and a guass blur? I caution people just beginning with coding away from trying to use chatGPT or any AI aids. They can speed up work like jumping into an F1 car, but if you don't know where you're going, you'll just get lost or crash faster. Also, after using them a little, I found that these systems return results that look correct but are actually very wrong. This is true of all their outputs because they are just trying to predict the next line to write in order to fit with a pattern described by the prompt. In anything where the output must actually be true to be useful, AI has failed me miserably while appearing to have succeeded. Thankfully there are many great resources for getting a foundation in Javascript and heaps of forums where people have been trading solutions and methods with decent explanations for years. I hope that helps.
@24fps78 Жыл бұрын
@@evanabrams2735 thanks so much! I'll look into the sampleImage() expression! And yeah, I think I should take a more holistic approach to learning the expression game, so far I've only tried to stick something together in very specific isntances when I needed it and copied some bounce and loop code here and there 😅 Thanks for the directions!
@ECAbrams Жыл бұрын
No worries. Let me know how it goes!
@MasonSStarkey Жыл бұрын
How might i modify this script to only effect scale of X and not Y?
@ECAbrams Жыл бұрын
At the end of the expression, you see a line like [this,that], two things inside square brackets. That represents the two parts of the property, [x,y]. So, if you wanted to impact the x or horizontal scale you would make sure that only the first part of the final expression was getting the changing variable while the other part is a fixed value. Does that help?
@worldtree.studio2 жыл бұрын
How do i apply this technique when working with different shapes that aren't in an exact perfect grid? Like pills, circles and triangles scattered around reacting to each other. (I have trapcode Form if that helps?)
@ECAbrams2 жыл бұрын
If you want the "triggering" thing to be of other sizes, you will need a system like Form that can react to maps. Or you might use c5d and the mograph effectors. Maps in Form might be a good place to start, seeing how an image can be mapped over a plane to change the properties of the particles. That is where I would recommend starting your search.
@worldtree.studio2 жыл бұрын
@@ECAbrams thank you king I will try this. Otherwise I'll keep it simple - make a grid, then will swap out the squares for other shapes that fit inside the squares.
@lostinspacestudio2 жыл бұрын
how can we apply an image as a texture across the grid that scales with each individual comment.. rather than just using it as a matte wipe? thanks
@ECAbrams2 жыл бұрын
You would need to segment this texture into many layers to apply this technique to them. That might be done with masks or mattes, but it feels to me like it would create quite a mess of layers. You might be best to look at other systems like particles that can be textured, or a c4d solution using Mograph systems.
@dakshina712410 ай бұрын
Woah! :)
@tatyana_botvinko Жыл бұрын
Hello! How can you be found on Skill Share?
@ECAbrams Жыл бұрын
I think if you search for ECAbrams or Evan Abrams I should be on there.
@adrianfels2985 Жыл бұрын
I can't find the expression. Could you please help me?
@archwayfilms43623 жыл бұрын
hmm? I can't find Scale From or Scale To anywhere in the effects?
@evanabrams27353 жыл бұрын
Those are slider controls that have been renamed. You can rename anything you like by selecting it and pressing the return key.
@archwayfilms43623 жыл бұрын
@@evanabrams2735 Thanks, only a year old in the AE game. Your vids are wonderful btw.
@Wendt_animation3 жыл бұрын
Can this work with 3d layers?
@ECAbrams3 жыл бұрын
I don't see why not. Just be sure to account for the 3 dimensional nature of the properties you apply it to. Inease of scale being two parts [0,1,] it's three parts now [0,1,2] for example.
@Wendt_animation3 жыл бұрын
@@ECAbrams so like in your example it would be [r,r,r]
@ECAbrams3 жыл бұрын
@@Wendt_animation Correct. So, depending on what you want to see happen you'll just have to account for the 3rd part of any property that has 3 parts in some way.
@francocarmona25263 жыл бұрын
I don't understand where I find the effect of "scale from" "scale to, hitout, hitIn" :( help
@ECAbrams3 жыл бұрын
No worries. Those are slider control effects that have been renamed to be more easy to use as UI in the effect panel. You can rename almost anything by pressing 'enter' when selecting the specific title of that thing. I hope that helps.
@francocarmona25263 жыл бұрын
@@ECAbrams omg! it worked!, thanks youuu
@TheQuazorg2 жыл бұрын
@@ECAbrams Sorry, but i didn't get it, could you please be more specify? Can't find it too
@husamhb1 Жыл бұрын
can I do it without plug-in? and how
@ECAbrams Жыл бұрын
I cover a method at around 1:57 of the video. Did you have questions about that method?
@husamhb1 Жыл бұрын
Thanks for your quick response ( In After Effect I didn't find anything that under the name (scaleFrom, ScaleTo, HitOut, or HitIn) so I got confused. If you can you tell me where can I find those I Appreciate that ps: the Suggest a tutorial topic link It's not working foe me
@ECAbrams Жыл бұрын
@@husamhb1 These are just slider controls that have been renamed. You can rename layers, effects, and many properties by selecting them and hitting the enter key. You won't find anything called scaleFrom because that's something we have to name for ourselves. I hope that makes more sense now.
@husamhb1 Жыл бұрын
@@ECAbrams Thank you very much,🔥🔥🔥 I didn't know you can do that much appreciated man ❤️❤️❤️ I'll try it when i will get the chance 🔥
@kashish01233 жыл бұрын
How we can achieve this for Lottie ?
@ECAbrams3 жыл бұрын
In what way? Do you want users on a website to be able to interact with a grid of things with their mouse? Or just export this animation to Lottie?
@VitaliYaronskiDOTcom3 жыл бұрын
it is not possible on mobile as lottie doesn't support expressions on IOS/Android
@AnkitSingh-qm8hy10 ай бұрын
How to do this with 3d shapes
@ECAbrams10 ай бұрын
it's the same method as with 2d layers. You can make the layers 3d and apply the expression to the 3d properties you want to react. Make sure that for any property the output is in the dimension the property expects. For example rotation expects one number, like 90 degrees. 2d scale or position would expect a two part output like [100,60]. And a 3d property like scale or position when a layer is 3d requires a 3 part output [10,20,30]. It can be easier to setup variables for x, y and z outputs and then make the final line [x,y,z]. I hope that gets you started.
@mritunjayy3 жыл бұрын
I wonder if bulge effect could achieve the same.
@ECAbrams3 жыл бұрын
Give it a try and see. Bulge bulges. It would look similar to applying this technique to the scale certainly.
@adrianfels29853 жыл бұрын
Am I dumb or is that difficult for a beginner?
@ECAbrams3 жыл бұрын
I would say it's even difficult for intermediate users. If you have any specific questions about this thing maybe I can help clarify the areas that are giving you trouble?