Intro to Rigs & Set Driven Keys – Maya

At the mention of rigs, quite a few of us got excited since that term is associated with the animation of 3D characters. Whilst we didn’t make a person or animal move, we did get a brilliant introduction to using rigged objects by attaching one to a motion path and adjusting the timing. The lesson involved using our prior knowledge of motion paths and animation in Maya, which is what we learned in the past couple of weeks’ sessions. The recap was therefore to create a motion path and attach an object to it, which I am happy to say I did with no problem. We were then asked to remove the easy ease, which is done by making the curve in the graph editor linear. It only requires the click of a button, since there are popular options at the top for quick changes.

 

 

What are Rigs?

 

In order for a 3D animator to manipulate a character’s movement and animate them, they need to have full control over every part of the body. This is where a rig comes in; it acts as a skeleton for the object or character through a series of interconnected digital bones which are operated like a puppet for animation. Although rigging specifically refers to the process of creating the bone structure of a 3D model, character rigs will often consist of a skeleton and muscle system. It also includes controllers, which are linked to the skeleton by constraints such as parenting and form a hierarchy that Maya uses to decide which parts animate as each controller is manipulated. It doesn’t really matter what the object is – adding bones will simply allow it to be animated freely. This means that anything can be rigged – a spaceship, a soldier, a galaxy or even a door.

 

 

This technique improves production efficiency by simplifying the animation process because any 3D object can be controlled and distorted as needed, once rigged with skeletal bones. This is why in the entertainment industry, it is such a major step in the standard way of animating characters. It is most commonly used for games and movies, but achieving smooth and complex animations is entirely dependent on the quality of the rigging phase in the animation pipeline.

 

First Look & Animation

 

For the demonstration and lesson tasks, we were given a rigged model to experiment with and animate. It was my first time ever seeing one and being able to work on a fully completed model with working components was quite entertaining. My first impressions when seeing the helicopter were that it looked quite complicated. There was linework everywhere to showcase which elements of the rig could be altered along with a, dare I say it, professional-looking mesh – complex in my eyes. Throughout the demonstration, things were pointed out and explained to us. I learned that rigs absolutely need to be fit for purpose. In bigger studios, animators usually won’t make the rig since that would be a separate role to save time. Once they receive them, if something doesn’t work as it should or at all, it would be sent back immediately to be fixed and reworked.

 

 

As you can see, there were constraints on each controller and controllers pretty much everywhere, meaning it was a very versatile rig and would most likely work quite efficiently in the hands of a knowledgeable animator. The doors, the landing gear and the propellers to name a few, were the ones that we explored and primarily worked with. Perhaps the most important controllers, however, were the ones at the bottom. There was a larger, main one that can move the entire model around and is used when working on it but not for keyframing. This is because it is the controller that will be strapped to the motion path when the model is attached, so a different one is needed for general movements, which is where the secondary controller came in. It was smaller and inside the main one, directly underneath the main body of the helicopter. It is the one used for animation, rotation and movement.

 

Main Controller

 

Secondary Controller

 

Once we were roughly acquainted with the rig, we were to make our first animation (without guidance!). The task was to make the helicopter take off and references were allowed, but I wanted to try without one as a challenge. The first thing I did was animate the propellers to spin all the way through. Even without a reference, I know that they have a natural ease in and start off slowly before speeding up. The point where they pick up in speed is also when the helicopter takes off so that was my next step, animating the secondary controller. I didn’t use the curve tool for this one, since it was a very simple animation – the model goes from point A to point B. The point of the task was to get a feel for how it is to animate and use the controllers in order to make the movement of the helicopter more realistic, so I knew I would be making something other than the propellers move.

Once I had the main animation though, I went back to them because I still wasn’t 100% satisfied with how they sped up. I opened up the graph editor to edit the curve and found that I would have to do something quite tricky, move the handles of one of the points on the curve without altering the rest of the curve.

 

 

To explain this more clearly, the first part of my curve sloped upwards, which is what I wanted in order to emulate that slow speed-up. However, this meant the second part of the curve rose slightly before dipping back the natural incline. I didn’t want this because it made the propellers slow down after their peak and it didn’t look realistic at all. I tried holding alt when adjusting the bezier handles but that didn’t work. The closest I got to having the first part of the curve sloping upwards and the second art as linear as possible was when I added a third keyframe/point in between my first two in order to manipulate it more precisely. Even then it wasn’t perfect, but it would have to do.

 

 

I moved on to more of the smaller controllers after that in order to make the animation feel more natural, or as natural as it can be with an aircraft. The controller at the top, underneath the propellers, was rather interesting, since lifting it would stretch the wheels out, as if extending them for landing. When moving it down, they would squish, just as they would realistically if a helicopter were to push into the ground. I was amazed at the detail put into even the smaller aspects of the rig and decided to use this controller in my animation, which you can see my doing above.

 

 

I also added a slight rotation, by clicking the secondary controller and ‘E’. I then used ‘S’ to add a keyframe in the middle of the animation and tip the helicopter forward slightly so that its nose lifted up afterwards. I have no idea how I knew to do this but it seemed more logical in my head than having it go up headfirst like a plane. I will credit it to films and clips that I have watched, or even the actual helicopters that I’ve seen take off and land. Here is the first animation, which I am so happy with!

 

 

I think that it shows how much easier I find animating already than modelling, but I suspect that might change once we go into further techniques and more in-depth settings since that is what happened with modelling. I don’t really practise 3D in my spare time and with so many skills and techniques, often forget where to click and how to do various things. At the minute I a focusing on my creative project, and whilst I do want to go into 2D, I am not planning on fully neglecting 3D since I do enjoy it. I would like to improve in the areas that I find interesting such as creating characters, simulations and animation.

 

Applying Motion Paths

 

After creating a basic animation, we were asked to attach the rig to a motion path and try to solve any issues that may pop up. It became quite clear what was implied after I drew a curve, selected it and the main controller of the helicopter and went to ‘constrain’, ‘attach to motion path’.

 

 

As soon as the helicopter was attached, I realised that something was wrong. It was sideways! The main controller had stuck to the curve incorrectly, which was the first obstacle to overcome before I could animate anything else. My first instinct was to move the pivot point. I thought that it might have been a case of a simple adjustment in position or rotation, but it didn’t save even after clicking ‘D’. As soon as I hit play, it would go right back to moving horizontally.

 

 

I figured out why I was struggling when I double-checked which controller I was working with. Of course, the main one wouldn’t do anything, it was stuck to the motion path! I clicked on the second one instead and rotated the pivot point there, after which the helicopter pointed the right way all the way through. I also quickly animated the propellers in the same way as the first time. I clicked ‘S’ at the first frame and then clicked on the last one, where I changed the value of the propeller controller’s rotation to 1000 – 2000 and clicked ‘S’ again.

 

 

 

I was just about to animate the secondary controller for some more dynamism when our time for the task ran out and we moved on to the final animation, for which we had to:

 

  • Arrange the building models into a cityscape
  • Create a motion path for your helicopter
  • Assign the main controller of your helicopter to the motion path
  • Add secondary animation to your helicopter – Rotors Etc

 

To clarify, we were given a dozen or so building models that we could arrange in whatever way we wanted to create a cityscape. This would act as a backdrop and a kind of obstacle course for the helicopter, depending on how we set them up. It wasn’t part of the suggestions but an awesome way to finish off such an animation would also be to add a camera and animate that following the helicopter in a cool way (action film?). Here is how I set my city up.

 

 

I then needed to create a landing pad. Since I had put some thought into how my helicopter would be navigating the buildings, I knew where the natural ‘end’ would be, hence where it would have to land. So, I duplicated one of the lower, flat-roofed buildings and placed that in the space opposite to the empty corner which you see above. Using some quick extrusion, a lambert material and an imported image, the landing pad was created. I didn’t have a lot of time but I would have liked to find a better PNG since this one didn’t turn out to be transparent.

 

 

Carrying on, I went into top view to create the path. My strategy seems to lean towards starting with a basic line from the top before moving the vertices in the side view and making it more interesting. I did want my helicopter to go up and down after all, as well as lean to the side in certain moments. What was frustrating though, was knowing that I wouldn’t have time to finish the animation. I knew it, even before the lesson had ended. It is true that much more time would usually be spent on something like this but I can’t help but wish that we could at least finish the possible portfolio-level material, which we don’t usually do – only the smaller tasks (perhaps it’s my in-lesson time management?).

 

 

By the time I completed my curve and attached the helicopter, there was no time for any extra animations that I had planned to do, such as leans and banks, the doors, wheels and even propellers. I also noticed that my helicopter was much faster than it ought to have been and that the graph editor would have also needed some work.

 

 

Set Driven Keys

 

Our other new topic for the session was set driven keys. They are a type of keyframe that allows you to link objects so that one object’s attributes can drive or dictate the attributes of another object. This makes them a pretty vital part of the rigging process. They are set in a scene, or on a character rig in order to help speed the animation process up by helping the animator avoid using too many keyframes. One example of how they are commonly used is making a muscle on a character’s arm bulge whenever the elbow is turned a certain way. As always, we began by following along with a demo in order to learn how it can be done.

 

 

Tutor Workshop & First Task

 

In a similar fashion to our previous couple of demos, we were provided with a model that was built for the specific purpose of our lesson focus. This time, it was a sci-fi entrance, with a futuristic set of doors built into a wall that had a control panel. The goal was pretty obvious right away – make the doors open when the lever is pulled down. We began by going into the context menu and choosing ‘animation’. Then, we selected one of the doors (it didn’t matter which) and went to ‘key’, ‘set driven key’ and then ‘set’.

 

 

It made the most important panel for this technique pop up, a window of the same name where you could set which pair of objects would be affected by each other. We were told to click on the lever and then the ‘load driver’ button which made the lever the controlling object. The door is the one being driven because we want it to move when a certain action happens, meaning the lever is the one driving it and is therefore set as the ‘driver’. Because we loaded up the Set Driven Keys panel with one of the doors selected, it was automatically placed in the other box. Next, we had to figure out which axis to choose for both objects so that the keys knew what they were supposed to follow when altered. For the door, this was pretty simple because it was just going to move along one of the axes. In my case, this was ‘Z’ so I selected the ‘translate Z’ option next to the driven box. The lever, however, was often where beginners got confused and made a mistake. Although when rotated, it move towards the X-axis, we needed the one that it was rotating around, which was ‘Z’ again. Since we were using the rotate tool and not the move tool, this time we selected ‘rotate Z’ in the other box.

 

 

Then it came to the animating part. I was surprised to hear that it didn’t involve clicking ‘S’ this time but rather the ‘key’ button in the panel. Once I did so, the only indication that something had happened was the text that appeared towards the bottom of the screen saying ‘Result: 1’. Seeing this as confirmation, we rotated the lever 90° and then selected the door and move it as far back into the wall as we wanted. We then clicked ‘key’ again and now when the lever was moved, the door also opened.

 

 

We picked up on the fact that when we continued to rotate the lever, nothing happened. This is because it was constrained to where we told it to stop. We rotated the lever to 0, closed the options panel and repeated the steps again, this time starting with the other door. Once that was done, the animation worked exactly as it should. What we did was create a dependent link between a pair of attributes. A change in the driver attribute alters the value of the driven attribute, making it a quick and easy animation technique that can be applied to anything. I wasn’t so surprised at how useful and simple this particular one was since I knew that there had to be a way to do this, being such as commonly seen thing in animation. Nevertheless, it’s great to know that it can all be done in one place and there isn’t any jumping around between different buttons and windows.

 

 

Our first task came right after we got our playblasts. We were going to be creating one of the first examples that one thinks about when presented with the idea of driven keys – gears and cogs. In a new scene, I created a cog and a lever using very basic techniques (although I extruded some faces by accident, malformed the lever slightly and didn’t have time to go back and fix it). This time, with no guidance but the tutorial still fresh in my head, I went through the steps much faster.

 

 

I set the cog as the driven object and loaded the lever as the driver. That part was simple enough, except the lever wouldn’t rotate as I wanted it to. I had to move the pivot point to the bottom circle so that you could rotate the handle and the entire lever would spin in that one spot. Next, I selected ‘rotate X’ for the cog, remembering what was said about it spinning around the axis. Strangely though, when I applied this logic to the lever, it wouldn’t work. Although it was rotating around ‘X’, I had to change it to ‘Y’, which is the value that was shown as being changed when I looked at the attribute box.

 

 

The animation was next. I clicked ‘key’ and rotated the lever 360°, after which I rotated the cog -360° so that they span in the same direction. Like before, it stopped spinning at a certain point because I kept rotating the lever past 360°, which was where I had placed the key. The process to make it continue here was a little bit more complicated, so I’m going to put my notes in a step-by-step format below.

 

  1.  Open the graph editor and make it a linear animation (straight line icon at the top)
  2.  Go to ‘curves’ -> ‘pre-infinity’ -> ‘cycle with offset’
  3.  Click out of the section and then go back into ‘curves’
  4.  This time, go to ‘post-infinity’ -> ‘cycle with offset’

 

 

Second Task

 

For our final application of the skills we learned, we were to build a basic environment of our choice and see where we could apply set driven keys to make objects move. I decided to go for something quite simple which turned out to have more challenging than I thought – blinds (specifically, the blinds that I could see in the classroom). I began with the beaded string with which you pull them up or let them down, and that was just a matter of duplicate special and was done quite quickly.

 

 

I should have used a non-linear deformer to curve it at the bottom and then extend it with duplication and combine, but I didn’t think to do this and just made two separate strings instead. I used ‘Bend’ only to make a duplicate of the original model a complete circle so that I could place that on the pole, which is what I moved onto next. I used a cylinder and extrusion to create the end.

 

 

Once I extruded the smallest face outwards to make the long pole from which the blind hangs from, I scaled a simple poly plane to the right size so that it would fit underneath the pole. All of this is pretty basic stuff, but I then had to think about how I was going to show the blind going up. Would it have to wrap around the pole? Could I make it disappear after going past a certain point? In the end, I had to go for the only thing I knew how to do, which was using the scale function. The problem was that it scaled from both ends, and I had never needed to make it smaller only from one end before. It wouldn’t work otherwise for this animation though, so after a quick google, I found out that all I really needed to do was move the pivot point to the opposite end of the side that I wanted to make smaller/bigger. Once I did that, everything was good to go and I could add the set driven keys.

 

 

 

Because I was not changing the position of the poly plane, nor was I rotating it, I got the chance to try out the third option of set driven keys as well! I selected ‘scale Y’ since it was shrinking along that axis. The driver has ‘rotate’ because I chose to make the loop of beads the object controlling the blinds and simply animate the strings underneath to go up and down accordingly. Unfortunately, I only got time to do one, but you can see where I was going with it – I think it looks quite realistic.

 

 

My spirits were quite high by the time I had completed the lesson. I had managed to think up some original with which to use the new technique I had learned and used my problem-solving skills to find solutions to any obstacles that came up, such as how I was going to make the blind go up and down. I also imagined going further with it; modelling an open or even broken window at the back, making the blinds a bit more rugged, natural or torn and having them blow slightly as if the wind was coming through. I would have used Bifrost for this and with some cool textures and lighting, it would make a pretty solid piece! I hope to have a period of time before our final project of the year (when we make our portfolio) that can be a ‘finishing things off’ period. I would love to have some time dedicated to me in the lesson so that I could choose what I want to spend more time on and complete – quite a lot of models are unfinished. Overall, it was an interesting 3D lesson.

 

Extra

Examples of what Set Driven Keys could be used for:

A door opening when the camera comes close, a balloon being pumped when the handle is pushed in, a jack-in-the-box, steering wheels and the wheel, a lever and chain(s), buttons that are pressed to make something light up or move etc.

It could really be applied to anything, which is awesome since it saves a lot of time in production.

Leave a Reply