Blender 3D: Animating a Seamless Looping Scene | Jurre Spiegelenberg | Skillshare

Playback Speed


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Blender 3D: Animating a Seamless Looping Scene

teacher avatar Jurre Spiegelenberg, Freelance 3D motion desinger

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Lessons in This Class

    • 1.

      01. Introduction

      0:40

    • 2.

      02. Class Project

      0:55

    • 3.

      03. Keyframes & Looping

      3:42

    • 4.

      04. Transform based Animation

      20:39

    • 5.

      05. Modifier Based Animation

      24:10

    • 6.

      06. Constraint Based Animation

      29:59

    • 7.

      07. Fine Tuning and Finishing Up

      5:43

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.

266

Students

3

Projects

About This Class

Are you getting comfortable with Blender and want to level up your 3D animation game?! Then this class is for you! In this class we will go over a number of animation techniques whilst working on our class project, through different exercises we are going to animate a looping 3D animation in Blender.

What you will learn

In this class we will go over a number of animation techniques whilst working on our class project, through different exercises we are going to create a looping 3D animation in Blender. During these lessons you will learn about: 

  • Looping an animation
  • Understanding keyframe interpolation
  • Working with the graph editor
  • Transform based animation
  • Modifier based animation 
  • Constraint based animation

By taking this class you will not only broaden your animation skills. You will also gain a greater understanding of animation principles. This will give you the ability to give weight and character to your animations in Blender, embedding them into your story even more. 

This class is perfect for beginner to intermediate Blender users who want to level up their animation game or maybe brush up their animation theory. I assume you are already familiar with the Blender interface and have basic 3D skills.

To follow along with the class you will need Blender version 3.3.0 or later. 

 

Meet Your Teacher

Teacher Profile Image

Jurre Spiegelenberg

Freelance 3D motion desinger

Teacher

Hi!

 

My name is Jurre. I'm a freelance 3D motion designer from The Netherlands.

I've been working in the creative industry for nearly 9 years now and started freelancing in 2022 .

3D animation and 3D illustration is where my specialty lies. I would love to teach you the skills of the trade!

Visit my website for more information or a look at my portfolio if you're interested. 

 

See full profile

Level: Beginner

Class Ratings

Expectations Met?
    Exceeded!
  • 0%
  • Yes
  • 0%
  • Somewhat
  • 0%
  • Not really
  • 0%

Why Join Skillshare?

Take award-winning Skillshare Original Classes

Each class has short lessons, hands-on projects

Your membership supports Skillshare teachers

Learn From Anywhere

Take classes on the go with the Skillshare app. Stream or download to watch on the plane, the subway, or wherever you learn best.

Transcripts

1. 01. Introduction: Hi, I'm yeah. I'm a freelance 3D motion designer based in the Meadowlands. I've been working as a motion designer for nearly nine years. And today I'm going to show you how to animate a looping scene within Blender. The goal of this course is to get you familiar and comfortable with the animation tools within Blender. We will be exploring different types of animation, and I will be sharing tips and tricks I've picked up over the years. This course is geared towards beginner users who are already a bit familiar with the Blender interface and are getting into their first animation. But also as an intermediate user, you might pick up a thing or two. At the end of this course, you should be able and confidence to tackle your own animation projects. Would that being said, let's get started. 2. 02. Class Project: In this class, we will be creating a 3D Looping Animation. These are very FUN to create an, a great way to explore all the animation tools Blender has to all the different chapters I will be covering different types of animation, ranging from transform based Animation through modifier Based Animation, all the way up to Constraint based animation to show you different ways of animating objects within Blender. Using the techniques from a different lessons, we will be animating our objects, adding motion variation between them to bring life and character into our scene. Along the way, we will be exploring the graph editor keyframe handles interpolation and extrapolation and many markets. In the project section of this class, you can upload any progress you make for your final animation. And make sure to have a look around at what others have created. Thank you very much for joining me in this class and coming on this animation journey with me. Let's head on over to the first lesson where we will be talking about keyframing and Looping Animation. I'll see you there. 3. 03. Keyframes & Looping: Before we dive into our class project and start animating our scene, I briefly want to talk about animation keyframes and looping for a second. As most of you are already familiar with Blender, I assume you've placed a keyframe here and there already. I want to quickly run over how to keyframe and some useful tools just to make sure we're all up to speed. By pressing I in the viewport, you will see this drop-down from where you can select the property you want to key. You can also hover over any property and the interface and press the I key there to insert keyframes. If you want to remove your keyframes, you can hold the Alt key and press U again to remove the keyframes you displaced. Dislike our properties can be accessed in different places, so can our keyframes. You will most likely recognize the timeline on the bottom of your screen showing the keyframes, which are key-frames also show up in the graph editor. And the dope sheet, for example. In each of these windows, we can manipulate the keyframes, so different tools and for different purposes. I will go into more detail on that in future lessons. The timeline has a few useful animation tools, like the auto key function, which you can find next to the play buttons over here. By turning this on, Blender will automatically place keyframes whenever you make a change to an object. For example, in a simple cube animation, that's just moving up. If I change its position halfway in, by moving it around the x-axis, we'll see that blender automatically places a keyframe in the middle. And now my cube moves left before going up. This is a very useful option, especially when animating more complex objects or multiple properties. So you don't have to iframe each property individually. But be careful with this option because it's very easy to create a lot of keyframes in a very short time. And your timeline might get polluted with a lot of unnecessary keyframes. Another great function of the timeline is the ability to mark your keyframes. Just want to change the behavior of the keyframe. It's only a visual reminder to what the keyframe does. If we select our keyframes and press are at a timeline, you will see a drop-down from where you can select a keyframe style. If you start getting into animation, you will recognize these terms like extreme breakdown and moving hold. These refer to specific Bose's in an animation sequence. For now, we will ignore these and just use the marking as a visual reference for our keyframes. For example, to mark the start and end of our animation to quickly identify the looping point. Now looping animation is what you came here for. And so I want to quickly brush over the principles of looping in animation. When something is looping, it essentially means that something is repeating itself over and over again, like this. Q, moving from point a to point B. Many people associate looping with the satisfying seamless kind, but that does not have to be the case necessarily. In our loop. However, we will go for a seamless transition like this one. If I open up the graph editor here by dragging out a window and pressing Shift F6 center my viewport. I will press N to hide the side panel. Who achieved that seamless transition is in a score quite simple. The start and end keyframe you need to be identical, as well as the incoming and outgoing velocity. But more on that once we get started. As you can see here, my start point and end point are exactly the same. And they've used markers and my timeline to identify the start and end point of my animation, as well as the highest point at the halfway mark. I think we're all up to speed on keyframes and looping. So without any further ado, let's get started animating RC 4. 04. Transform based Animation: Welcome back. Let's get to work on our projects. You can find the lesson files in the project resources section to follow along or to give your own twist to my scene. But it would also want to encourage you to create your own scene and to experiment for yourself with the different types of animation we will be exploring. I have set the frame range of our scene to keyframes. So all animation we create will be looping over 50 frames or less. Maybe we will look something twice within the 50 frames. We will see. We will start by animating this orange cube within this transparent box. And we will make it jump up and down. Before placing any keyframes, you want to check where the pivot point of the object is located. This is the point around which Blender will apply any movement, rotation, and scale. So in our case, we want the cube to squash down at the bottom. So it makes sense to move the pivot point or the bottom of the cube. I'm going to move into local mode to have a better view of the objects without any other objects around it in the scene, I can access local mode by pressing the forward slash key on my numpad there. Now you'll see that only the cube remains. When I go into edit mode by pressing tab, I can select the bottom face using the number keys. I can switch between vertex, edge and face mode. So in phase mode, I will select the bottom edge and pressing Shift and S, I will select cursor to select it, which moves my 3D cursor to the bottom face and puts it exactly in the center. And now go out of edit mode. And I right-click and set my origin. Who the 3D cursor, my pivot point has moved to the bottom. And now any scaling or moving we do will be applied from the bottom of the cube. So let's get out of local mode by pressing the forward slash in our notepad again. First, let's determine our start and end point. We want this to be a point where we can seamlessly transition back to repeat the movement over and over again. But all the way in the bottom position seems like a good point for me. But you could also use the top position if you'd like. I'm going to move my cube using the G key on my keyboard and pressing the Z key to constrain it to the z-axis, I will move it down into position. And let's add in a location keyframe by hovering over the location and pressing the I key. And you'll see a keyframe show up in our timeline. Let's move to the halfway point, which is 25 frames. And let's move our queue up all the way to the top of the transparent box and insert another location keyframe. Could also press in the viewport and select a location from your properties here. And I want to duplicate my first keyframe. Pressing Shift D and a timeline can move my keyframe all the way to the end to frame 50. And if we now scrub through our timeline, you'll see RQ bounces up and down. And as our timeline is Looping, you will see that it's repeating itself seamlessly already. So we could call it a day. But at the moment is animation is quite boring. So let's add some life and character to our animation by adding some squash and stretch. In the bottom. And at the top, I'm going to insert a scale keyframe. At the bottom, at the top, and at the bottom, I'm going to insert a scale keyframe again. Now I want to adjust my animation curves and the graph editor to add some life to the movement, because as it is now the bounds of the cube looks a bit weird. We're going to open up the graph editor by dragging out a new window and pressing Shift F6. Or you can also use the menu and select the graph editor here. I'm pressing the N key to close the side panel. And using my control and holding my middle mouse, I can zoom in, move around. Now for now, I want to hide my scale keyframes. So I'm toggling the visibility switches. And I wanted to get rid of my X and Y location channels because we are not using them. In this case, we're only moving the object along the z-axis. I'm selecting my X and shifts selecting my Y location. And by pressing X, you will delete these channels. Now let's have a look at our current control middle mouse and drag up to zoom in. The zooming in the graph editor might feel a bit weird in the beginning it takes some getting used to, alright, I wanted to start with adjusting the Z location curve to make the bounce more bouncy, the contact point at the bottom should not have an ease towards the end. In the beginning, like we can see here, when something is falling in real life, it will not slow down before hitting the surface. It would only speed up until it hits a surface. To achieve this, we first need to change our curve handle type are actually in this case we don't because it's our first and last keyframe that is good practice to use the correct handle type to change your curves. So we select our two keyframes by pressing the V key. You'll see this menu popup. From here we are selecting the free keyframe handle type. This means that handle is not constraint anymore. So moving the right side of that animal doesn't change the left side of the animal like it does in this point here. So from here we're going to drag our curve up to create a steeper angle. Not all the way it is. That's too extreme. Something like this. We will do the same on the other side. You can use the grid in the background to align your handles and make sure it's a symmetrical as possible. Alright, as if you are animation, you can see it's bouncing more already Now we can maybe make the top a little broader. So it jumps up faster and it floats in its opposition longer. I'm using the S key to scale. And you can keep your animation playing because that way you can immediately see the change who you are making and if it's working. I also want to make my curve a bit steeper. Alright, I like where this is going. Alright, now let's add some more life to our animation by adding some squash and stretch. What I'm going to do is move over my location keyframes, one or two frames to make some room for the squashing and stretching because we want to do happen on the surface and we don't want to move the cube already as it's still squashing and stretching. So using the G key, I can move my keyframe and using that X and Y key, I can constraint it on an axis. In this case, I want to constrain it on the x-axis. I wanted to move it over two frames, and I'll do the same on the last keyframe. Alright, Let's unhide our skill channels. And we'll have to zoom out a bit because they're one. And for my skill channels in the beginning I find it easier to work and the dope sheet. So by pressing Control tab, you can switch between the graph editor and the dope sheet in the same window. Pressing that shows you the dope sheet, closing the side panel again, pressing the N key. In our drop-down, we can see our keyframes. I'm going to duplicate our skill keyframe and match it with the location keyframe by pressing Shift D. And now I can change our squash and stretch in the viewport. So pressing S and Z, squashing down the cube. And pressing S and Shift Z will constrain it on the Y and X axis. Or it will exclude the z-axis from your scaling. And we can make it a bit broader to maintain its volume. And we have to insert a keyframe. From now on we go and turn on our auto key. Automatically place our keyframes when we change something. So now we can see your cube stretch up and then it moves its final position. And we need Amira this to other side of course. So and moody original keyframes. Duplicate these keyframes. If we now view our animation, you'll see it has some squash and stretch. Very cool. Now we can exaggerate this even further by just seeing our second keyframe. Have the cube stretch out that this point. So letting our timeline to our keyframe, we will scale it up on the z-axis, and we'll scale it down on the X and Y-axis little bit to maintain its volume. And as you can see, Blender updated the keyframe automatically. Now our queue squashes down, stretches all the way out. And as it moves up, it returns to its original shape. Then it moves down. We can duplicate are stretched keyframes less than mere. To also show that once it's falling, it's stretches again. It hits the floor, squashes down. And we loop our animation. There. We have it. Our animation as a way more weight and character now and it's way more pleasing to look at. Or you could change the character of the animation by playing around with the squash and stretch keyframes and how much time you will allow the cube to squash and stretch. So you can look at firmer by moving to keyframes closer together and have it not stretch as much. Or you can make it even squishier by allowing more time for discussion stretch. But that's all up to you. You could even add squash and stretch in the top if you'd like. But I'll leave that up to, you know, you know how it's done. Let's move on to the other side of the scene where I've prepared this little robot that will move a box from one conveyor belt to the other. We're going to animate this robot using location and rotation keyframes. But before we start, we want to think about how the separate objects will have to move in unison to say together as the robot to make animation easier. In this case, we can use empty objects as parents for their robot objects. That way we can use the aunties and the robot objects will follow. Well, let's have a look at want the robot to slide over these real tracks on the bottom here. I want the top bar to be able to move up and down in this piston. And I want the top bar to be able to rotate also around the piston. So I want to separate the sideways movement of the bottom and the up and down and rotation movement of the top will use to empties of already set my cursor to the origin point of the top part of the piston here, using Shift S, I choose cursor to select it. And now I can insert an empty using Shift a and single arrow. Now it's quite big, so I'll scale it down and I will rotate it along the y-axis by typing in 90. I'll move the arrow up a little bit around here. Good. And then I will add another empty, which will be a sphere, which is also way too big. So I'm going to scale that down as well. We're going to move that up to around here At apparent anything to anything, you will select the objects you want to parent, in my case, the bottom of the robot, and then select the objects you want to parent to and press control V. Now you can select objects. I want to do the same for the top. So I'm selecting handle and all the objects associated with the robots. Well, now I select the empty and press Control V object. And if we now rotate over up and down, that everything follows along nicely. Now I also want to parent the top part to the bottom part. So I will bear and my spherical empty the arrow. Pressing Control P, that parent to object. Now, if we move to see that the objects follow your forget to parents something you can always add to your parent, like the bottom part of the Busan, I forgot to parent all selected. I'll select my will select my arrow. Let's Control P and at burned to object. Now, everything moves in unison. Very good. Before we continue animating, we want to lock some properties of the empty switch will make it way easier to animate. So in the item panel here or the arrow, I'm going to log everything except for it's X location. So using the locks here, I lock everything and if I now use the G key, I can only move on the x-axis even without constraining it to the x-axis by using the shortcut. I'm going to do the same for the top empty. I'm going to lock the X and Y location. And the X and Y rotation, as well as all the scale keyframes. Now, if I rotate, I can only rotate around the z-axis. If I move, I can only move up and down. Just like we did with our cube. We want to determine the start and ending point of our animation. Keep in mind that we only want to keyframe or two empty objects. So I'm adding in a keyframe for the X location. By right-clicking on the property, you can insert a single keyframe for the empty. I'm inserting a single keyframe for the Z location and the Z rotation. Now I will already open up my dope sheet, six photograph editor Control tab to change to the dope sheet. And by using the little arrow here, I can change the dope sheet to only view the selected objects. Select the bottom empty. And now I can duplicate my keyframes to frame 50. Now we only need to determine the midway point. I've added these two boxes as a reference. In a later lesson, I will explain how we can make the robot pick up the box and put it down on the other side. But for now we'll just animate over the reference. We still have our auto key turned on. So Blender will automatically place keyframes. After we change any of these properties, we need to rotate our robot for a bit down. But over everyone to have more control over the movement you are doing, you can hold the Shift key while rotating, scaling or a movie. This will slow down your movement. I think this is more or less correct. The box widely, always we can see NR dope sheet. We have some keyframes are good. If we now Blair animation, you'll see the robot move in not such a robot like fashion that we want to change our keyframe position and manipulate the curves for a bit to make it more, more like an actual robot. Alright, let's open up our drop-downs and start refining our animation. What we want to do is separate the movements we're seeing. So the rotation, movement into separate blocks so that our robot first picks up the box, then it starts moving and rotating, and then it sets down to box. But first things first, we will start by adding a little plateau to our Z location. I will move over a couple of frames, and I will duplicate my Z location keyframe. We'll move up the top of the robots. Now as we still have our auto key turned on, Blender will update the keyframe automatically. Now I want to duplicate my Z location keyframe until a couple of frames before the halfway point. So as you can see now, the arm moves up and as it moves over, the height stays the same, which you can also see by this orange bar. This indicates that the value between these two keyframes does not change from their head moves down to put down the box. So now let's separate the rotation and the movement of the bottom of the robot. Select our bottom empty and duplicate the X location that it remains still for the first five frames of our animation. Now we also need to do this for the Z rotation And now as you can see, we've separated the upwards movement of the robot. So it now only moves up in the first five frames. Then it moves over or the Z location doesn't change. But this is where the rotation happens. Now at this point where the robot starts moving down, I want to have the rotation already completed. Some duplicating this halfway keyframe. I'm doing the same for the bottom. Duplicate that as well. There from frame 20 to 25, The only thing that's happening is the robot moving down and putting now the baggage. You can see we've now successfully separated the movement of the robot. The next part I will speed up because I'm going to mirror all these keyframes to the other side. Alright, We're back. If I now play the animation, you will see that our robot is picking up and putting down the package. But at the moment the point where the robot puts down the package is quite fast. What I'm going to do is over them move. I'm already going to lower edge for a little bit. Let's see, 20. To lower the robot a little bit already. Don't forget to duplicate your keyframe to the other side. Alright, it looks a bit better already. It will look better once we actually pick up the boxes. But I will get to that in the lesson where we are going to talk about constraints. Now let's switch to the graph editor by pressing Control tab. And let's see how we can adjust our curves. I will start with my Z location. So I'll turn off the rotation for now by selecting all keyframes using the achy and using the period key on my numpad, I can frame my selection digital model a little bit. Alright, so I want certain parts of the animation to be linear and some parts of the animation to have an ease. The parse I want to be linear. I'm going to change the handle type from an automatic handle to a vector handle will using the V key, I am changing my handle type to a vector. It makes the keyframe handle points towards the next keyframe handled. Well, if I now change this, you will see my vector stays pointing towards to the next handle. If I also change this handle to a vector, you will see I get a linear line. I will do the same on the other side. Vector, after changing a handle to a vector will almost always result in, in this bump. And to get rid of that, we can change this handle type two and align to handle type, which will align this handle to the animal on the other side. You can do that for all handles that are connected to a vector handle. And I also want to scale up this middle part so that when the robot moves down, it stays in the bottom position just a little bit longer. Alright? I also want to scale my first and last keyframe. Make sure your origin point is set to individual centers so that you'll scale from the center of the keyframe outwards. Right? Scale it up just a little bit. Now let's have a look at our rotation or an off our location. Let's select all using the achy and pressing the period key again. Unless the room or some unnecessary keyframes, like the one in the middle ear. I tried to always look at my animation and see, and see what the speed of the animation is doing. Is the easing Working? Should it be more? Should it be less? In this case, I think this works. So we'll leave it as is. I think the same goes for our bottom keyframes. Select these, frame them. This is basically the same curve as we just saw. So we'll leave this as well. Feel free to play around with this yourself. Maybe you want to change all handled types to be a vector to make the movements more abrupt. But I'll leave that up to you now you know how it's done. And I will see you in the next lesson where we will be exploring modifier Based Animation 5. 05. Modifier Based Animation: In this lesson, we're going to see how we can use modifiers to help us animate our scene and more complex ways than we can do with only transform properties. Now there are 1 million different ways you can use modifiers by themselves or combined. I'm only going to show you a few in this lesson that I find very useful. Let's start with the conveyor belt in the foreground here, we will recreate the Modifier setup and animate the belt moving the pieces from left to right, I will get rid of all the modifiers and start from scratch. Now as the name implies, a Modifier modifies the object it's applied to. There are different kinds of modifiers. Some are mainly used for modeling like these generative modifiers, and some are mainly used for animation like these deformed modifiers. We also have Modifier is that modify our object data. And we have physics modifiers. We will ignore these for now because this is a more advanced topic. Let's add our first modifiers from the modifier panel. You can find by the little wrench icon here. And as you can see, the base of our conveyor treads is just a simple plane. Let's add our first modifier. We're going to use a subdivision surface to give it a little more geometry and we'll set it to simple. Next, I will add a solidify modifier, which gives my tread some thickness. And I wanted the extrusion to happen the other way. So what I'm going to do is go into edit mode, select all my faces. And then I will press Alt N to show my normals menu. And I will flip my normals. This will make my solidify, extrude the other way. You could also make this number a negative number. So it extrudes the other way. But I think it's good practice to give your numbers a positive value. Next in line is the bevel modifier to give some smoothness. Who are objects? We're going to increase the segments to four. And I will change my amount to something smaller like 0.0, 025. Alright, let's get out of edit mode and we can shade auto smoke. And there we have our thread. Very nice. Let's continue. We are going to add an array modifier, which creates a duplicate copies of our tread. Now we can increase the amount of copies to make our trade a bit longer. Very nice. This is the basic setup for our tread. Not the only thing left to do is to tell blender that we want to wrap this tread around the base here. For this, we need to tell the conveyor what shape it should conform to. And to do that, we are going to use a curve and a curve modifier, but let's select our treads. And from the default menu at a curve, you'll see this icon turn red, which means that the modifier needs additional input. In this case, we need to assign a curved object. Now I already have a curve in my scene, but I'll show you how to create this as hided For now from icon various supports. I'm going to extract the curve we are going to use for the belt. So let's go into edit mode. Let's turn off our array for now. I'm going to insert an edge loop using the control arche. You've probably done this before. I can confirm using my left mouse button and then I can confirm in place or right-clicking. Now our loop is still selected and I want to press Shift D to duplicate and right-click again to duplicate in place. Now I can separate this loop or pressing P and selecting selection. So this separates the selection. Now as you can see when separating the object, it also duplicated the array data on the edge ring. I'm going out of object mode back into edit mode by pressing Tab. Now I'll select my separated edges and I'll delete the array modifier to make this a bit easier, I'm going into local mode. So with my entering selected, I will select the various supports and breast the forward slash on my numpad. So we can see what we are working with. Alright, let's select are entering, go into edit mode, and go into Vertex Selection mode by pressing one and selecting all our vertices. I want to duplicate these and move them to the last on various support. So pressing Shift D, constraining it on the X, I will move it over holding shifts. So more control. And now we need to connect these two circles. So what I'm going to do in side view and in wireframe mode. So I can see clearly what I'm doing. I'm going to delete the inner vertices by pressing X and selecting delete vertices. To do the same. On the other side. Make sure you've got all the inner vertices, but not the top ones. Delete vertices, and I'm selecting the top vertices on the left side and the dope vertices on the right side. And by pressing F, I can now connect these points. I will do the same on the bottom Alright, let's move back into solid view. You can also press Shift Z on your keyboard to toggle between these modes. And as you can see, we now have an edge running along the supports. I'm going to add in some more points to match the density of the curve. You can press Control R to insert a point, and you can scroll on your mouse wheel to add points. Or you can type in a number. I'm going to add 100 points and I'll do the same on the top side. Control are typing in 100 on my numpad and pressing Enter to confirm. Now the only thing left to do is convert this mesh to a curve, which we can do by right-clicking and selecting Convert to. Alright, now we have a curve to work with. Let's get back out of local mode by pressing the forward slash on are known bad. And before selecting our curve in our curve modifier, we need to do one more thing. And that is to match the origin point of the curve to the origin point of their conveyor traits. As Blender uses the origin point to deform your transform. These we need to match exactly I. Otherwise this results in weird behavior. So if you're ever trying to apply a groove Modifier to an object and you get weird results below, check your pivot points. So I will select my dreads, Shift S cursor to select it. Then I will select my curve right-click Set Origin, origin to 3D cursor. If we now go into our tread and select our curve object using the eyedropper. We will see that our thread applies to the curve. Now we need to adjust the amount of copies in our array modifier for a bit. Want to add some more until this matches, more or less. Now we need to fix some intersections of the tread. Now as you can see, our tread aligns with its bottom to the curve and I want is to be the other way around. So we need to rotate my base object 180 degrees towards the top. So we're clarity, I will turn off the array and the curve. What I'm going to do is rotate my object around this way. And by typing in 180 on my numpad, I'm sorting. It's not going to be wonky. Now let's turn our array in our group back on. And we can see that we've successfully created our conveyor belt. Very nice. Now we need to do some final adjustments because as you can see, our belt is intersecting with itself. And to fix that, we can scale our tread objects slightly. So pressing the S key and holding Shift, I'm scaling down just a little bit. And I'm looking at the other tread here to match the distance between this tread and the next one. Alright, I think this looks good. Now we're all go to animate. If we now move our objects along this x-axis to match the deformation axes, you will see that the tread starts running. So let's add in some keyframes. Let's insert a keyframe for our pixel location. Insert single keyframe by right-clicking. Let's move to the end of our frame range. And I want to move over and say three or four threads, one to four. And let's insert another keyframe. Now we might want to adjust this later as it's going too fast or too slow. If we now play our animation, you'll see that we need to do some work on our animation curves. Because at the moment it's easing at the start and at the end. Now we want this to be continuous movement. Alright, so let's open up our graph editor. Those the side panel. And now what we could do is set our handles to vector again. What we also can do is to change the interpolation over the whole curve at once. So by selecting our keyframes and pressing the T key on our keyboard, we open up the interpolation menu from where we can set our curve to linear and then Blender interpolates between archaea frames in a linear way. If you play our animation again, we'll see our conveyor belt Looping almost seamlessly. But we need to do some more work because in this instance we cannot use the same keyframe for our start and end keyframe. To make this loop seamlessly, I like to use a bit of visual reference and align it by I. So let's dope or animation, and let's move to our first frame. Now I'm inserting plane is just for reference. And I'm rotating it on the y-axis by 90 degrees. And I will move it over to exactly match the scene between the treads here. I'll move it over on the x-axis. Alright? Now move over our timeline to frame. Now we want to move our tread in its final position just enough so that the seam lines up with the reference plane. Again. Let's update our keyframe. Replace a single keyframe, and now we can delete the plane again We now play our animation. There will be no jumps editor. It seems as if it's running seamlessly. Alright, the last thing to do now is to parent our objects to our conveyor belt. So Shift selecting are going variables, pressing Control P to set our parent to the object. I want to add in an array on our object to have more of these pieces lying on the conveyor. And I'll increase the distance. Make another copy. And if we play our animation now you'll see that we have a problem. Because our conveyor belt moves forward, but our pieces don't follow, they move in the opposite direction. This problem is probably caused by the direction of the curve we're using. So let's find our curve. Here. We will go into edit mode, select all the points and under segments, we will switch the direction. Now, if we check our animation again, we'll see that now balls are objects and our treads move backwards, but that's a good thing. Now we need to make some revisions to have our trends of work correctly again. So for now we will unapparent our objects by pressing Alt MP, clearing the parent, selecting our tread, we need to rotate it again because as we can see now, the treads are switched to the bottom of the curve. So rotating on our x-axis by 180 degrees, or in our properties and we know we can set the X rotation to zero. Now we can see are two adders moving backwards. We want to do now is we reverse our keyframes. So in our graph editor selects are keyframes scale on the y-axis by minus one. And we can type that in on our numpad are keyframes switch around and if we play our animation, it moves forward. Now if we Barend our objects through our conveyor, shift select, Control P object, everything should more fine. It does cool. We need to do some more work to make our objects a line on the conveyor belt. Because at the moment when we are a looping our animation, we can see a jump in the start and ending point of the objects. But what I'm going to do first is decrease the amount. I'm going to place one less and will increase the distance. And I think we need to change our thread animation because it's going a bit too fast now. We can double-check that by adding in your reference plane. So at the end of our animation, I'm going to place a reference plane. I'm scaling this down and I will move this close as I can, frame my selection by pressing the period key on the numpad. And I will align this with the back of our objects so that it's protruding just a little bit. Now I moved back to the starting frame. And as you can see, the last object is way off. Now I could increase the distance here. Have it match more or less. If we will now loop, this would work. But I do believe that our object is protruding through the box at the end here, which we did not want. It might be able to get away with this if we keyframe the visibility, but I don't really like that. So what we're going to do is to slow down our conveyor belt animation. Let's move to the end. Let's add in our reference plane again. Let's move it on the crease between the threads. Now I can select my last keyframe in my graph editor, pressing the G key and constraining it on the y-axis. I'm going to move this down until the curious aligns with the reference again. Alright, This looks good. Let's delete our reference. Now let's view our animation. Cool. Our animation is a looping seamlessly. Let's move on to these paint canisters and the back of the scene here, I'm going to close my graph editor to give myself some more room. And I want to quickly adjust the viewport display of my material. In the materials tab, I'm selecting the viewport color and I am dragging down the Alpha so that we can see that there's actual inside of these canisters. And what I wanted to do is make this seem like the paint inside is moving. And we can do that by displacing the top of the paint. And to do that, we are going to use the displacement modifier. This Modifier, let's you displace a surface based on a texture. So let's add a modifier from the Modifier drop-down and under are deformed tab select our displays. They will see that our object gets displaced. But it's not really the result we're looking for. At the moment. We do not have a texture specified. So click the New button to add a new texture and the women can press the far right button to show the texture tab. Or you can press the texture icon on the bottom of our side panel here And because our texture is black at the moment, the displacement is showing some weird results. I want to select a texture from the drop-down here. There's a variety of textures. They all give different results. I usually choose the Musgrave or the clouds texture. So let's use the Cloud for now. And let's increase the scale for a bit so you get a bit of a smoother surface. Alright? I like this. Now we need to make some changes in our modifier settings before we move on and continue tweaking our texture. Because at the moment the whole object is being displaced, which we do not want. We only want to displace the top of the object. So to achieve that, we can use a vertex group, which basically means we select a group of vertices which we tell blender to displace, and the other vertices will remain untouched. We can add a vertex group in the object data panel, which you can find on at this triangle icon. And then I know vertex groups. We will click the plus icon to add a group. Let's call it displacement. Now I will quickly go into local mode to have some more room and a better view of my object. If I go into edit mode, I can select the top of my object. Alright? And I can click Assign here. So now these objects are assigned to my vertex group. Let's get out of edit mode and back into our Modifier panel. And at the bottom of our Modifier weekend, select our displacement group from the drop-down. And as you can see now, only the top faces will get displaced. And to prevent any sideways displacement of our edge, we can set the direction to our z-axis instead of the normal. Now, our object only gets displaced on the z-axis, and this is the result we're looking for. Let's get out of local mode by pressing the forward slash key on are known bad. There we go. Let's adjust our texture for a little bit. Because I want to make this a bit bigger to have a bit of a smoother surface. Alright? Now it's time to animate our displacement to add some life to the paint. And we are going to do that by using another object Shift, right-clicking to place my 3D cursor somewhere near the paint canister. And in the Add menu, I'm adding in an empty. Let's move it up and let's scale it down a little bit in the empty Properties panel. Cool. Now let's select our displacement object. And under our coordinates, I don't want to use the local coordinates, but I wanted to use the coordinates of another object, which I can then pick using the eyedropper tool. I'm going to select my empty. Now you'll see that our displacement changes because it's no longer uses the coordinates of our local object. So we need to decrease the scale of our empty. You'll see that the coordinates of the empty now drive the texture that's used for the displacement. So let's see more or less around here. Let's increase our size a little. And now we face our next problem because we are using a procedurally generated texture for our displacement. This means that it's not repeating. So you can see that we're animating our paint, which is perfect, but we cannot find a clear looping point. Now there is a trick to get around this, and I will show you that in the next lesson because that involves a Constraint. Before we move on, I wanted to show you one last modifier we're going to animate. I want to show the paint flowing through these pipes into this machine here. For that we are going to distort the pipe and give it some kind of bulge as if there's too much paint in the pipe moving through. Who achieved that? We could use a displacement modifier. But I want to show you another trick. This can be done using a lattice. It's basically a cage that you can modify and your object will deform within that cage. Let's add our Modifier under are deformed tab choose our lattice. And you'll see just like the curve modifier, our icon turns red, which means there's an object missing. Now I cannot put in a mesh or a curve here and need to add in a separate lattice object. So Shift-click to place my cursor near the pipe. And I will add a lattice now to way too big. So I'm going to scale this down and I will align it with the pipe by rotating and moving it into position. Make it a bit smaller. Right? When Donald a little bit. This looks good. So now in our lattice menu, I wanted to increase the resolution and give this another edge in all dimensions. And if we now go to our pipes and Modifier panel and click the drop-down we will see are allowed us to show up. We can select it and nothing happens. That is because we now need to add it our ladders to tell the pipe how to deform. So we can go into edit mode. And we can select the middle points of our lattice. We can scale these out. And now you will see a bulge form. Alright? Now I want to increase the resolution of the pipe because it's quite blocky at the moment. So I'm going to add in a subdivision surface and this smooths out the Pi very nicely. Now I want to move the lattice around the pipe. Let's go to our first keyframe. We will move our lattice using the G shortcut to move and then pressing Shift Z to exclude my Z location and from my movement. Here, I'm going to insert a keyframe. I'm moving towards the end of my frame range. And I'm moving to the other side of the pipe. Cool. Let's insert another location keyframe by pressing the I key in the viewport and choosing a location. And if we now play our animation, we will see the bulge running through the pipe. Now there are some more work needed to make their seamless. So let's do that. Let's select our lattice. And in our timeline we can press the T key as well to pull up our interpolation menu. And let's editor linear to give it the same speed for the whole Animation. Alright. Now we can see the jump quite clearly. What I want to do to get rid of that is to keyframe the strength of the lattice on the pipe that frame one. I want to set the strength to zero. And I can press this little dot behind this slider to insert a keyframe that I'm going to move over ten frames. And I'm going to set the strength all the way up to one. That's answered keyframe by pressing the little square. Now let's move over to 40 frames. Let's insert another keyframe. You can see the orange bar popup and the timeline, which means that the value hasn't changed for these 30 frames. And at frame 50, I want to slide my slider back down to zero and insert another keyframe. If we now view our animation, we can see the strength animating in and out, which makes our Loop seamless as if the paint is flowing continuously. Now if you want, you can change the curve behavior of the lattice. Maybe you want to add in an ease at the end or at the start. I will leave that up to you to play around with. I'll see you in the next lesson where we will be working with constraints to animate our scene. And I will show you how to loop our displacement Animation 6. 06. Constraint Based Animation: Welcome back. Let's continue our Looping Animation journey. We're going to tackle the first conveyor in the chain as well now, because this one does not have moving threats, we cannot parent our packages, so we will have to make them move in another way. To do that, we're going to work with constraints. Constraints offer us a way to control an object's properties by using static values or another object to move our cubes along the conveyor, we're going to use a follow path constraint. For that we will need a curve. So let's create that first. I am moving my 3D cursor to the cube here by pressing Shift S and dragging down to set my cursor to the selection. Then I'm adding in a Bezier curve and in edit mode and dope, you will make the curve follow the conveyor. First, I'll set my starting and ending points. And by selecting both keyframes and right-clicking, I can choose a sub-divide to add in another point, which will make it easier for the curve to follow the shape of the conveyor. I like where this is add a marker of properties. I want to change my resolution because as you can see, it's quite pointy here. And I wanted a smooth curve. So I will increase my resolution to 32. Now you will see this smooths out the curve. Now let's select our cube and add our constraint in the side panel. I'm going to click this small Gears icon to go to my Constraints tab. And from the constraints drop-down, I'm going to select follow path. Now this lets me choose a target which I want to be the curve we just created. And now my cube shoots out of the frame. Let's all the way back here. To align this, I'm going to turn on my snipping. I'm setting this to vertex or points on a curve. And I'll turn on the magnet. I'm going to move into local view to make this easier because there's a lot of points around my curve, will shift select my curve. Let's go into local mode. Now I will select my cube and if I move close to the curve, you'll see it snap. Now at the moment it snaps to a corner. So we need to adjust some settings. We want to snap with the center. Try that again. So now our cube aligns with the origin to the endpoint of our curve. Let's get out of local mode. And let's check the positioning of our cube on the conveyor. I think it sits quite nice. Can be a little bit lower. Now as we have set our follow bath constraint, we can move the bath up and down to move the cube. Let's turn off our snapping first. Is it snapping onto all the points in the area? Now, let's move it down a little bit to align it with a conveyor. Cool. Now there are multiple ways to animate your cube along this path. And I will show you 21 is the actual correct way to use the tools within Blender to animate an object along a path. And the other one is a bit of a shortcut I like to take when animating multiple objects along the same curve in a looping animation. Now the correct way to animate this would be to add our constraint to our object. And in our curve properties, we scroll down to path animation, where we will set the frame range of our animation. In our case, there could be 50. Now that we had back to our constraint. And we click the animate bath. Now Blender will create a relationship between the follow bad constraint and the curve. And it will keyframe the evaluation time using a script. So if we scrub our timeline, you will now see RQ move along the curve over a duration of keyframes, which will work fine for most animations. In our case, I want multiple copies of the cube along the same bath. And I don't want to switch around between my cubes and my curve properties. I want each cube to have to keyframes, which I can control more easily. So the way I like to animate my cubes along a curve is by using the offset factor in the constraint. I am going to clear my keyframes on the evaluation time, which gets rid of the animation on the cube. I'm going back to frame one. Now within the constraint, I'm going to set my cube to a fixed position, which changes the offset vector from a number to a slider 0-1. And I'm going to check the follow curve option, and this will make the object follow the heading of the curve. Now I can control the location of my cube along the curve by Keyframing the offset vector. So what I want to do is insert a keyframe on frame one. And on frame 50, I want to move my offset vector to a value of 0.25 and insert another keyframe. I'm going to copy my cube Shift D and right-clicking to duplicate in place. Now Blender also copied our keyframes, which is good. And I'm going to open up my graph editor to offset these keyframes. Drag out a new window, Shift F6. Those are my side panel. And I want to make this a linear curve. So I'll press T to set my keyframe interpolation to linear. I'm going to select all my keyframes I'm pressing the G key, I'm going to move them along the y-axis by a value of 0.25, which will offset the animation. So where the first cube ends is the exact location where our second cube will start its animation. That's also set the interpolation of our first cube to linear. And if we check out our animation now, you will see these loop perfectly. Let's repeat that two more times. So I will shifted D the second cube. Right-click to confirm in place, select all my keyframes and move them up to five units. Do that one more time. Well, if you now check out our camera view, I'll deselect the cube. They are always cubes running through. Are there? Very cool. Now you could of course animate this in the same way using the path animation, you would have to set your frames to 200 instead of 50 because we have four cubes moving along our curve. And if we would track the first cube all the way to the end, it would take four times as long as our frame range, so 200 frames. And then in the offset factor of the Constraint, he would offset that by 50 frames. Each. Both ways work fine. I like doing it this way because this gives me a bit more of a visual reference when working with these objects, which are free to choose the method you like best. Now that we know how to work with the follow path constraint, we can animate our pain. Displacement by running are driving empty over a circle. It moves the paint, but it will circle around to create a seamless loop. I will speed up the process a little bit because these are exactly the same steps we just did to animate our cubes moving along our conveyor. Depending on the size of the circle, you can make the paint move faster or slower. If I decrease the skill, you will see that the animation slows down. And if I increase the scale, you'll see that the speed increases. So it's all about finding a sweet spot that works for you. You get layer this effect by selecting the empty and adding in some scaling keyframes. They'll set a keyframe in the scale at this door to end, at the end. And in the center, I will maybe scale up our paint just a little bit. An insert, a keyframe. Now not only those the Bay moved, but the texture also increases and decreases in a school a little bit, Just to add a little bit of variation in-between the movement. Now let's work on the robot picking up the package and dropping it down on the other conveyor belt. What I wanted to do is to have the package come out of this first machine or the first column there. And then the robot picks it up and said, Sit down on the second conveyor. Before we start adding our constraints though, I wanted to make some changes to the robot. First, I wanted to add some rotation to the claw because at the moment as the robots sets down the package, the clause blocking the direction of our animation along the conveyor here. So as the robot moves over the package, I want to make the clause rotate by 90 degrees. Let's do that real quick. I'm heading over to five frames. I'm inserting a rotation keyframe that over to 20 frames. And I will make our clause rotate by 90 degrees on the z-axis. Let's insert another keyframe. Now we want to duplicate our keyframes over to frame 30, because that is the point a robot starts moving over again and then add frame 45. I want to duplicate the initial keyframe to make it rotate back and receive another package. Now as it moves over and rotates, puts down, it's up, MOs back. Cool. Now the next thing I want to do is actually change the timing of our robot because I want to have it start and end on the second conveyor. Now what we could do is change around all our keyframes, that there is another way to change the timing of your Looping Animation, which is way more efficient. To do that, we want to select all the objects we animated for the robot. So that means R2 empties and the claw because we just added some rotation to that. Now we want to open up our graph editor. So I'm dragging out a new window Shift F6 clause, the side panel. And we want to make sure that all our channels are visible. So I'm going to view my Z location here. And then pressing the a key, I'm selecting all my keyframes. Now I'm going to press Shift E to show the extrapolation menu. And by using these options, we can tell Blender how to extrapolate our curve or how to continue our animation curves after the last time, before the first keyframe. So I want to select make cyclic using an F Modifier. What that will do, as you can see, is it will repeat our curves in both the positive and the negative direction. Now there are some things we need to check because as I can see, my timing starts getting off. As Blender users, the first and the last keyframe as it's mirroring point, what we need to do first is make sure that our keyframes all align with the frame range And I'm going over all the keyframe channels to make sure that our first keyframe is at frame one and our last keyframe is at frame 50. So let's start with our claw animation will select the claw object and we can see it in our timeline already. Our first frame is at frame five and our last frame is at frame 45. So we need to duplicate our first keyframe and set it to one, and duplicate our last keyframe and set that to 50. Cool. Now let's move on to our movement. Or I can see I've already added a keyframe at frame 50 and a duplicate keyframe at frame one. So this one is all correct. Let's quickly check our Z location and rotation. The location as a keyframe at 150. And our rotation also does. So now we're in a good place to add. Our Modifier is again, select all our objects. Make sure all our channels are visible. Select all keyframes. By pressing the a key and pressing Shift E, we can add our cyclic F modifier. If you want to see these modifiers, you can press the N key to open up our side panel and click the modifiers panel. And as you can see, all of our channels now have the cycle Modifier. Now what this allows us to do, I'm going to close my side panel. If we select all our keyframes and press the G key to move them and move them on the x-axis, we will actually offset our animation. So this way we can easily read time our animation. So I'm going to move to frame one. I'm going to move my animation curves and using the graph editor and also the timeline, I'm going to retire my animation to make sure that the arm starts halfway its original animation. Let's play it real quick to double-check our Looping. Yes, that's working. Perfect. So now we're good to go on our constraints. Let's close our graph editor for now. Now what we want to do is to parent our box to both our conveyer and to our robot. But it has to switch its parent relationship at the moment that the robot picks up the package. And we cannot do this with the built-in parenting function within Blender. But there is a very useful constraint for this exactly operation which is very suitably named the child off constraint. So we are going to make this package a child of the conveyor of the robot. So let's add the constraint by opening up our constraints tab and selecting the child of. Now I am going to select the target for our child to be the conveyor. And I'm going to set the inverse to mark the parenting position of the package. Now, I can add in some keyframes to the conveyor. Because if I move the conveyor around to see that the box is parented, Let's add in some keyframes. I'm going to have it start at frame one. And I want the package to be hidden inside of this machine. Let's insert our keyframes for our location. Let's scrub forward. And at the moment the robot reaches its final position before it starts moving down, I'm going to make the object appear. And let's insert it keyframe. I'm going to add in a second child off constraint. Move forward to the point where the robot reaches its bottom position, which is here. And I'm going to set the target to our robot claw. And I'm going to set the inverse to mark the position. If I non-continuous scrubbing through, you will see that our robot picks up the package and puts it down, which looks perfect. But if we move backwards now, you will see that the package has an influence of both the robot and the conveyor belt. We actually want to switch between those. So to achieve that, we need to keyframe the influence of our child off constraints. But let's do that. At the very beginning. We only want the first child of I will rename this quickly conveyor. And the second child is a robot. At the beginning of our animation, I do not want the robot to influence our package. So I'm going to drag down the influence and you'll see the package returned to its original position on the conveyor. I'm going to insert a keyframe by hovering over the influence and pressing the I key. And I will move forward to frame 25, where I will insert another keyframe. Now I can see in the timeline might influence stays at zero over the whole period that our packages on the conveyor. And at frame 26, I wanted to have the child off constraint for the robot influence our package again so that it gets picked up. Now as our conveyor is not moving after the robot has picked up the package, we do not actually have to keyframe the influence of the first-child off constraint Now we want to make the package continue its journey along the conveyor from this point, which is the endpoint of our frame range. So that would mean that the animation along this conveyor starts at the first keyframe. Which is very convenient because we can use a new package and we won't have to deal with all the constraints that are already on this package. But what I'm going to do is to delete the reference package and to use a duplicate version of our constraint package to create a new base from. So I will shift D to duplicate and right-click to confirm in place. Now we can apply our constraints by hovering over the constraint we want to apply and pressing Control a or in the drop-down, we can select Apply. If we now move our timeline, you'll see that we have a copy of the package in the exact end frame over R package animation. Now the only thing left to do is to add another follow path along our conveyor here to animate the package moving towards the end of the conveyor. You know how to set up all the constraints. The only challenging part here is to add a curve that starts in exactly this position. So what I'm going to do is move the other package out of the wave for a second. Select my new package, Shift S to set the cursor to select it. I'm going to press Shift a to add in a Bezier curve. Now if you go into edit mode, select this point and press Shift S and select a selection to cursor. You'll see that your point moves to your cursor. But in the operation we just did, we lost the handles because they also snapped to our cursor control Z. What we want to do is select our point and hold Control to deselect our handles. And if we now press Shift S and select selection to cursor, only the point moves and your handles to intact. I'm familiar will have to add in a new follow path constraint. Bad eye dropper, select our new curve. You'll see there are packaged, just jump all the way to tobacco foreseen. Now, lucky for us, our cursor is still in the correct position. So we want to press Shift S and select selection tool cursor to make it move back. It's double-check with our animation and it's still in the correct position. The last thing to do for us as now add some copies along this conveyor and make the conveyor move. So let's start working on that. I'm going to move my claw out of the way. Everyone package. I'm going to insert some keyframes. I checked my fixed position again. I'm inserting a keyframe at zero. Let's move that to the start of our frame range. And at the end, I wanted to be at 0.333 to motivate about a third along the way. I don't want to add in four copies because I think that will get a bit crowded here. So let's insert a keyframe. And in this instance, I do not want to check my follow curve option because you will see that as soon as I check that Blender will rotate R package in a weird way. And it's very hard to rotate it back into position so that exactly matches. So what we're gonna do instead is uncheck that and animate our rotation by hand. So for are starting keyframe, I'm going to insert a single keyframe for our Z rotation. And at the end, I'm going to eyeball on watched this should rotate to match the path of our curve. Let's insert another keyframe. Alright. So let's open up our graph editor. Shift F6, close side panel. I wanted to remove the easing on my keyframes. So I'm selecting all of them, pressing T select Linear from the interpolation menu. And let's check our animation real quick. It looks like that's a looping, perfectly cool. Now let's I then the copies. But before I'm going to do that, I want to extrapolate my curves. So I still have all my keyframes. Select it as I'm pressing Shift E and I'm not going to make them cyclic, moves out Blender, extrapolate my curve in a linear way. So this means it will continue the movement. This will make it easier to add my copies. So let's shift D RQ, right-click to confirm in place and it might graph editor. I am going to move my keyframes over on the x-axis so that our last keyframe matches our first keyframe. And because we have just extrapolated our curves, the movement will continue. So if we now check our loop, the first baggage ends where the second baggage and begins and it continues the movement seamlessly. So let's do that one more time. We are duplicating our second package. Right-click to confirm in place. And in our graph editor, we want to move our keyframes over the x-axis. But now we do not have a keyframe to line up. So we need to work with our frame range, which is 49 frames as we start on frame one, frame zero. And of course we need to do that in a negative direction. So G, X and type in -49 Check that real quick. And that is looping seamlessly. Now we only need to animate the conveyor belt moving. I've already set up all the modifiers to make the conveyor move, follow the curve. But we only need to animate our X location who match the speed of our packages moving along. Let's insert a single keyframe for its location. Keyframe. Then the end. Let's first just taking a guess at how far we need to go and we can adjust from there. Let's insert more or less there. And of course we need to change this to a linear interpolation. Alright. Let's view this. Okay, and we're quite close already. But as you can see, our going various moving a little bit faster than our packages. Let's pull up our graph editor. Just play with a curve a little bit. Let's pick up our last keyframe and move it down slightly. We are almost there. Let's check how our tread alliance with the package. On the first and last keyframe. I see there's still a little offset I wanted to try to be in the middle of this shape. Let's select our tread, drag down or up, even a little bit. Now let's align our dread bit better. Let's check a little bit further. A little bit. We are in place. Let's check our animation. Very nice. That's working really well. Before we start Finishing Up, I want to show you a couple of constraints I like to use to add variation to a copy of animation you have already created. To do that, we are going to use our handle here as an example. I'm going to rotate this on the x-axis so that it aligns straight with the surface here. When it's move it over slightly, I'm going to make sure I am going to apply my rotation. Let's also apply our skill. Now let's create a duplicate copy and place it in the slot to the left. In our Constraints tab, I'm going to add a up your rotation, and I will set the target to the first handle. Now I do not want to copy my Y and Z rotation. I only want to copy my X rotation. If I now rotate the first handle, this second handle follow. Other thing I like to do to add some variation is to invert the rotation. So if I move the first handle up and the second animal moves down, well, let's start inserting some keyframes. I want the starting position to be at the dope for the right handle. Insert a single keyframe for extra rotation. Let's turn on our auto key. And let's move over to frame 20. Move it down. Let's duplicate our keyframe to frame 25. And let's duplicate our first key frame to frame 45 and frame 50. We now play our animation. You'll see that our handles move. Now the keyframes on the first handle also control the animation on the second handle. Which can be very useful. Because MY scene, I want for other handles which we can also drive using the keyframes on the first handle. What I'm going to do is move to our first keyframe. I'm going to duplicate second handle. Let's move it into the very first slot here. I'm going to get rid of the copy rotation Constraint. Going to rotate this on the x-axis. Let's move in a little bit. Alright? And I'm going to apply the rotation, and I'm also going to apply the location. Now applying the location will reset your origin to the origin of the scene. But in our case, that is what we want because the constraint we're going to add is the transformation constraint. What does Constraint lets me do is to pick a target. In our case, we want this to be the handle with the keyframes on it. And what this constraint let's us do is to map one of the transform properties of our target object. One of the transform properties of our ulnar object, and these properties do not have to be the same. So I can use the rotation of my target to drive the location of my owner. To set that up, I'm going to select map from to be rotation because I'm mapping from my target to the location of my owner. And I wanted is to move up and down. So I'm going to use the Z source axis as the x-axis from the owner. And to make this Constraint work properly, we need to set the limits in our targets as well as our ulnar. Let's check the rotation value of our target, which ranges from -30, from -35 more or less to positive of 45. So let's set that here are minimal value is -35 and our maximum value is 45. Now I want to set the limits for my Z location. I first wanted to set my minimum value because at the moment our handle on frame one is that it's minimal value. So let's click and drag. And we can see our animal move down. This is going to be a rather small number and maybe 0.0, 45. Then I can mirror that to the top. So that's going to be 0.045 in the positive direction. And if we now scrub through our animation, you will see that rotation of our target is mapped to the location of our owner. Very nice. Now let's populate the other sockets. I'm going to move this over on the x-axis. I'm going to get rid of my transformation. Now I'm going to add in a copy location, which basically works in the same way as we did for our copy rotation on the other handle here. But now I want to be this first handle to be my target. Now I only want to copy the Z location. As we can see. Now our object moves along. And if we again want to add some variation, we could invert our z-axis. There have been more than the opposite direction. Let's duplicate it two more times to fill the other sockets as well. I'm not going to invert the third copy. Who have my animation offset by one handle. Alright, I like the look of this. Very cool. So now we have actually animated six handles by only keyframing one handle. This will make it very easy for us to change our timing if we ever need to, because we only have to change the keyframes on one of the handles. And the other five will follow automatically. Let's check our animation. It looks from our camera point of view. I'm going to hide all the overlays by pressing Shift, Alt and Z. And let's play. Very cool. Our animation is really coming to life now. The paint moving in the canisters, we've got the handles moving, objects flowing along the treads, the robots picking up our package. Very nice. I will let you play around with the constraints we just covered. And I will talk to you in the last lesson where we will be fine Tuning are loop and we will be finishing up our project 7. 07. Fine Tuning and Finishing Up: Welcome to the last lesson. I've added some additional animation using the techniques from the previous lessons. I will quickly show you what I've done. I've added an additional piece dropping on the conveyor here, in which I used a follow path to make a travel through the tube. And then I switch that to a child off constraint to parent it to the conveyor as soon as it lands. And I'm switching between the constraints by Keyframing the influence at this point. From here, it changes from the follow path to the child off constraint. Next, I populated the connecting tube. Who with these loading pieces, I did this in the same way the conveyers work. I created a bunch of pieces, used an array to duplicate, and then I ran the pieces along a curve through the pipe. After that, it's just a matter of keyframe the location along the curve and making the pieces Loop. Lastly, I added the single pieces into the assembly unit here to be assembled into a cube. I animated this in the reverse direction using the transform properties of each cube. So I started with the cube in place and then moved back in my timeline to scramble the pieces. After that, I added a duplicate copy, and like we did before, I use the animation curves that I extrapolated using the cyclic Modifier to offset them and to make the animation loops seamlessly like that are loop is fully animated and we can start fine Tuning to get ready for exporting. There are a couple of things I wanted to show you before we export our animation. At the moment are Looping points mostly aligned with the start and the end of our frame range, which means that most animations reach their final or highest position. At the same time, we get a little more variation into the frame. We can offset some of these animations to make the Looping points less apparent entire, whole scene together even more. We can do this by using the curve extrapolation function we already used in the previous lesson. So let's offset are bouncing Q, for example, I'm going to select my cube open on my graph editor. And I will quickly check if all my channels have a keyframe on the starting and ending position, which they don't. Because I have to duplicate this keyframe and this keyframe. And I need to check my handles because as you can see in the end, get a weird jump. So I will set my last handled dope stool vector. Now we can select all of our keyframes, pressing Shift E, make cyclic using an F Modifier. And I will offset my animation by, let's say, keyframes. And if we now play our animation still loops, but are looping point has shifted. So the Looping of our whole animation is not as apparent anymore. You can do this for more parts in your scene if you'd like. This, have a look at your animation and see how that looks from the camera's point of view and decide if you wanted to change anything else. I see we can add a little animation to the assembly station here. When the package moves through, I wanted to have the bars flop out and back in. We can do this using a simple deform modifier. So let's add that to the top of the stack so it gets performed before the bevel and the subserve. That's also add a vertex group. So we can animate only the bars we want to move. Now in the modifier we can set our vertex group and change the operation to bend. We want to use an object to set the bending point, because by default it uses the origin of the object and that usually doesn't give the result. We're after using Shift a, I, Madigan empty and I'll move it to the top of the bars. And the Modifier is select the empty using the eyedropper tool. And if we now move the slider, the bars fold up. Adding some keyframes to make the bars flop out and begin lining it with the package animation. There we have it. All our details are taking care of. Now it's finally time to export our animation. You can export as a viewport render, or you can add some lights and create a cycles or an EV render That's all up to you. Before exporting though, we need to set one more thing on our timeline. And that is our frame range. Because at the moment we have a duplicate frame in our sequence. Since our frame 1.50 are the same, that we need to subtract one frame from our frame range and set it to 49. And a bottom right corner of our timeline, let's change our 50 49 and RER ready to render. If you're using my scene, you can turn on the extra lights collection and add in an HDRI or a sky texture. Now you are ready to render your scene. Make sure you've set your output directory and the output panel, and you have selected the correct file format. Double-check your render settings and press Control F2 to start to render. If you want to make a viewport render, you can use the same way to specify or output directory and your file format button. Instead of pressing control of 12, you add up to View and select the viewport render animation. And that's it. Congratulations, you have successfully created a looping 3D animation. Make sure to share what you've created in the project section. There will be ashamed as your hard drive is the only one to see the work you've done. And also take a look at what others have created. Thank you for joining this class and coming on this animation journey with me. I hope you'll take what you've learned and apply to your own projects. I would love to see what you create using these techniques. Feel free to leave a comment on what you think of the class or any other topics you will want me to create a class on. And I hope to talk to you in another lesson.