Hi guys welcome to my channel i'm Chong today i'm going to share with you, how to make this transforming effect in blender 3.0 using geometry nodes field workflow so here, i have already prepared the 3d assets we need, so there's a car and a helicopter, so you can download this asset in the description below....so this 3d asset is made up of many different objects, you can pick them up and move them around yourself and i have put them into the collection so we have a collection for car and a collection for the helicopter.... and another very important thing is.... i have moved the origin of every single parts to the center of the geometry, so if you are using your own 3d models, please make sure you move the origin point to the geometry, make sure your origin point is not located outside the geometry okay now, before we dive into geometry nodes, let's move the car and the helicopter to the center it don't have to be very precise.... then we can dive into geometry nodes, so let's hide all the collection for now add a cube name it geometry node animation split the screen.... go to geometry nodes editor, add a new geometry nodes, drag the car collection to the geometry node editor, connect it to group output, tick separate children, then we can delete the group input, we don't need it anymore.... ok now, i want to add an empty plain Axes as an effector to control the scale of these separate objects, so the objects that touched by the effector will be bigger and the object that not touched by the effector will be smaller so to do it, we need a scale instance then in the 3d viewport, add empty plain axes name it effector drag the effector into the geometry nodes editor, and now we need to get the position of the instance objects then add a vector math node add the position of the instance objects and the location of the effector together and then i also want to get the scale of the effector to affect the instance objects then we only want the effector to function in the y-axis direction, so let's add a separate xyz node, connect the y axis to the scale connect the vector math node to the separate xyz and now... if we move the controller, we will see, the effector is start working but the scale is weird, when we move the effector along y axis, the scale of the instance objects is keep increasing, and this is not what we want so what we want is, we want the instance objects to scale from 0 to their original size, so to do it, let's add a float curve and put it after the separate xyz node let's try to move the effector to check the result ok now we fix it! the reason why the float curve fixed this issue is because, if we refer to the curve here, this point at the bottom has the value of 0 and this point at the top is 1, so it's mean the instance objects is scaled from 0 to 1 so it will stop scaling at 1, which is the original size by the way beside float curve we can also use a map range or color ramp to fix this issue, ok now.... not sure if you notice, when the effector moves from the negative y-axis towards the positive y-axis, the instance objects starts scaling from the opposite direction to fix this issue we can simply change the operation of the vector math from add to subtract and now we have another issue when we move the effector the instance objects is scaled from the original size to 0. so to flip it we need to add a math node before the float curve, then we need to multiply -1 and now we fix it! okay next, i want to add overshoot effect to the transition so before we continue to add the overshoot effect, let's add the keyframe to the effector first.... make sure your time indicator stays at zero, select the effector, move the effector to around -3 add a single keyframe drag the time indicator to 80, move the effector to around 3 ok now, go to the float curve node and now we need to manipulate the curve to get the overshoot effect we want so let me explain a little bit about this, the animation is actually start from this point, then at this point, the point is actually touching the top, and that's means, our instance objects is scaled to the original size then at this point, it will become slightly smaller again, then at this point it go back to the original size again, then slightly smaller again, then finally it stopped at the original size so in this case, you can treat the float curve as the graph editor for animation so now.... let's play the animation to check the result~ i think the transition is too fast so to slow it down, let's make the effector bigger, check the animation again okay.... everything looks good for me okay next, when the transition happen besides just having the instance objects scale from 0 to their original size, i want the instance objects to move up and rotate at the same time so to do it let's add a set position after the scale instance then we only want the instance objects to move in z axis, so let's add a combine xyz xyz connect the vector to offset let's add a float curve connect it to value, we need to add the overshoot effect for this as well so now i want the instance objects to start from the bottom, then go up and then down to the bottom again so let's manipulate the curve so for this one the animation is actually start from this point, which is the bottom, then at this point the instance objects moving up, at this point the instance objects go back to the bottom again, then up again, and back to the bottom again let's play the animation to check the result looks good for me okay next, we need to rotate it as well so to do it, let's add a rotate instance after the set position then we only want the instance objects to rotate in x axis, so let's add a combine xyz connect the vector to rotation, then add
a float curve again then select the multiply, hold Alt right click and drag your mouse to the float curve, then again select the float curve hold Alt right click and drag your mouse to combine xyz....so we need to connect the value to the x-axis in combine xyz again.... manipulate the curve to get the overshoot effect we want let's play the animation to check the result okay i think.... i want to flip the rotation so the rotation is currently rotate towards negative y-axis and i want it to rotate towards positive y-axis to do it, again.... add a math node after the float curve, then multiply -1 check the animation again okay everything looks good for me okay then, let's select all this node except the collection info, don't select the collection info, then press Ctrl+G to group it, and now.... we are in the node group, we need to press this button to go out to the parent node tree then select the node group, press f2 and name it car transition in ok now we have scaled up the car, next....we need to scale down the car again and scale up the helicopter by using another effector so to do it all we need to do is almost the same as what we did just now, so duplicate this node group and press remember to click this button to make a single user copy otherwise it will mess up everything then select this node group, press f2 and name it, "car transition out".... okay then, we need another effector to scale down the car, so drag the time indicator to 0 select the effector press shift d and follow by y to duplicate it then in the transform panel, right click the location y and add a single keyframe okay then.... i want this effector to start moving after scale up the car so let's select two of this keyframe drag it to 100 frame maybe.... then let's go into this node group, go to the object info for the effector, change the effector to the new effector that we duplicate just now....and now....try to drag the time indicator....you will notice, the car is disappear, the reason is because, this node group we duplicated just now is actually set up for scale up the car, so if we want to scale down the car, all we need to do is select this multiply -1 and press ctrl x to delete it....okay now drag the time indicator and check it again everything looks good, but i think i want to make some changes for two of this float curve, the float curve for set position and rotate instance.... i want to have a different animation when the car scale down, so let's start with the float curve for set position....For the position.... i want the car to go up and then go down again to the floor and i don't want the overshoot effect, so let's reset the curve then go to the curve node for rotation reset the curve as well ok then, play the animation to check the result so not sure if you notice, the animation of the position, rotation and the scale is all happening at the same time, and this is not what i want, so i want the animation of the scale to start first then only followed by position and rotation so to delay the animation of rotation and position, we need to add a math node before the float curve. For the rotation, let's add 0.3 maybe let's check the result looks good for me you can experiment with this value to get a different delay time then duplicate this math node and put before the float curve for set position let's put 0.7 for this one.... play the animation to check it again i think the animation is still a little bit fast, so let's try to make this effector bigger then move this keyframe to 190 frames check the animation again it's a lot better, but i think we can modify this curve a little bit okay it's look a lot better now.... okay now we have scaled down the car, next.... we need to scale up the helicopter.... so now.... press this button to go out to the parent node tree, add a join geometry before group output, duplicate the car transition in.... because we need to bring in the helicopter by using this node group, then remember to click this button to make a single user copy, press f2 and name this "helicopter transition in" drag the helicopter collection into the geometry node editor, tick separate children and connect it to instance, then connect it to join geometry, go into the node group, go to the object info for effector, then we need to change the effector to the effector we use to scale down the car, so for the helicopter i want to remove the animation for position and rotation, so select all the node related with set position and rotation, then press ctrl x to delete them let's play the animation to check the result okay now, we can see when the transition happen, there is some object overlapping each other and this is because the animation of scaling down the car and the animation of scaling up the helicopter is all happening at the same time, so to fix this issue we need to delay the animation of the helicopter, so to do it, same as what we did just now.... let's add a math node before the float curve, change the function to subtract, then try to check the animation again.... change the value to 0.1 maybe.... okay it's look a lot better now.... okay next i want to animate the helicopter to move up and down.... i want it to float on the air ~ so to do it add a transform before the group output then we only want to move the helicopter in z-axis.... so let's add a combined xyz connect it to translation, then to move it up and down, all we need is a ping pong node (Math node) connect it to z-axis then in the value column, type #frame/100 you can divide any number you want, it depends on how fast you want it to be, press enter.... let's check the animation i think this is too fast.... let's divide 600 maybe check it again.... okay it's look a lot better now next! we need to rotate the main rotor blades of the helicopter so this is very simple, let's hide all this object for now, then unhide the helicopter select the blades, go to the transform panel, in the rotation z-axis, type #frame/2 maybe... check the animation then let's animate this as well then select three of this roto and last....select this as well then press Ctrl+L and link the animation data.... play the animation to check the result then we need to rotate the wheel of the car as well select the wheel, put #frame/10 for X-axis select 3 of this wheel....and last....select this wheel we animate just now....then press Ctrl+L again and link the animation data okay then, hide the car again unhide these objects play the animation..... and we done it!~ so if you like my video please subscribe and see you in the next video! Bye!~