TUTORIAL: LYNDA MAYA: CHARACTER RIGGING

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Applause] if you've ever wanted to animate characters for video film or games you'll understand how important a good character rig can be this course shows you how to create a skeletal rig from the ground up we'll start off with creating skeletons then we'll move on to creating controls to manipulate those skeletons and those controls include things such as fk and ik switching and finally we'll skin our character to our control rig hi i'm george mastery if you've ever wanted to animate characters or learn a little bit more about character rigging let's get started if you want to follow along with the exercise files that accompany this course go ahead and download those now and place them on your desktop now the exercise files folder itself is a maya project so it has all of the scenes that we use in the course here under the scenes file and when you first start up maya for this course go ahead and do file set project and then on your desktop find that exercise files folder and hit set now once you do that everything should be aligned and you should be ready to start learning before we dive into rigging let's step back for a second and understand exactly what a rig accomplishes a rig is essentially a user interface for the animator it makes the character easy to animate and the rig itself should be easy to understand should also be flexible and should be able to accomplish a wide variety of animation tasks so this is the rig we'll be creating in this particular course and it is essentially just a body rig so each one of these controls is pretty apparent so if i were to say select the spine i could rotate the character left and right i have these controls here for the arm that moves character up and down but i also have additional controls so for example this control here switches between ik and fk and notice how the controls change as that switch is enabled now how you design a rig is really kind of up to you there's a lot of different ways to rig it can be a very creative process this rig is essentially just a body rig we do not have any facial controls here but a more complex rig would have more control so this is a rig that we use for our character animation courses and notice how we have all of these controls for the face so if i were to say move this i could actually manipulate the face and each one of these is clearly laid out and labeled so you understand exactly what each control does so when you start rigging you want to understand what it is you want to rig what the animator needs and then you want your rig to serve the animators needs when you start building your own rigs there are a couple of industry standard rules that you should follow and these will result in better rigs that are easier to manipulate now the first rule is simply start with a good model good geometry is of utmost importance for a rig now any geometry that deforms should have regular edge loops that follow the motion of the character so in this case the body has edge loops around the knees that help it to bend the knees uh the shoulders are nice and easy to manipulate as well and if we look at something like the face the edge loops of the face follow where the muscles will pull that face so it will deform in a natural manner now in addition to this you do not want to keyframe geometry or skeletons so i've got a couple of layers here in my layer editor so i'm going to turn on the skeleton here so we've got basically three groups of objects that we use in a rig we've got the geometry itself that geometry is deformed by skeletal joints and those skeletal joints are controlled by our control rig so if i turn off skeleton and geometry these are the controls for the character these are the only things that should be animated these in turn control the position of the skeletal joints those skeletal joints will never be animated and then the skeletal joints deform the geometry so the only thing that will be animated are the controls if we look at this in our outliner you see i've also organized the scene the same way so geometry is a separate group the skeleton is another separate group and then the characters controls are here so when you go to animate the character everything you need is in this control group now another important thing about controls is that you should always make sure they are aligned properly and zeroed out so if i were to select say the shoulder control you'll see that all of the values are zero so if i were to move that in some way and animate my character i can always get back to my default pose by plugging zero into translate and rotate so every control you have should have the rest position as zero now once we understand all of these rules it makes it much easier to rig a character before we actually get down to rigging a character i want to go through all the major tools that we will be using in the rigging process i find that understanding these tools a little bit ahead of time helps you to understand the rigging process as we go through it the first tool we're going to look at is the joint tool now we can find this in one of two places if we go into the rigging menu set you'll see under skeleton we have create joints we also have a rigging shelf here and that also has a create joint tool so let's go into skeleton create join so i'm going to go ahead and open up the options here and we have our tool settings so i'm just going to hit reset just to make sure that we're all in the same place now under joint settings we have a lot of different things and these probably won't make sense to you until you start using them but probably the most important one is the orientation settings so here we have what's called a primary axis now by default this is the x-axis and that means that the joint is going to be pointed down the x-axis and this can be important depending upon how you want to rig your characters and so we're just going to go with the default here of x but i'll show you a little bit more about this as we go through it so i'm going to go ahead and close this and i've already selected this tool so you can see that my cursor has changed so i'm going to go out to a four view and let's go ahead and hit spacebar over our side view now i'm drawing this in an orthographic view just to make sure that the joint chain is flat so i'm going to left click on this and that will give me a joint if i left click again that gives me a second joint now the joints are the circular objects and in between is this kind of tetrahedral shape and typically that's referred to as a bone but basically it just shows you that these two joints are connected so if i click again you can see that i'm getting something that looks kind of like a knee and an ankle and then maybe click again to get the toe so we have say a hip knee ankle and toe now once you're done with your joint creation all you have to do is hit enter and then we can go to select mode and hop out to a perspective view so as you can see we've got these joints now if we go into the outliner you'll see that the joints are connected hierarchically so the first one i drew is obviously joint one joint two is our knee three and four now when we drew these joints remember that we drew them so that they were aligned along the x-axis so if i select one of these joints and go into my move tool and double-click on it and go into say object orientation you can see that the object itself the joint is aligned along the x-axis so in other words this joint's x-axis is pointed towards the next joint in the chain so my hip is pointed at my knee the knee is pointed along x at the ankle and so on now the toe itself is not aligned and that's because each one of these is aligned to the next joint and in this case there is no next joint so this one is just aligned to the x-axis of the world and i'm going to show you how to change that in just a second now when you draw these chains there are many times when you'll need to adjust those joints so for example this one maybe i drew that a little bit low or let's say the knee was a little bit off so i can basically adjust these however i want and just you know basically reposition this chain very fluidly now when you start to do this you're going to run into a problem so if i select this joint here you'll see that by moving this knee i did not move the axis of the hip joint so in other words the hip is no longer pointed at the knee and so when i go to rotate this joint it's not going to be aligned properly and the same goes for the knee you can see how that's kind of a little bit off from pointing at the ankle so when you start to draw chains into a character uh you'll be doing things like you know adjusting these joints just so they're exactly positioned right and that's going to throw off your orientation of your joints now we can fix this very simply by going to skeleton orient joint and let's go into the options here so orient joins really works very simply if i select the top of the hierarchy it will work its way down the hierarchy and align them to whatever i want so if i select my primary axis as x make sure i orient the children of the selected joints and make sure that we have orient joint to world toggled off let's go ahead and hit apply now watch what happens to this it gets reoriented so now my x is again pointing at the next joint but we still have the problem with this end joint and in this case it's the toe but we want this to still be kind of in line with everything else well we can fix that very easily by going orient joint to world and hitting apply and what that does is it just flips it around so that it actually orients the parent now i don't know why they called it orient joint to world it really should be orient joint to parent but it still works now there are times when you may want to orient things a little bit differently let's say you don't want this along the x-axis maybe you want it along the y-axis well you can certainly do that and certain game engines such as unreal uh prefer to have the joints oriented this way so it really just depends on the project and the client that you're working for but you always can hit apply and align them this way as well so as you can see drawing joints is fairly easy but when you adjust your joints you want to make sure that you reorient them to themselves as well as the world when you work with joints in a character you'll be using a lot of rotation so understanding how maya calculates rotation can be very important to getting the rig working the way that you want so let's take a look under the hood of maya and see how we can change what's called rotation order now here i have a simple joint and if i double click on this we can go into say world mode and we can rotate around the world axes we can go into object mode which rotates around object axis and we can basically rotate however we want but in this case i'm going to go into what's called gimbal mode now what this does is it forces you to rotate along specific axes so in this case i can't rotate around x and y or x y and z i can only rotate around individual axes so in this case i can rotate around z or y or so on now when i do this you're going to notice something a little strange so if i rotate around the z axis you'll see that all the other axes go with it and that's kind of what we expect but if i select the y-axis notice how the x-axis goes with it but not the z-axis and we can get to a point here where the z and x-axis almost overlap and when this happens this can create a little bit of a problem because of the way maya calculates rotation and we can get what's called gimbal lock and we can get what are called joint flips so i'm going to go ahead and undo that and let's go into the attribute editor now under this joint under transform attributes you'll see we have what's called rotate order now this tells maya what order to rotate the joints so as you're noticing here that if i rotate y z is not going with it and this is basically what's called x y z rotation so z here is dominant so it's the one that's last to calculate now if i want to i can change this i can change this to relate to almost any orientation i want now the orientation that you choose is really going to depend upon the character uh how the joints are oriented where the particular joints are in the character so there's no hard and fast rule for how to set these but you need to understand that this does exist and that you can change it if you're getting problems with joint rotation so in this case i have right now x y and z but if i wanted to i could say reverse it z y x so in this case now z goes this way and so you can see that as i rotate around x and y now in this case z is following y rather than the opposite way which was when i do x y z you can see that now x is following so in this case this is a hip of a character so typically the character is going to walk this way it's going to rotate around say the z-axis it may move its leg out left and right but this joint really doesn't twist along that x-axis so in this case the non-twisting joint makes it so that we kind of want x to be that last one calculated so in this case x y z works but in a different part of the character a different rotation order might be needed so just understand that this feature exists and it can get you out of some situations where things aren't rotating the way that you want when we create a rig for character animation we want a control structure that modifies the underlying joints so typically the animator will only touch controls and those controls in turn will manipulate the joints that deform the character now there are a number of ways to connect our controls to our joints and one of the most popular ways is called a constraint so let's go through some of the most popular constraints and see how they work now this scene is pretty straightforward it's pretty simple if you look at it in the outliner you see we have all of these joints and these control objects and this joint is down here so i'm just going to middle click and move it up just so we have all of these organized now if i were to select one of these controls you can see that at this point it's zeroed out and that's what we want with the control we want our controls default position to always be zero that makes it very easy to reset the rig now we can do this with regular objects or curves all we have to do is select the object and let's say we accidentally moved it or something and we got some numbers in there all we have to do is just do a modify freeze transformations and that will zero everything out and that's pretty easy and you're probably already aware of that now with joints however we can't do that so if i were to say move this joint around and do a modify freeze transformations nothing happens right and if i were to say zero this out manually it goes to the origin so the actual world position of the object is baked into a joint so i'm going to go ahead and undo my way out of this so if we want to control this and have the ability to have a good zero point we will need to connect these with something like a constraint so let's go ahead and see how constraints work so i'm going to be in my rigging menu and under constrain let's just go ahead and tear off that menu now there's a whole bunch of constraints that maya can use but the ones we're going to use in character rigging are pretty much the ones along the top here so let's go ahead and constrain this joint to this control so i'm going to select the control first select the joint last and then let's do what's called a parent constraint now if i click on the options you'll see we have options to control what exactly is constrained but the most important checkbox in this menu is this maintain offset if i check it off and hit apply that joint will basically align itself with the control and put itself kind of off kilter or whatever you want to call it so if i undo that and check maintain offset it will go ahead and just leave this in place and create the constraint now if we look at the constraint you'll see it's here in the outliner and the constraint is on the joint so here we have joint a parent constraint now the parent constraint acts as if it is in a hierarchy with the control so if i were to say rotate this or move it that joint just follows along and it's essentially attached to that control without actually being in a hierarchy and that's one of the great things you can do with rigging now we have this control already zeroed out so if i want to just put it back to normal i just select all of these values and hit zero and it goes back to normal now we have a bunch of other constraints as well so i'm going to pull up my constraint menu here we have what's called a point constraint and that just constrains positions so if i look at this make sure i have maintain offset on i'm going to select my controller and then the joint and click add and so what this does is it constrains the motion so if i move this or translate it the joint follows but if i were to rotate this nothing happens to the joint it's only following translation now we have another constraint for orientation so if i pick these and do orient make sure i have maintain offset on now the rotation of the joint will follow the rotation of the control now notice how the joint is rotating around its own center so whatever number comes up in this rotate field will actually just be put into the joints rotation and it will rotate around its pivot now another popular one is what's called the aim constraint so if i were to select my control and then select the joint and just do an aim constraint you'll see that this really flips around and what it does is it points the joint at the object so the orientation of that joint does matter and in this case it's pointing down x and x is pointing at this object and this is a great for a number of things that we can do in character animation including controlling the eyes now in addition to constraining one object to another we can also do it with multiple objects so let's go ahead and take say this joint here and i can constrain it to be between two controls so if i select this control here and just do an edit duplicate i now have two controls so if i shift select both of these and then select the joint last and let's say let's just do a point constraint this object will stay between each one of these if i select the joint you'll see that down here i have a point constraint i also have that in the attribute editor here but if we go to the channel box you can see that if i select this this control e one is basically both of these are at one if i animate that to zero it goes to one side if i bring that back up to one and animate the other one to zero it goes to the other side now this can be used a lot for switching between different control structures in your rig so if you wanted to switch between ik and fk this basically is the key to doing that so as you can see controls can manipulate joints using constraints and depending upon what you want to do with your character you can use different types of constraints another way to get your controls to manipulate the rig is to use direct connections now this avoids constraints and it's actually a simpler and more direct method but there are some limitations so let's take a look at this i have this joint in a scene and then this control now if i want to i can select both of them and go into windows general editors connection editor now in this case my control loaded up on the left and the joint loaded up on the right so i want my control to manipulate my joints so i want to press this from and to button so that it's going from the control to the joint now i can scroll down and actually select whatever value i want to control so in this case let's say rotate so if i select rotate on this side and scroll down so i get rotate on the other side now i have a connection so if i were to rotate this the joint goes the same way now i don't need to do all of these i can certainly just do something like say rotate y to rotate y and then only y will work and nothing else will work and this is just a great way to connect things now i'm going to click off on these and turn them off and then let's just go ahead and shift select these again now i find the easier way to do this is use what's called the node editor so if we go into windows node editor it brings up this window so i'm actually going to position my stuff over here and let's go ahead and select this joint and then move it and i'm going to hold down the letter v and that will snap to a vertices so i'm just going to snap this directly to that joint now when you use the node editor you can load any number of objects or nodes into it and then connect them all together so i'm going to start from scratch here and just go ahead and hit this button which clears it out and then i'm going to select my joint and my control and then hit this plus sign and that brings in all of these objects now if we zoom in you'll see we've got actually three nodes here we've got the joint which is this and notice how when i select it in the node editor it actually selects the object i've got the control now this is the actual position node of the control and then down here i have what's called the shape node now we're not going to be working with that because we really want to work with connecting things such as translation and rotation so in this case you'll notice that we have a translate and a rotate for both of these so if i want to i can draw a line from here to here so i'm just left clicking and dragging and connecting rotate to rotate and when i do that you'll see that again all of the rotations are matching and i'm doing this without a constraint now i don't have to do just rotate i could also do say translate so if i select translate here now the translation of this is feeding into that as well if i were to break this i could select that control and move it off and if i were to move it off and then reconnect it notice how that jumps and this actually brings up a very good point with this and that is is that these numbers in this control are directly going into the joint so remember the joint itself you can't zero out the position so in order for this to work this particular controller does have to have the same numbers in it now this isn't ideal for a rig but i'm going to show you some tricks for actually getting around this little deficit but the most important thing you need to know is that the node editor itself is a very very handy way to connect all sorts of different things within maya and we're going to be using this a lot as we rig our character when we create controls for our rigs we want the controls to default to zero values and that makes it easy to reset so sometimes that's not as easy as it sounds and in order to get things to zero sometimes we have to add in additional nodes called offset nodes so let's take a look at how this works i have this joint and if i want to control it i want to create a controller that is aligned with this joint and that means the axes are aligned so in this case the red axis or the x-axis is pointing down the joint so i need to create a controller along the x-axis in my scene the x-axis is going down the side view so it's perpendicular parallel to the side view so i can just go ahead and create a nurbs circle or curve whatever you want in that side view and now it's aligned to x so in other words the x axis is pointing along that curve now i could certainly create this in other ways and still get this aligned but i find just drawing it in the side view is the easiest now i want this to be aligned to my joint so the easiest way to do that is to simply use a parent constraint so i need to select my joint first select my control second because what i'm going to do is be modifying the control to match the joint i'm going to do this using a parent constraint so if i select constrain parent and i want to make sure that in this case maintain offset is off and when i hit apply watch what happens that snaps to the joint and is perfectly aligned so if i select that control and go into windows outliner you'll see that i've got this parent constraint now once this is aligned i can just select the constraint and delete it and if i select my nurbs circle you'll see that i have a whole bunch of numbers which i tend to refer to as garbage numbers and those are the exact translation and rotation values of the joint so if i were to select the joint you'll see these numbers here match the ones on my nurbs circle now i'm going to go ahead and select this nurb circle let's go ahead and change the name to control a now the big problem with this is that i want these numbers here in my control to be zero now your first instinct is like oh well that's easy all i have to do is modify freeze transformations but when i do that watch what happens to the orientation of the axis so this changes so now the red axis or the x-axis is not pointing in the same direction as the joint and that's just not going to work we want this to be aligned properly so i'm going to go ahead and undo that and we have to find a way to get this number here into something else and we can do that by creating what's called an offset node now an offset node is essentially a group you just group the object to itself and find a way to get these numbers into that group so you can zero out the control so all i'm going to do is select my control go edit group or hit control g and that creates a group and makes the controller a child of that group so i'm going to select group one let's double click on it and let's call it offset a now i want this to be aligned with the circle well we can do that easily by going modify center pivot now when i center pivot it still keeps this at zero so if i select my offset i've got all the zeros that i want but i still have these garbage numbers in the controller so i need to move these from here in the controller to the offset now there's a couple of ways to do that i can literally just retype the numbers but that's kind of a hack so let's try something else so i'm going to select my joint shift select the offset and let's just do another parent constraint and again maintain offset is off so now my offset has all of those numbers in it and my circle well my circle still has those numbers but if i for example zero out the rotations now it's aligned but i still have translation here but i can just do a modify freeze transformations on the control and everything is now at zero now i can select that offset parent constraint and delete it and now all of these garbage numbers are in the offset and my control is at zero so now if i select my control shift select my joint i can do a constrain point constraint maybe a constraint orient constraint and now this will move and rotate with that control but the offset that i need is in this kind of dummy node this offset node and so this is a great way to zero out your controllers and this method has been used a lot in character animation and rigging with maya so in order to zero out your controller you may need to create an offset node that contains the garbage numbers for the controller now we just took a look at how offset nodes can be used to create controllers that can zero out and if you recall if we go into the outliner here you can see that here we have this controller with an offset node now the controller itself is all zero values but if we go to the offset node you'll see that we have all of the garbage numbers that we needed to put into it in order to get this to zero out now this method of creating offset nodes is pretty standard in most maya rigs now that is changing with the advent of maya 2020 maya 2020 has a new feature which basically eliminates the need for offset nodes and it's going to make your rigs much cleaner and this feature is called an offset parent matrix now that's a kind of a mouthful but let me just show you what we have here so here i have a second control and a second joint so i'm going to go ahead and move this control and hold down the letter v to snap to points here and i'm just going to align this with my joint now you'll notice that this control here control b we have a similar situation we have all of these garbage numbers and if i were to do something like a modify freeze transformations that's not going to work because the axes will change so i'm going to go ahead and undo that now we can get the same effect as an offset node using what's called a parent matrix now what is a parent matrix well it's simply another set of transforms that are in every object in maya so if i select my control go into my attribute editor and select my leftmost tab here which is my main shape you'll see that i have transform attributes now these are the same attributes here that we have in our channel box but if i scroll down in that attribute editor you'll see we have another rollout called transform offset parent matrix and what this is is essentially the same thing so we have translate rotate scale we also have the same here translate rotate and scale so i have a second set of transforms that i can use to place those garbage numbers now the easiest way to do this is to simply just copy the numbers from here down to here so for example i could copy this x value down to here and of course that moves it but when i zero out that x value it snaps back so now this 4.323 is in my translation on the offset rather than the main attributes and if i go to my channel box you'll see that that one is zeroed out now i could certainly get really tedious and just kind of copy all the numbers over but that's again very tedious so i'm actually going to undo this and let me show you a little trick for getting all of these numbers into here and we can do it in the node editor so i'm going to select my object go windows node editor and then just hit plus to load it in now i'm going to go ahead and move the shape note out of the way and expand this node now this node has a bunch of stuff here and the one we're looking for is matrix now matrix is essentially what's in the channel box it's all of your translation rotation and scale so i'm going to select that and i'm going to plug that into here and essentially i'm feeding a number from the object's translation back into itself and we're going to select other and then i'm just going to scroll down until i find offset parent matrix now when i do this my control jumps way out of the scene here but if we look at the attribute editor you'll see that all of these values are now placed into the offset parent matrix now i don't want to touch this and i don't want to move this because this is a live connection so if i were to change any of this it would start to feed back on itself and you wouldn't like the results but i can select that connection immediately after creating it and just hit delete and when i do if i select my object you'll see that now i have those numbers in both of them well that's easy to fix here all i have to do is go to my channel box select these numbers and zero them out and what that does is it zeros out that object but it's still a little bit off but i can certainly move it so if i move it and make sure i have snapped points here snap it there my axes are aligned my rotations are zero all i have to do is do a modify freeze transformations everything is zero now the net result of this is that all of those values are now in my offset parent matrix so now i can connect the objects using constraints or direct connections the node editor whatever and anything in my channel box is now set to zero so instead of having an offset node containing these it's simply in the offset parent matrix so when you rig in maya 2020 and beyond offset parent matrices are the best way to go for creating offsets now let's get down to actually rigging the character now the character that we're going to use is uh this little guy and his name is gary and when we get a model for rigging there are a couple of things that we want to do just to make sure that the rigging process goes smoothly now you may get a model that is off center or something like that and the first thing you want to do is just to get this model or the geometry aligned with the world we want the symmetrical model to be on the zero plane so if i hop out to say a front view i just want to zoom in and just make sure that the vertical axis the y-axis is centered along that character now this character is pretty easy because he has a very nice edge loop that goes along his center and just as long as that is lined up with the y-axis we should be good now on the other axis uh looking down the x-axis in the side view again you pretty much want him centered so i have his leg uh kind of centered along the y-axis as well now it's not that important uh to have this perfect on the front back axis or this looking at it from the side view but it does help now when we get geometry it may have been modeled or something like that so we want to make sure that we get rid of all history in the model so i'm going to select all of the objects in the scene and then just go modify freeze transformations and that basically zeros everything out if we take a look at one of the models here and say do a move tool you can see that also the pivots are centered so if not you may want to do a modify center pivot now this particular character comes in a number of different pieces so if we go into the outliner you can see that i've already grouped the geometry now this is under a group called geometry and then each one of these objects is part of that geometry now the scene also has some lights in it and again those are grouped and this will just help me to view the scene as i rig and work with the character now once we have this we should start setting up layers now for this particular scene we need a layer for the geometry we need a layer for the skeleton which deforms the mesh as well as layers for our controls and other utility nodes so let's go ahead and go into the outliner and i'm going to select all of my geometry and then let's do create layer from selected and i'm going to double click on that and we'll call this layer geometry hit save so now i can template that if i need to so that way i don't accidentally select it now we can do the same for the lights and i'm just going to create a layer from selected and we'll double click on that and we'll just call it let's call it lights and i'm going to go ahead and move that down towards the bottom now i'm going to go ahead and move that towards the bottom and i will template that so that way i don't accidentally select the lights in the scene now in addition to this we are going to need layers for other parts of the scene so i'm going to create some empty layers that we will fill up later so i'm going to create an empty layer here double click on it and we're going to call this one skel now this is going to be for the skeleton of the character that deforms the geometry create another one double click on it and we will call this one util now that's for utility nodes or nodes that are not actual controls but secondary nodes that help to make the rig work and then finally another layer and this will be for control so ctrl s so say these are the actual controls that we will use to animate the character now once you have all of this in place you should be ready to start rigging the character and drawing the skeleton with our characters set up we can now start to draw the skeleton of the character now this will deform the geometry of the character so you need to pay attention to anatomy and draw your joints anatomically they need to line up with the hips and the knees and so on now we're going to work on the lower part of the character we're going to do the legs and the feet so let's go ahead and go into skeleton create joints and i just want to make sure i reset my joint tool and then i'm going to hop over to a side view and let's go ahead and turn on a wireframe so we can see what we're doing here and then i want to make sure that i have my joint tool selected so i'm doing this from the shelf you could certainly do it from the menu so the first joint is going to be the hip now you want to make sure that you place this anatomically where is the pelvis attached to the upper part of the leg and so it's going to be somewhere around the center of this circular mass here so i'm going to place it right around here and then we're going to go down to the knee now i don't want to draw this exactly straight down i do want to make that knee a little bit forward and that will help ik create the solution and then these uh edge loops here will also help to guide us so i want to place it right at the center of that edge loop and then uh the ankle i'm going to try and center that as well maybe a little bit back from the knee and then we need to do the ball of the foot and the toe now i want these to be pretty much on the ground here so i'm going to go as close to the floor as possible for this and then a toe hit enter that should be pretty close and then i need to do one more for the heel so i want to make sure i have my joint tool selected i'm going to click on the ankle and then add in another joint right here so now if i go into perspective here let's go ahead and turn on x-ray joints so i've got this joint chain but because we drew it in an orthographic view it does show up at the center but we can move that in fact i'm going to do this in my front view here so i can see this a little bit more clearly and again i want to turn on wireframe so i'm just going to move this a little bit to the left and this will become the left side of the character here so i want to make sure that this knee is centered that's going to be the most important part of this now the foot is a little bit to the right of this joint but that should be okay and then the hip is pretty much in place from where we want it so now that i have this i need to organize my scene so i'm going to go into my outliner and uh just expand all of this so i've got all of my joints but they need to be named so this is where we decide what our naming scheme is going to be in this case i'm going to use the prefix skel for skeleton and then the name of the joint in this case hip left and then i'm going to copy that prefix go down to the next joint which is the knee left paste it ankle left that's the ball of the foot and that's the toe and then that's the heel so now i've got my joint chain now this is just one side of this so we do need to do the opposite side as well so all we have to do for that is to just copy this whole joint chain and then just move it over to the opposite side so you can see that this one in translate x is 1.8999 okay and so all we have to do is flip that number around and it should go to the opposite side so i'm going to select all of these joints hit control d for duplicate and you'll see we get a whole second joint chain and what we want to do is put that on the negative side so instead of 1.8 negative 1.8 and there we go so now that's flipped over to the other side but the naming is off so i'm going to just select all of these and we're going to go modify search and replace names so i'm going to search for underscore l for left and replace it with underscore r for write hit apply let's change them all this one's got an extra little character there so there we go so now i have these joints for my legs now as you start to build this you do want to stay organized so i'm going to go over to my layers select scale right click and do add selected objects so now those joints are part of that layer and i'm just really just keeping things organized so now that you have this done you can move on to other parts of the character now let's continue working with our skeletal joints and we're going to work our way up the character and so we're going to draw the spine now again we're going to do this in a side view so i'm going to hop over to my side view and so what we want is we want basically a spine that follows the back of the character now anatomically the spine is the backbone so it is along the backside of that character and if you want anatomically correct deformations you are going to have to draw your spine towards the back so i'm going to follow these edge loops here as my guide so all i have to do is select the joint and then i'm going to draw one just below that belt line right there and then about every three edge loops or so so one there one there one there and maybe one more right around here is kind of kind of right around where the shoulders are so now that i've got these you can see that they're automatically centered to the character and so i don't really have to do much with these so all i have to do now is just go in and rename them in the outliner now this is joint one two three uh a simple renaming scheme would be just to search and replace names and search joint and replace it with scale underscore spine and hit replace so that way it keeps all of these numbers and goes scale spine one two three and four so now i have my spine in place now once we have this in place we also should add it to our layers here so add selected objects and there we go now when you create skeletal joints you do have to pay attention to deformation these are the joints that will deform the character now one of the things that is typically a problem is that this spine is along the back so it makes it really hard for these joints to control the front part of the character because they're centered also the sides of the character might not deform properly now we can help that by creating what i would call ribs in other words additional joints that will be used in the deformation so let me show you how to do this i'm going to go into my front view here and i'm just going to create one joint so i'm going to select my joint tool here and just create a lone joint and hit enter so i'm going to call that joint scale underscore rib left one so that's just a joint so i'm going to duplicate that again and move it to the other side and we're going to call that rib right 01. and then i'm going to duplicate that one more time ctrl d center it and then hop over to my side view and position that right at the belly button and this is going to be c01 for center so now i've got these three joints and if we look at them in the outliner you'll see that these are kind of just hanging out here uh they're not attached to anything now if i want i can middle click and drag them over spine one and i'm going to go into a perspective view so you can see what happens when i do that so middle click drag over spine one and it connects those so now when spine one rotates these rotate with it and they will drag the geometry closest to them with them as well and so this is a great way to create additional controls that will make your deformations and your skinning a lot easier so i'm going to go ahead and just duplicate these and notice how they duplicate with the proper number here o2 and then i'm just going to middle click and drag them above spine 2 and then select them all and move them vertically so now i've got ribs for the next level duplicate those again make sure i select them all for spine three and again move them up and let's do one more duplicate control d and go spine four select them all and move them up so what i've done here is essentially created some additional joints that can help to deform that character so i can move these out a little bit just to position them exactly the way that i want and now when my main skeleton deforms hopefully it will pull that geometry along a lot easier when i go to skin the character now let's move on to the character's arms now this particular character is symmetrical like most so we can actually use a feature called symmetry to help us draw the arms and make sure that they are perfectly symmetrical so we're going to do this in probably a front viewport so i'm going to hop over to a front viewport and we want to draw basically the clavicle the shoulder elbow and the wrist now before we do this we do need to set up our create joint tool so i'm going to go into skeleton create joint and select my tool settings and i've got this at default and so the one thing that i want to change here is symmetry if i turn on symmetry it will draw exactly opposite of the center line with another joint so in other words if i do x-axis and i start drawing notice how that creates those joints that are exactly opposite and that's a great way to draw my opposite side of my character so i'm going to go ahead and position this left arm and then i'm going to draw one here for the kind of for the clavicle another one almost directly above the armpit so right in between these two edge loops is probably a good place to do it and keep it fairly centered another one for the elbow and again we want to center that and then the wrist so now that i have that in place look what we got we've got that exact same thing on the opposite side now one of the nice things is that this is still symmetrical so it is connected so if we want to look at this uh in the outliner you'll see that this joint here is mirrored on the other side and each one of these joints on the other side has what's called a symmetry constraint and that's great when you're positioning the bones and aligning things exactly the way that you want but once you're done with it you will have to delete these and we'll go ahead and do that so let's go ahead and select this left arm chain and let's go into a top view and see what we have well it drew it at the origin which is pretty much what we expected so let's go ahead and move that back a little bit so that way it's centered here now my wrist is a little bit off and i want my elbow to be a little bit back because we are going to use some ik on this so i am going to reposition some of these so i'm going to go ahead and move that a little bit forward this one a little bit back and i just want a slight bend in this and that will make it a little bit easier to set up ik and this one should be centered to that wrist and then the other ones look pretty good now again remember we did a we did change the orientation of our joints so i'm going to go ahead and select those and go skeleton orient joints and i want to make sure that i orient those select the end joint skeleton orient joint and for the end effector i want to orient joint to world so go ahead and hit apply orient that and hopefully that should be the same on the opposite side so now we've got everything lined up so now that i have all of this i can go into my outliner and go into that second set of joints and delete those symmetry constraints so i'm just going to go ahead and control select those and delete them and once they're deleted that connection is no longer active okay so now that we've got these in place all we have to do is rename them and then move on to other parts of the rig with the arms in place we can now move on to the hands now the hands are kind of complex because the fingers have a lot of joints and so i'm going to show you a quick technique to make this a little bit simpler so as we've seen before we can draw with symmetry and we can do that with the hands as well but there's another feature we can use to help make sure that everything is aligned properly now typically if i were to say draw a skeleton for a hand i could uh go into skeleton create joints and let's just go ahead and reset our tool so at the default if i were to say draw this index finger you can see it well yeah it's aligned right there but if i hop out to say a perspective view well where is it well it true at the origin which is what it was supposed to do and so that's kind of annoying and then it also drew flat now not all of these fingers in this particular model have been drawn flat and so it's going to be a real chore to get these actually aligned exactly the way that we want but there is another feature that we can use to help us with this and so we can find it under create joints if we go into tool settings here let's go ahead and turn on symmetry so we can draw the opposite hand and then the feature that we're looking for is called projected centering now what this will do is draw the joint at the center of the geometry so if i'm drawing here we'll draw it along the center of the finger so let's go ahead and keep symmetry on and projected centering on so when i do that i'm going to go ahead and be a little more careful this time i'm going to draw my knuckle this is the first joint second joint and then one just outside of the end of the finger hit enter and there it is look at that that is so much easier and so much better so we also drew it with symmetry so this uh finger is pretty much identical so this is awesome so we can continue to do this for all of the fingers all i have to do is just draw all of these name everything and we should be good to go now the other problem here is with the thumb now the thumb is going to be a little bit different so let me show you how to draw the thumb so i'm going to go ahead and select my joint tool and again i already have projected centering on so until i turn it off it's always going to be on so for this thumb i want to draw my first joint somewhere around here draw another joint here and then that last joint right outside the edge now when i do that projected centering isn't exactly perfect but it's actually pretty close right now so if i were to look at this in object mode you want to make sure that you've got your joints aligned properly so in this case this joint is aligned so that that thumb will bend that way and so you want to make sure that this joint has that alignment now this last joint here is not aligned so again we can do an orient joint make sure we have orient to world and hit apply and we can do the same for that as well so now once i have my thumb and my index finger i can use the same process to do the other fingers as well once all of your joints are in place you will need to finalize your skeleton now i've gone ahead and added in a couple of extra joints here and these are in the head now we're going to save facial and head rigging for another course but in order to be able to skin this character properly i will need a very basic skeleton so i've created this joint chain here just for the neck and the head now once your skeleton is in place you want to make sure that you add all of those joints to your skeleton layer so if you turn that on or off all of those joints should go away now if we go into the outliner you'll see that we have all of these drawn as separate chains now because all these joints will do is to form geometry it is not absolutely imperative that they are in the same hierarchy it will depend on how you rig them as to whether or not you want them to be that way now i do want my hands and my wrists to be connected and so that's going to be fairly easy to do so i've got my index and all of my fingers here on my left hand so if i go into my arm skeleton here you see i have my wrist so all i have to do is middle click and drag those above the wrist and they're connected as a hand open up the right side select all of these so index through pinky and again middle click and drag to put those in place and as you can see it draws the connections there now the rest of these i may or may not want to uh connect in to the rest of the skeletons so i can leave that for later but one of the things i do want to do is group those skeletal joints so i'm going to select them all do edit group or control g double click on that group and just call it skeleton so now i've got the skeleton as a group everything is organized and i also have it as a layer so it's pretty organized and easy to control so now that i've got all of my skeletal joints in place i can start to build my rig with our skeleton in place we can now move on to actually rigging our character now when we rig we add controls to be able to move that skeleton around now i'm going to start with the legs and the feet and we're going to create an ik rig that will allow you to position the feet simply by moving them now in order to do that i will need some controls so i have uh some objects here in the scene and these are basically going to be the basis of my controls now i simply took a nurbs circle and i deformed it a bit uh to create these shapes and so this will be the main foot this will be kind of the toe control and this will be the heel lift control so with these three controls we should be able to position the foot pretty easily so the first thing you want to do is uh select these and let's go ahead and see what they look like in the outliner so like i said i created these from nurbs circles so let's go ahead and rename them now i'm going to use the prefix ctl for control and then underscore and the name of the object so this will be control foot left this will be control heel left and this will be control toe left now i want to position these uh under the foot and then align the pivots for this now when i created these i have not worked with the pivots at all so if i were to go into a move mode here make sure i'm on object you can see that the pivots are pretty much just centered to these objects so in this case i want this pivot to be kind of towards the back here i want it to align with this joint in fact i'm going to turn off the geometry here so i want this pivot to align with this and this one also i want to pivot around this so that way when the heel lifts it's all lifting around the ball of the foot so the first thing i want to do is just select everything and move it in so i'm going to move that in so that the foot control basically just touches the origin and then i need to move these pivot points so first thing i want to do is just go ahead and do snap to points and then hit the letter d to adjust that pivot so i'm going to go ahead and snap that pivot to that joint select this one and again snap that pivot to that joint let's go ahead and turn off snapping so now when this lifts up it's going to lift centered around that joint and the same for this one here now once we have these set up we should also zero out our translations so i'm going to do modify freeze transformations and that zeroes everything out for each one of these now i'm going to also need to create the right side so we can duplicate this and let's go ahead and scale it negative one in x to flip it around and then i'm going to position this one pretty much where the other one is positioned and then the toe i'm going to hold down the v to snap to points this one here snap to points again so again we've basically just mirrored this and again i need to get rid of that negative scale as well as the translation so i'm going to do modify freeze transformations so now i've got both of these all aligned and ready to connect into the rig now let's set up the joints so that they have inverse kinematics for the legs and the feet so again i'm going to turn off the geometry so we can just see the skeletons so what i want to do is create an inverse kinematics chain that allows me to adjust the leg as well as one for the foot and another one for the heel so all we have to do is go into skeleton create ik handle if we want we can make sure we reset that tool or we can go over to the rigging shelf and hit this button here so i'm going to create three ik chains so i'm going to select that hip joint on the left side and then the ankle and what that does is it creates what's called an ik handle and this ik handle allows me to manipulate that joint simply by positioning that handle now we want to create another ik handle for the toe so again i'm going to select my ik handle tool click on the ball of the foot and then the left toe so now this ik handle operates the toe and let's do one more for the heel so i'm going to go from the ankle to the heel and there we go so now that i have all of these in place i need to uh give it some descriptive names so i'm going to use ik handle as my prefix and then just type underscore and the name of the joint so in this case it will be ankle underscore left and this one the underscore toe left and this one will be heel left so now that all of these are in place we can connect them into the controls to be able to manipulate the leg and the foot with our ik handles in place we can now start to connect them into the foot controls so how is this going to work well let's take a look at our outliner so i've got a foot control a heel control and a toe control now how do i want to animate this well i would like to be able to move the foot control and have the heel and the toe go with it so in that case we need to create a hierarchy so i'm going to select the left heel and the left toe middle click and drag them over the foot so now when i select the foot they all select and i can move it so i'm going to actually do the same for the right side as well so let's go ahead and just do that right now now these ik handles operate different parts of the leg and the foot so the ankle controls everything the toe just controls the front of the foot and the heel controls the back so your first indication is to say let's just put all of these under the left foot control so if i middle click and drag under control left foot all of these are under there so now all of these controls are a child of this foot control so when i move it the whole foot moves very nicely but the problem is is that i'm not getting any rotation on the toe or the heel well we can fix some of that so i'm going to go ahead and select the toe and basically make that a child of the toe control so now i can rotate the toe control and the ik handle will go with it well we can do the same for the heel so i'm going to go ahead and put that under the heel control and so when i rotate that oh that doesn't work well the reason that doesn't work is because when this heel lifts up the ankle is also going to lift up right because that's all part of this structure and it's all going to pivot around this ball of the foot so i'm going to actually select that ankle control so ik handle ankle left middle click and drag it under the heel so now when i rotate that they both go and now i can tap my heel i can tap my toe and if we move the foot the character can go wherever he wants and if i rotate that as well it all stays into place so as you can see this is a very simple and straightforward way to set up feet and legs so go ahead and do ik handles and set up your hierarchy for the right side as well and we'll move on now that our feet are rigged we can move on to the rest of the character's legs and that means the hips and the knees we're going to start off by rigging the hips now before we do that i'm just going to go ahead and turn off my geometry so we can see our rig so i have my lower character here and i can move that around but what if i wanted the character to squat down or move from the hip down well i need a control here in order to do that now for this particular joint you'll see that it already has an orientation and so we created this with the default settings and that means that x is pointed down that joint so i want to create a control that's aligned with that joint so let's go ahead and create a simple circle as our control but i want it to be pointing down the x-axis well if i create it it's going to be created in world space and that means i need to create it pointed at the x-axis and the easiest way to do that is just create it in a side viewport so i'm going to hop over to my side viewport and as you can see it's we're pointing directly down x so if we draw the circle here it should be aligned so i'm going to go ahead and create a nurb circle just drag it on the grid and then i'm going to double click on my shape here and go down and let's go ahead and set the radius to 2.5 so if we go out to our perspective window you can see that the x-axis is pointed in the right direction but i need to align this with this particular joint and so we can do that very easily just with a constraint in this case a parent constraint so i'm going to constrain the circle to the joint so let's go ahead and select that joint first shift select the circle go into constrain parent and we want to make sure that maintain offset is clicked off and then click add and what that does is it constrains it to the joint snaps it exactly where we want and it aligns it with orientation so if we look at this in the outliner you'll see that under this nurbs circle we have that constraint well i can delete that and now i can rename this let's call this control hip left so that's my left hip control now at this point we've got a lot of numbers here to position this now eventually i will want to zero it out now in this case i'm going to put this as part of a hierarchy and when you do that you kind of need to zero it out at the end of the process so i'm gonna wait on zeroing things out until we're a little bit further down the process but i can still connect this in to my leg and so now all i need to do is constrain it the other way so in this case i'm going to select my control first then my joint and all i'm going to do is create a point constraint so if we go into here point constraint and in this case i do want maintain offset turned on and click add so now when i move this the leg moves with it so let's go ahead and do this one more time for the right leg and i'm just going to do it very very quickly so i'm going to create the control size it to 2.5 hop out into a perspective view select this right joint select my circle constrain parent with offset off go into the outliner delete that delete that constraint then select the controller and the joint and do a point constraint and now all i have to do is rename my control so control hip right so now i've got two controls here that will control my leg let's add one more control to the legs and that will be for knee direction now for this we're going to use what's called a pole vector constraint and that basically will just aim the knee at a target so in this case i've got these two objects in the scene that i've added and they're just curves and this one's called control knee left and right so we can do this by selecting the ik handle now i'm going to go ahead and turn off my geometry layer so we can see what we have now if i were to move this knee you'll see that the knee always is pointed in the same direction so we want to be able to change that if we want so we do this by selecting the ik handle so in this case under control foot left and then under the heel we want to select that ankle ik handle and that's the one that controls the leg and the knee so that's the object that i want to have constrained so in this case i'm going to select the target first control select ik handle ankle left constrain pole vector there really no options for this other than weight so we're going to go ahead and click add now notice how this little line comes up so now when i move this up select this knee control you can see how that moves so let's do the same for the right side so i'm going to select the control first then the constrained object in this case ik handle ankle right constrain pole vector so now these knees will always point at our controls we now have the lower part of our character rigged now one of the things i haven't been doing is keeping house in other words making sure that the rig is nice and tidy when you finally deliver the rig to an animator you want to make sure that everything is airtight and ready to go so let me show you some techniques for doing that now the first one is just plain organization so if i go into a windows outliner you'll see that i've got all of these nodes in place and ultimately my character is going to be part of one continuous rig so it's a good idea to have kind of a main control for your character so i'm just going to create a nurbs circle here fairly large somewhere around let's see uh let's create it at uh let's make it 10 units and then i'm just going to center it to zero now this is really important you want your main node to always be at zero and so we're going to call this control mean now we could also name it after our character there's a number of ways to do that now because this is zero we're not going to introduce any problems when we re-parent things so i'm going to select everything in the rig in other words all my controls middle click and drag and make that main control my parent of everything else and so now i've got kind of a main structure for that character now in addition to this i need to organize my layers i'm going to select all of these objects here in my outliner go over to my layers highlight the controls layer and then just add selected objects and so now all of my controls should be in that layer now another thing we can do is to start to restrict movement on the controllers so something like this controller for the leg i'll probably want to move and i may want to rotate it but i don't need to scale it so i don't want to give the animator any options that they don't absolutely need and so in this case i want to lock and hide these values i'm going to left click and drag and select scale x y and z as well as visibility and then i'm going to right click and do lock and hide selected so when i select this object these don't even show up and if i go to scale it it's completely grayed out so i can't do that and that just restricts the animator from that operation makes your rig that much more bulletproof now this toe and heel control can be a little bit more uh refined so let's go ahead and select the control toe left and what exactly are we going to do with that well the only thing i can think about doing that is tilt it up and down along the x-axis so in this case i want to restrict everything but that one control so i'm going to left-click and drag select that hold down control select the rest of them so everything but rotate x and again right click lock and hide so now if i try and rotate around any axis but x it's impossible and we can do the same for the heel now the heel is basically going to be the same we're going to rotate that around x so let's go ahead and select all these lock and hide everything but x so now this is all locked down so that i don't accidentally move this in a way that's not supposed to now another way to organize your rigs is to color code them and so this will enable the animator to tell left from right from center very easily now i'm going to go ahead and color code this with blue on the left and red on the right and we can change the color of our curves simply by going into the attribute editor going to the shape node and then under object display find drawing overrides and we can enable overrides now these are already blue but let's go ahead and change it to a different shade of blue so we can tell it apart in other words that kind of more of a lighter type of blue here and so again all i have to do is select each joint and give them the colors that they want now on this side i'm going to go ahead and just go to a red color and now when you look at the rig it's very easy to tell left from right so as you go through the rig you want to make sure that you color code your left right and center so go ahead and clean up the rest of your rig and we'll move on to the rest of the body now let's move on to rigging the body and by this i mean everything from the hips up through the spine to the shoulders now we're going to start with a couple of controls towards the hips and the base of the spine and i've already drawn these controls here and this one here is called control pelvis and that will control the orientation of the hips allow the character to rock his hips if we need to and then the other one is control body and that will be kind of our main central point where the spine and the hips connect together now i simply drew these by creating a nerve circle and reshaping it and by doing that i've aligned my axes so that basically they're aligned with the world but we want these aligned with the joints in the upper part of the character so if i were to select say this control here you'll see that the x-axis is pointed down we've got z left and right and y forward and back and so i want these to be aligned along that axis one way to do this is to rotate it exactly the way that we want and then freeze transformations and by that i mean i want this object to be facing towards the x-axis here with the z-axis to what would normally be the left right so in this case i'm going to rotate it this way so negative 90 along z and then rotate it this way which would be 90 along y and what this does is it you can see here here's my axes and so this is kind of aligned in that way and so if i do a modify freeze transformations that aligns the object to those axes so now what i can do is i can position this in the rig and have it aligned so i'm going to hide my geometry here and let's go ahead and move this now i'm going to hold down v to snap two points here and let's snap that to the base of the spine now as you can see this isn't quite rotated exactly the way that we want so i kind of need to rotate my way back out of this so i need to rotate it say negative 90 in z and 90 in x and then i'm going to move this down a little bit so right around there would be a good place in the in the character here and i'm actually going to template my character here so you can see how this is positioned with respect to my character so i'm actually going to move this a little bit forward so it's more centered to the actual hips on the character so the next one we need to connect is this one and again i want to align this to the x and y axis so i remember i did negative 90 in z and then 90 in y and that looks about right so again i want this to be aligned with these axes here now the local axes aren't aligned but as soon as you do modify freeze transformations everything snaps into place awesome and now let's go ahead and snap that so it's centered and then rotate that down negative 90 and then i think it's 90 and x right so now i've got this as kind of my main control and everything else underneath it now once i have this in place i do need to connect everything together and we'll do that next with our body and pelvis controls in place we can now connect everything together so let's zoom in here and i'm actually going to turn my geometry to template here so we can kind of see everything now let's take a look at the outliner so i've got this these two here are actually outside of the main hierarchy so i'm going to go ahead and left click and middle click and drag them above control mean and then i'm going to take the pelvis middle click and drag that above the body so now it's a child of that and then the hips left and right middle click and drag them below the pelvis so now we have our control structure so how this works is that the body control basically is for mean positioning of the body the pelvis control is a place where we can kind of just wiggle the hips so there are many times when you'll need to tilt the hips hips left or right or whatever and then these lower controls hips left and right those are more for real fine tuning and you can actually move those to kind of fine tune the positioning now this is actually all in place but nothing is zeroed out so in this case uh we've got a lot of uh random numbers here well they're not random but uh we have a lot of numbers here and so we need to zero these out now we're going to zero them out from the top down in other words i'm going to go to the top of the hierarchy which is the hips then do the pelvis then do the body so we do this by transferring all of these numbers into what we call our offset parent matrix and what that does is it essentially clears out the channel box so that we have zeros here and just those numbers in the channel box go into what's called the offset parent matrix which is this right here so basically these numbers i want to go from here to here now i could just literally cut and paste these numbers from here to here but there's an easier way by using the node editor so let's go into the node editor now i'm going to hit this button to clear it out and then just hit plus with my hips left selected and so now i've got my node here and i'm going to open that up and all we need to do is connect this matrix to the offset parent matrix and so this matrix is essentially your channel box so left click and drag connect it there select other offset parent matrix now when i do this it actually jumps that object all the way over here and that's because we have a double transform if you notice here we've got it in the translate our standard translate as well as the offset parent so the first thing we want to do is break that connection and then reselect that node go over to the channel box highlight all translate and rotate and zero those out so now those values that were previously in the channel box are in my offset parent matrix and i've got a clean channel here with which to animate so let's do that again on the hips so i'm going to clear this out hit plus open up that node matrix 2 offset parent matrix it jumps out in the middle of nowhere we delete the link highlight the node again zero out translate and rotate so now that's cleared out let's go ahead and do the pelvis clear my node editor load in pelvis open it up matrix 2 offset parent break the connection and then zero out the values so as you can see it's a very straightforward process once you get the hang of it so let's do one more uh again i've um loading control body selecting matrix connecting to offset parent notice how this kind of just goes totally haywire but we break that connection reselect that node and zero out rotation and translation so now i've got my rig zeroed out so in this case i've got now my body controls my pelvis controls as well as my hips now if i want i can go and start restricting things such as rotation so for example my pelvis control i only want that to be rotation so i'm going to go ahead and select translate and scale and lock and hide selected so as you work through your rigs you do want to remember to lock those values you don't want to translate so now we have our main body controls and we can move on to the spine now let's move on to rigging the spine for the spine we're going to have one control per joint and in this case we have four sets of joints in the spine and we're going to use this basic control and that's essentially looks like a guitar pick but again it's just a nerve circle that i deformed now the first thing we need to do is create multiple controls and align them with the skeleton so in this case i've already drawn this so that it's aligned with the x-axis so the x-axis is pointing up and down which is the same as the joints in the character now i'm going to align this with the joint using a parent constraint now we've done this before but let's go through the process again i'm going to select the joint in this case skeleton spine one select my control which is called control spine one and then do a constrain parent now i want to make sure that maintain offset is turned off and that will snap everything to the right place so go ahead and click add and now what this does is it snaps it to the right place and aligns it perfectly we can see now that the uh that the control is pretty much centered to that joint and it's oriented in the right direction now when this was created uh if we look in the outliner that spine one has a parent constraint on it so we're going to delete that parent constraint and that will leave it aligned but unattached so i'm going to copy this so i hit ctrl d and that will copy it to spine 2 control spine 2. so let's go ahead and select skeleton spine 2 and then select the control constrain parent so that's the second one delete that parent constraint duplicate two to make three select the skeleton joint number three select the control number three parent delete the constraint one more time duplicate the control select the joint select the control parent and then delete that constraint so now if i turn on my geometry here you'll see that we've got this pretty much aligned now this one is a little bit off but we can always adjust this just by moving the spine itself so if i right click go to hull select that hall i can basically just move it to center it and i can do that for this one as well so i'm going to go ahead and select hall select that and i'm literally just moving the curve itself so now my controls look pretty good let's do that one too and so i'm not moving the pivot i'm just moving the shape or the curve so now with all of these in place we can link them into the hierarchy and then we can start to connect everything so the first thing i want to do is these are actually going to be below this body joint right so when i move this around i want the spine to move with it so i'm going to go ahead and create a hierarchy so i'm going to middle click and drag spine four to three three to two two to one so now i've got basically a bottom to top hierarchy of this and then select the spine one and connect it into the body so now when i move that everything moves with it now once i have this in place i will need to attach everything to the skeleton and we'll do that next we now have our spine controls in place and all we have to do is zero those out and then connect them into the actual skeleton so we've got a couple of controls here so if i select these you'll see we have uh some numbers on those so they do have translation i'm gonna hide my geometry so we can see this a little bit better so we want to zero these out now we can do this using offset parent matrix and we've seen how to do that already in the node editor but i'm going to go ahead and show you how to do it in the attribute editor and it's just another way of doing this so this one is actually pretty simple so this will be easy so this has just one translate and one rotate value so i have control spine 4 selected so let's hop over to the attribute editor i'm going to select my main node here and you'll see that under transform attributes i have those two values here and here so i have one translate x one rotate z now all i have to do is just copy and paste these into my offset parent matrix so i'm going to go ahead and copy this and paste it so i've done x now when i do that i do have a double transform because i have this value here but all i have to do is zero that out and it snaps back into place and then again i can copy rotate z and paste it into rotate z in my offset matrix and go ahead and zero that out so now this is exactly the same way as if i had done it in the node editor and this works fine for this one because it only had a couple of values so let's do that one more time with uh spine3 which again only has two values let's do this in the attribute editor so translate x copy paste and then zero rotate z copy paste and then zero that out again the same effect so let's go back to the node editor which i find to be a little bit faster anyways so let's go into windows node editor and i'm going to uh clear out my node editor here clear the graph make sure i have my object selected and then hit the plus sign here and then i'm going to expand that node and remember what we did we took the matrix plugged it into its own offset parent matrix that makes everything jump but we break the connection re-select the node and then zero out the transforms and let's do that one more time for the spine one so i'm going to select that clear the graph reload it expand it select my matrix plug it into offset parent delete the connection select the node again and zero out all those transforms so now i have all of this pretty much ready to go and all i have to do now is connect the skeleton to the controls now we can do that using constraints now there's a couple of ways of doing this if i go to my rigging menu under constraints the two main ways are just to use a parent constraint which will control translation and rotation or if you want to do them separately you can do a point and an orient constraint so a point is basically translation orient is rotation and if you want you can add in scale so we're going to do a parent constraint so i'm going to select my control first my joint seconds so i'm selecting control spine 4 and skeleton spine 4. we're going to do parent constraint i want to make sure that maintain offset is on click add let's do the same for this one so select control then the joint parent constraint control then the joint parent constraint control then the joint parent so now that this is all in place i should be able to rotate these yep and if i select multiple ones i should be able to do this sort of rotation and we've got this all connected together so now we have our spine rigged up and ready to go now let's take a look at some ways to rig the shoulders now i'm going to show you a couple of different ways so here we have our shoulder and i've already kind of put it into place and typically you just want this to move up and down and then the shoulder goes with it so the character can shrug his shoulders now this will also be the base of the arm hierarchy now one of the ways to do this is to simply drag it into the outliner so if i if i go into my character here you'll see at the top of my spine i have spine 4 so i can just select this control shoulder left middle click and drag and now that's part of the spine and so if i were to uh say so set a key here rotate them set another key so if i were to animate that the shoulder would go with it now this is a perfectly good way to rig characters plenty of characters are rigged this way but one of the things i find is that this crate starts to create a very very deep hierarchy so right now i have the shoulder but i've had the shoulder and then the bicep and all the way out to the fingers you're gonna have a really deep hierarchy and that might not um be animator friendly so what we can do is we can find a way to rig in the shoulder and then the arm in a more flat style so i'm going to middle click and drag this under main so you know it would be great to have a way to rig this so that i can easily access the shoulder because that's a part of the character that we are going to work with a lot the shoulder and the arm so one way to do it is to simply use a constraint now if i constrain this shoulder directly to the skeleton i wouldn't be able to move it because it would uh tie up all of my translation channels but i can't put an intermediary into place so i'm going to select this nerve circle down here and let's go ahead and just move it up and snap it to say this joint here right towards the top so i can constrain this to that joint so i'm going to select this joint then select my nerve circle i'm going to go ahead and middle click and drag it in and then i'm going to select my joint and the circle and we can just do a parent constraint so make sure you have maintain offset on click add and so now this goes with that and if i select that shoulder middle click and drag i can now have that shoulder go with it and if i wanted to i could move the shoulder and it won't snap so that's pretty cool but this is actually still a little messy you know so i have this circle here that is kind of doing nothing so it's kind of just sitting there in the hierarchy and then i have this parent constraint which again is kind of just messing things up so i want this to be as clean as possible so i'm going to go ahead and drag that out and let's go ahead and delete this circle and again that that would have been a perfectly good way to rig it as well it's there's nothing wrong with that but i'm going to show you an even cleaner way of doing this so in this case we're going to use what's called a proximity constraint which constrains the object to a piece of geometry so i have to create some geometry so i'm going to go into poly modeling here and let's just create i can create anything really i'm going to create a polygon disk and let's go ahead and drag that up now this is geometry so you want to make sure that you set it so it doesn't render that's one of the key things of this but i'm going to go ahead and just snap it to the top of this joint again and let's go ahead and scale that down just a bit and then i'm just going to do a freeze transformations now in this case i'm actually going to put it in the hierarchy of the skeleton so i'm going to open up my skeleton and let's open up our spine and that's called joint five so i'm going to go ahead and select my my disk that'll click and drag and so now that disk is moving with everything else and so all i have to do is select that disk shift select my shoulder control and then do constrain proximity pin and if we want we can look at the options here but basically you just want to leave these at default and then click add now what this does is it actually pins this to the geometry it creates what's called a pin input which is this piece of geometry and then now that moves and so the nice thing is it doesn't tie up this channel so if i were to move this spline it's not going to snap so i can actually animate that and it's a very very clean rig so this is a really cool way to rig and so if i select that little piece of geometry i just want to go into the attribute editor and under render stats i want to make sure that i turn off basically everything i don't want it to be visible in anything and i could also if i wanted to i could also turn off visibility uh just to make sure that it does not render so those are three ways to rig a shoulder and the key takeaway for this is that sometimes you want your controls to be a little bit flatter if your hierarchies get too deep sometimes it's really hard to animate and navigate the rig in this chapter we're going to take a look at how to set up an fkik switch for the character's arm now before we actually dig into this i want to show you kind of an exploded view of how a typical fkik setup works and how that is rigged now in the middle here i have my actual skeleton this will be what is deforming the geometry now that skeleton is controlled by two additional sets of joints we have an fk joint up here and an ik joint down here so when we switch between fk and ik we're actually switching between two sets of joints that are controlling this so in this case i have this ik handle for the ik joint and on this i've created an attribute called fkik when it's at 0 it's completely fk forward kinematics when it's ik it's inverse and in the middle it's halfway between so i'm going to type in 0.5 here and i'll show you how this basically works so what we've done is we've constrained this skeletal joint to both of these and so if we look in the outliner you'll see i have two constraints here one for this joint and this joint and so that is basically split between these two and that balance of that split is controlled here so when it's at zero it's completely fk and when it's at one it's completely ik so if i want to i can rotate my fk but that won't take effect until i select my ik handle and switch it over so as you can see this is uh not a trivial setup but it's actually fairly straightforward so what we have to do is create two chains one for fk and ik and then connect all of that together to our main skeleton now let's actually create our fk ik rig we're going to start off by creating some joints but before we get started i just want to let you know that i've already created some control hierarchy here so i've created an fk series of controls here and then i've created ik as well so i've created the hand and a shoulder control and in the outliner i've placed them under the main uh control here so here i have hand and then under the shoulder i've got my two biceps my elbows for fk and so on so i've already linked them in and zeroed them out now we do this basically the same way we've been doing with all of our controls so if you can look at how we've done the spine that would be a good guide for how to place these controls i'm going to go ahead and hide the geometry and also hide the controls so what i want to do is just work with these skeletal joints here so i'm going to go into my outliner and under my skeleton hierarchy i have skeleton shoulder left elbow and wrist so i want to make sure i select those and then i'm going to hit ctrl d to duplicate them now when you do that it actually duplicates the fingers as well so i'm going to go ahead and select all those fingers and delete them and then i'm going to select that shoulder copy middle click and drag outside the hierarchy so now i've got this control here i'm going to go ahead and duplicate that one more time so now we should have two control rigs here so i'm going to actually move these out so i'm going to move this one this way and move this one the other way so this one on the top side let's go ahead and rename that so instead of shoulder left one let's call it fk left and then elbow fk and wrist fk and the other one is obviously going to be called ik so shoulder ik left elbow ik left wrist ik left so now i have these three chains now the ik chain does need an ik handle on so i'm going to go skeleton create ik handle click at the beginning at the shoulder and then at the wrist so now i've got an ik handle as well so i'm going to call this ik handle arm left and i'm going to go ahead and move that up just a little bit there so now i should have three objects here i have this skeletal hierarchy for fk another one for ik and then the ik handle with our control skeletons in place we can now rig them to the controls themselves so let's zoom in here and i'm going to turn on my controls layer and that will reveal all the controls that we have now there's two sets of controls there's this one here which is my fk control and that will control my fk joints and then i have this control and this control which will control ik so this one's kind of at the shoulder and that one's at the hand so in order to make this a little bit more visible i'm going to actually move these controls out so that they snap to the joints we're connecting them to so i'm going to go ahead and go into move mode i'm selecting my bicep fk left which is the fk control so i'm going to hold down the letter v and snap it snap it to the top of that chain and everything else should snap into place and then we'll do the same for this control snap that snap this to that joint and then select this one again hold down the letter v snap it to that joint so each one of these is going to be constrained to its control so if i wanted to animate fk i'm going to be moving these controls and so we can do the fk side with either parent or point and orient constraints and this one we're going to need a point constraint here at the shoulder and then i also need to connect orientation here so i'm just going to use point and orient for both of these now you can use parent for the fk so i'm going to go ahead and select my control select my joints and then under constrain i want to make sure i do point maintain offset and then orient and you want to make sure that maintain offset is on and then again select my control my joint point orient control joint point orient now the next one this shoulder i actually just want to constrain positions so i'm going to select the control then the joint and this time i'm just going to select point now for the ik handle i actually want this ik handle to be a child of my control so that means we're going into the outliner i'm going to select this control which is my hand ik and then i have my ik handle for my arm middle click and drag that so that it is a child of this so now if i move this it should move everything great now the one thing that we don't have is we don't have the orientation of that wrist joint so if i were to say rotate my hand that's not going to affect that wrist so i'm going to select my ik hand control then select this end joint here go constrain orient so now when i rotate this it should rotate the wrist so now that we have all of these in place we can actually connect our control skeletons to the actual skeleton in our character with our control skeletons in place we can now rig them to the controls that we created so i'm going to go ahead and turn on this controls layer and so we have two sets of controls we have this one for fk then i have this control and this control for ik now these are zeroed out and that's great but i'm actually going to move them over the corresponding joints to create the constraints and then we can move all that back so i'm just going to go ahead and select my bicep fk left and then just hold down the v key and snap that over to my fk chain now my hand again i'm going to hold down v to snap i'm going to snap that right here to where that ik handle is and then this little one here is my bicep ik control and so let's go ahead and snap that so now with these snapped we can constrain them so i'm going to go ahead and constrain these joints to the controls so i need to select the control first and the joint second the joint is being constrained and then we can do a point constraint make sure we have maintain offset and then an orient constraint and again maintain offset same for this point orient and then point and orient so now this chain should move around with the other joint and the nice thing is is that when i zero out this it snaps right back to where i want but i'm going to leave that outside for just a little bit so we can kind of see how this rig is being built now we can do the same for this so i'm going to go ahead and select the ik control then the ik joint the top joint and hit point and orient constraint and then with this hand we're not going to do a constraint we're actually just going to parent the ik handle so let's go into our outliner find that ik handle middle click and drag that over the hand so now when i move the hand that joint moves and then i can also manipulate the shoulder if i need to so it's basically the same way that we rigged the hips and the feet uh earlier on in the course so now with these in place we can now start to connect these joints to our skeleton and begin our fkik switch we're now almost ready to wire up our skeleton to our fk and ik controls but before we do that let's go ahead and create a floating control that will make it a lot easier to switch between fk and ik now in the example i showed you at the beginning of this chapter i just used an attribute at the end of the ik chain but it's a lot of times it's easier for the animator to have something like this so a control that goes left and right that can switch between fk and ik so as you can see i've got these objects in the scene here and if we go into the outliner you'll see we've got four objects uh we've got a box called fkik left we've got a label for fk and ik and then we have the actual control itself now when we create controls like this you want this control to be attached to something because you need to be able to zero it out right now it's kind of in a weird place and so what i'm going to do is i'm going to actually select this and the labels and middle click and drag them into this control here and now i'm going to move this this arrow over to the left and we're just going to do a modify freeze transformations and so now we have a zero point and so i can go between zero and one and those are the numbers i need to be able to switch from fk to ik now with this control selected i also don't want it to go anything higher than one or lower than 0 and so we can go into our attribute editor select the main node here and then scroll down to limit information and under translate you're going to see a minimum and a maximum and we want them checked and so the minimum for this is going to be 0 the max is going to be 1. and so now i can't move that control anything further than zero or one but i still can move it up and down and forward and back and so we need to basically just select all of these in the channel box right click lock and hide and so now this can only move left and right and now i can use this as the basis for my switch between ik and fk with my fk fkik control in place we can now wire the whole rig up now we've already set up our constraints on this joint here so if i go into windows outliner select my skeleton shoulder left you'll see that each one of these has a constraint so we have a constraint for the shoulder the elbow and the wrist so each one of these has two inputs so we have a fk input and an ik input so the balance of those two will determine how far in between those two this particular joint will bend so what we need to do is connect all of these up with this control so i'm going to go ahead and select this control it's called control fk ik left and all the constraints and then we're going to go ahead and open up our node editor now i'm going to go ahead and clear out my node editor and just load what we have selected here so i should get four nodes here uh fk ik as well as the constraints now you may get some shape nodes as well depending upon how you have your node editor set up so let's go ahead and open this up so this is our fk ik control so in other words that's this and so this is going to move along x from 0 to 1. now remember these constraints also go from 0 to 1. so i need to determine which side of this is going from 0 to 1. so i'm going to make ik 1 and so when this control is on the ik side it's at 1 and so these constraints will be tilted towards ik when the control is at zero it's fk so from zero to one is pretty easy all i have to do is plug translate x into that constraint but i need to flip it around as well i need to go from one to zero in addition to the zero to one and so we can accomplish that with a really cool node called reverse so i'm gonna hit tab type in the word reverse and select that node now this node is basically built for this exact purpose so it's got three inputs here and three outputs and what it's going to do is it's going to expect a 0 to 1 input and it's going to output 1 to 0. and so it's basically just going to flip that control around so i'm going to go ahead and plug translate x into input x and so this will be my opposite this will be my fk so let's go ahead and start with the original here so i'm going to connect translate x into my first constraint and you can see each one of these is labeled so i want to select the ik one which is the second one in the list do the same for the next constraint ik and ik okay so that setup ik and so this one here we need the output here to go to fk and so now that should work so let's go ahead and select uh say the hand move that ik handle over and now when that's at one it's ik when it's zero it's fk there we go cool okay so i'm going to undo my way out of that and let's zero out our rig as well so i'm going to go ahead and select this control here my arm bicep fk and i'm just going to zero out that translate z select this zero out translate z select the hand and again zero out all those controls so now i've got my controls in place and my fk ik is rigged so we have this pretty much in place but there's a few more things we can do to fine tune this control we now have our fk and ik rig set up but we can do a couple more things just to make it user friendly one of the things that we're not seeing here is we're not seeing the actual switch if we're totally in fk mode we don't want to see the ik controls and vice versa so i'm going to show you how to quickly hide and show the controls depending upon how the switch is set so i'm going to go into my node editor and i already have my nodes set up here now if the if you don't have this in your window go ahead and just select your constraints and your control and load it up and if you don't quite get this reverse you can play with uh this traverse button here and that should bring it up now what we want to do is we want to load a couple more nodes into the node editor so i'm going to go into my outliner and let's start with the labels fk and ik so those are located down here and so i've got this label here and this label here so i'm going to go ahead and select those and let's add them in and here we have them and if we open them up you'll see that they're just basic nodes and so all i need to do is be able to control the visibility of this and i already have something here that goes from zero to one and one to zero so when this is ik it's coming directly off a translate so i'm going to so i'm going to open up translate here select x so when x goes from 0 to 1 ik turns on so i'm going to connect that into visibility and then the output of the reverse should go to the fk and you can see this is already happening here so now when i go fk ik fk ik so each one of those is now taking control and it's turning on and off well we can do the same for all of these control curves as well so i'm going to select my fk curves here go back into my node editor get a little messy here so let's go ahead and reduce these make them smaller i'm going to go ahead and select these again and load them into the node editor and again exactly the same thing so i'm going to expand these and so each one of these these are the fk so that comes off the reverse visibility visibility visibility and then minimize those so now those go away when it goes to fk and let's do the same for ik so again select that one shift select that one go into the node editor load those up select them expand them and again i'm on a small screen here so it's kind of hard to see but um so these are ik and so that would be directly off of translate x so again plug that into visibility and plug that into visibility and then just shrink them down so now we've got fk and ik fk ik so as we switch the controls will automatically hide and show depending upon what mode you're in now this control here the fk ik control we can place that pretty much anywhere we want in our hierarchy typically i place it probably under the left shoulder here it's a good place to place it so that way as the character turns this kind of moves along with it so hopefully this gives you some good insight in how to create fk and ik and if you want to practice you can totally do the right side of the character now let's move on to rigging hands there are a number of different ways that you can rig hands and i'm going to show you just one method and hopefully this will give you some ideas that you can use in your own rigs now for this rig we're going to keep it fairly simple but i've got two sets of controls here so i've got these controls which i will use to directly manipulate each individual finger now right now i only have the index finger and then in addition to this i'm going to have this master control which will allow me to curl all of the fingers as well as spread them so when i have multiple controls like this i will need to have multiple nodes onto which to add those rotations so what i'm going to do is take these nodes here and i'm going to zero them out and place them at the origin so let me go ahead and turn off the geometry and the skeleton so you can see this a little bit better so i'm going to go ahead and select this first one which is control index 1 l and i'm just going to zero out the translations and notice how it snaps to the origin which is great and let's do that for the next one and the next one so all three of these are now at the origin and the reason i place them at the origin is so i can group them and have a group that is at zero so in other words i've kind of zeroed them out and then when i select one of these i'm going to group it so i'm going to group this and now that group's at zero this is also at zero so we've kind of got everything already kind of organized now i'm going to rename this group we're going to call it offset let's say index one underscore l okay and so now i've got my control but it's underneath an offset node so let's do that again for index 2 group it rename the group offset index 2 l for left select this one and group it again so now i have these three and they're still not parented so let's go ahead and actually i'm going to go ahead and move these apart a little bit so i can kind of see them so i'm going to take two and move that now i'm moving the offset not the object we want to keep those objects at zero so i'm going to just go ahead and build a little hierarchy here and then i'm going to move this up towards the hand and let's go ahead and turn on the skeleton so we can see that and actually i'm going to go ahead and just snap that to the hand now just like with anything else we do want to orient these to the joints so i'm not going to orient the controls i'm going to orient the offsets so let's go ahead and select each offset and i'm just going to move these into place so i'm going to snap each offset to its corresponding joint something like that but i still need to orient it so i'm going to use parent constraints to uh create that offset so i'm going to select the joint control select the offset in the outliner if i were to click on this object here i would click on the actual curve but we want to select the offset and then constrain parent and make sure maintain offset is off and go ahead and hit add and then just like before we delete that parent constraint then we move on to the next one so i'm going to select this joint control select offset index two constrain parent delete that constraint and then one more select this joint select the offset three parent and delete that offset so now all of these are aligned so if i were to uh look at the x-axis it's pointed straight down the joints and we should have everything aligned so that we can rotate them now these controls were zeroed out when i group them so that means that they are also aligned and so sending them back to the origin was just an easy way to get things aligned quickly and now that these are aligned we can connect them into our hand skeleton we now have our fingers in place and we can now connect it into the rig so let's take a look at where we're at here if i go into the outliner you'll see i've got my offset and then a control and then the child of that control is another offset then another control offset control so make sure that your hierarchy is set up this way and then if we go to this initial offset you'll see that well we've got a lot of garbage numbers in here and we can just go ahead and place those in the offset parent matrix like we've done before so let's go ahead and do that in the node editor so i'm going to go into my node editor and let's go ahead and clear that out and load up the offset node so offset index l and then i can just click here and remember we're connecting matrix into offset parent matrix and then we delete the connection select the node zero out the transforms okay let's do that again let's select offset two clear out our note editor load it up matrix connects to offset parent now the values are transferred delete it select and you can see here it's a little bit off but when i zero it out it snaps right back and so let's do the last one and again i have to select these in the outliner if i were to select here i'd select the control not the offset so we want to make sure we select the offset and then load that up plug the matrix into the offset parent matrix break the connection and zero out the node okay so everything should be zero so that's zero the controls are also zero so we've got lots and lots of nice zeros here so what we're going to do is that the controls are going to directly manipulate the joints and then the offsets are going to be controlled by the finger manipulator okay so let's go ahead and select one of these controls and so we're going to basically just use a parent constraint to manipulate the joints so if i go into constrain parent i want to make sure maintain offset is on click add select this control this joint parent this control this joint parent so now i should be able to rotate these so with these in place i now have basically a rig that manipulates the fingers but we also have these offsets and one of the nice things about these offsets is that i can also manipulate the offsets as well and i'm going to manipulate those in the next video i now have my main finger controls in place but we're going to create some additional controls as well so let's take a look at where we're at now in addition to the index finger i went ahead and did all of the other fingers and that was a little bit of a chore but now that it's done we can start to work on this master fingers control and we're going to use this to both curl and spread the fingers now the first thing we want to do is make sure that this is connected into the rig now i've already set the pivot to be the same as the wrist so the pivot's way over here and i've snapped it to the wrist and so what we're going to do is we're going to constrain this to the wrist so when the wrist moves around this moves around and the finger controls move around so i'm going to uh select the wrist in other words the skeletal wrist not the ik or the fk but just the main skeleton and then select the control fingers left and then for constraints we're going to do a point and an orient and we want to make sure that maintain offset is on so now when this rotates everything moves with it okay so now that we've got that in place uh we need to add in some attributes to control the bend and spread of the fingers and we can do that in the channel box we go edit add attribute and so this add attribute allows us to type in a name so let's go ahead and do fingers curl underscore left what type of data is that it's a float it's basically just a number and then the minimum and the maximum well i i honestly don't know what the minimum and maximum will be so i'm just going to give it two numbers that are pretty far apart and then we can fine-tune those later so let's just go ahead and put in negative 45 for minimum positive 45 for maximum click ok and now i get that attribute let's add one more attribute and this time we're going to call it fingers spread left and minimum and maximum let's do negative 10 to positive 10. so i'm thinking 10 degrees uh let's go 15 actually negative 15 to positive 15 and the default is going to be zero okay so negative 15 to positive 15 0 and i know i'm going to change this later but we'll go ahead and tweak that when we get to it so so now i have these two values but i am never going to move this i'm never going to rotate it i'm never going to scale it so let's go ahead and select all of these from translate all the way to visibility right click hide selected so now when you select this all you get are those finger curl and spread values and that's all you can do so now that this is in place we have to wire it into our rig now let's go ahead and connect up the attributes that we created to our fingers to make them curl so again we've got this control here and i've got a fingers curl attribute that i can animate so let's uh go into our outliner so i've got these offsets and those are what we're going to use to curl those fingers so let's start with the index finger because we can see it easiest i'm going to shift select the offsets and then the finger control and let's go into the node editor so i'm going to go ahead and clear it out and hit plus and so what i've got is i've got this control fingers and then each one of these offsets so what i want to do is if i select control fingers you'll see in the channel box i have that finger curl attribute and if i expand this you'll see that way down here i've got that finger curl and finger spread so i want to take this and plug it into an attribute in that offset and what is that attribute well if i select one of these offsets and look at the axes here i'm just hitting w i'm looking at my rotate you can see that when i rotate around z or z that's what i want so i want to connect finger curl to rotate z so all i have to do is select this connect it in rotate z now notice what it does it creates this unit conversion and what we have here is we've got this number coming out here but it's not really a rotational value so maya is kind enough to stick that in but it kind of resets everything but now that i have this i can take that output and plug it into the other ones i don't need multiple unit conversions so let's go ahead and plug all of those in so now this should work so when i've got this i take my finger curl if i go positive it goes backwards if i go negative it goes forward so 45 might not be enough 45 this way is way too much so let's go ahead and adjust that so let's go edit edit attribute i'm going to select finger curl so the minimum let's go ahead and make that say let's say negative 75 and for the maximum that's actually going to be pretty low let's make that uh 20 which might even be too much so now let's try that so oh 20 is way too much so let's say right about here basically five and then yeah that's great so let's go ahead one more time edit attribute finger curl so let's make the maximum five and instead of 75 let's make it negative 70. so that should work so i've got a curl but in addition to that on top of that i can also fine-tune and pose the fingers so now i can select this and if i zero that out it goes back so let's go ahead and do this one more time for uh the middle fingers and then i'll let you go ahead and do the other ones so i'm going to go into my outliner select these nodes here my offsets for my middle finger plus the control fingers node editor let's go ahead and add in the nodes and actually i'm just adding in those additional nodes so i can just keep going with this so let's go ahead and take that output of the unit conversion put it into rotate z of this one rotate z and rotate z so now curl is doing both and so now you can kind of see how this works so if i want to i can select that and drag it to fine-tune the pose so i'm going to leave the other ones for you to do and as you can see it's a very straightforward process now let's set up the controls for finger spread now i've already finished off my finger curl so you can see i have that in place so let's go ahead and do the spread of the fingers so let's go into our outliner now if i go into this offset index you can see when i rotate this along y that's what spreads my fingers so i want to go all the way out to say maybe negative 30 and on this side maybe about 5. and so this is going from 5 to negative 30. on the pinky side it's the opposite so it's going to go from negative 5 to positive 30. and so to make this control a little bit more rational i'm actually going to go from positive 30 to negative 5. so let's go ahead and edit our attribute of that so i'm going to select my finger control highlight that attribute finger spread l edit attribute selected so instead of negative 15 we're going to go negative 5 to positive 30 hit close and let's start off with the pinky but i'm actually going to select all of these and then the fingers and let's go into our node editor so i'm going to clear out my node editor and then load these back up so i've got um my pinky is down here and so finger spread all i need to do is click and drag that into rotate but i can't say rotate because i already have something else plugged into rotate so i'm going to drag that into rotate y and notice how it brings in this unit conversion and so that extra node is needed to make that work now when i've got this uh now if i do my finger speed you'll see my pinky works that's awesome but we need to do the index finger now the index finger is going to be a little bit different right because it's going to be the exact opposite we need to multiply this value by negative 1. so i'm going to hit tab and type in the word multiply and we can see we've got this multiply double linear so i'm going to go ahead and plug finger spread into that select input 1 and if i double click on this you'll see in the attribute editor that that input is taken up and so we're going to multiply this by negative 1. so i'm going to type negative 1 into input 2 and then we're going to again plug that into rotate y and i will get another unit conversion and there we go and those unit conversions are a little tricky they do tend to mess up your layout okay so that's great so now what do we have well we've got finger spread yeah that's pretty good so the ones in the middle we just need to multiply by half so let's go ahead and do that as well so i'm going to go into my node editor and again we're going to add in a multiply double linear in fact i'm going to have two of these so i'm going to select that one ctrl c ctrl v to paste it and so let's go ahead and plug in finger spread into the first one of these input 1 double click on it so this is going to be for the ring finger so it goes index mid ring so mid middle finger is going to go negative but it's going to go negative 0.5 so it's going to go half of that so i'm going to double click on that so go negative 0.5 and then plug that in to rotate y as in the unit conversion let's minimize that and then let's do the last one so we've got uh again finger spread going into multiply double linear input one and the last one was negative 0.5 this is 0.5 and that is for our ring finger so again rotate y plug it in we get our unit conversion minimize and that should work so now fingers spread there we go so the middle fingers are spreading at half the rate of the outer fingers and everything looks pretty good so now we've got our hands rigged and we can obviously do the exact same process on the other side when your rig is done you can now skin the character to the rig now before we actually do that we want to go through and clean up the rig make sure everything is in its proper place before we apply the skin modifier so if we go into the outliner you'll see i've organized this character in a couple of different groups i have this control main and all the controls on the character are also added to this layer so if i toggle controls on or off they go with it now i have another layer called a utility layer and a corresponding group in the outliner and these are basically the things that aren't skeletal joints and they're not controlled so it's all the other little helper objects that are used in the rig so for example the fk and ik joint chains and then the proximity pins as well now we have a separate group for the geometry and in this group i've subgrouped the eyes and brows because we're really not going to be working with those when we skin the character those are actually going to be attached to the facial rig which we're not going to be doing in this course so i'm just going to keep those a little bit separately and then finally the skeleton and this is all the skeletal joints in the character if i turn off the geometry you can see that that's what the skeleton is now once you have things organized you will need to also go through and make sure that your skeleton is properly placed so for this i like to use x-ray joints and i just go through and i make sure that the fingers are all aligned properly and basically everything is in the right place now when you rig a character there's a great chance that you may nudge something accidentally and all sudden your skeleton does not line up with your character so go through the entire rig make sure all of that is in place as well so go ahead and organize your rig and make sure that the skeleton still fits the character and once you do that you can begin skinning it's now time to attach the geometry of the character to your rig using skinning now skinning works on the skeletal joints so if we go into our outliner you'll see under skeleton these are all the joints that will be used for skinning and we will be skinning geometry now the geometry comes in a couple of pieces for this character we have the main body we have the head the hair and then the eyes and brows now now i'm not going to skin or rig the eyes and brows for this particular character we're doing that in another course so i'm just going to go ahead and select those and hit ctrl h to hide them so this is everything that needs to be skinned so the skinning process is pretty simple you select the joints that you want to skin then the geometry and then you do it bind skin so in this case let's start with this body so i'm going to start by selecting everything but the head and neck so i have this skeleton neck base that is not going to touch my geometry for my body so let's go ahead and select everything but that and then shift select the body the body is selective last so it should highlight in green and then do skin bind skin now let's take a look at these options before we do this i'm just going to use the defaults which are these but let's explain some of these so the first one is bind to joint hierarchy that means i can select the base of the spine and it will walk its way up and select every spine joint if i wanted to i could do selected joints but then it won't get the high keys i literally need to select every single joint and that can be great if you're fine-tuning but for this case joint hierarchy works and then we're going to bind the vertex to the closest joint we could do other options such as closest in hierarchy and then skinning we're going to stick with classic linear now if you go down here to max influences that can be shifted if you have a very simple character you might want to shift it down to say three maybe four and that just depends on how many bones per vertex are going to be skinned so this particular character i've got a lot of bones around the torso so i'm not sure if i knock it down to three or four if it's going to get every single one of them so for example here you want to share influences with this one this one and that one and that's already four joints so i'm going to keep this at five influences and so basically i've got it at the default so let's go ahead and bind skin and there we go now let's go ahead and select the skeleton neck base shift select the head do another bind skin select the hair fine skin so now i should have a character whose skin is bound so let's go ahead and move them around yeah it looks pretty good i've got some utility nodes showing up there so i'm just going to go ahead and turn off visibility for the utility nodes and i'm also going to turn off visibility for the skeleton so we can see the deformation a little bit better now once you have your skin bound to your character you will need to test it out and do some fine tuning so i find the easiest way to do that is to do a simple animation where your character kind of runs through some typical joint movements and then use that as kind of the guide for tweaking so i'm going to go let's say to frame 10 and let's select control body let's go ahead and set some keys for it that's the hotkey s so we can go uh key set key i'm going to move forward in my timeline to 20 drop him down set some more keys move him back zero these out and then set some more keys so now he's squatted down let's go ahead and select uh the left foot again set some keys here i'm just doing every 10 frames so let's go ahead and move that up and out set some keys there and then again zero this out so now we've got that let's go ahead and do the arm so i'm gonna select that uh bicep control set some keys let's say rotate the arm down set some more keys make sure that's at zero go ahead and set those keys and then zero everything out and set keys so now i've got his arm and let's go ahead and do one more for the fingers because that's a real tricky area so i'm going to set some keys for curl and spread let's go ahead and start with spread that's the big test and actually his fingers are spreading pretty nicely and let's go ahead and curl the fingers unspread them and set keys for that and then zero that out so now i've got this basic animation so now my character is scanned and i've got this test animation so with this test animation in place we can now start to tweak our skinning now let's refine our skin weights we're going to start off with paint weights and that's kind of a broad way to adjust weights and typically what we do is we start with uh big areas of the character and get that skinning and then we go down to the individual vertex so we're going to start broad with paint weights so i've added a little bit of animation to this character i've done some uh stuff on the spine here so when i've rotate my spine around frame 129 130 you can see i'm getting kind of this stair step effect in the waiting and so we can fix a lot of that with paint weights so i'm going to select the geometry of my character go into my rigging menu set and under skin paint weights and then open up the tool options so this gives me a list of all the joints in the character and then i need to understand what joints are affecting what weights so if i go down to spine here i've got rib left right and center but this is rib left o3 but we can also do o2 and you can see that you kind of want those to overlap a little bit more so this is a brush-based interface that will work with tablets and all of that so it's very similar to all the other tools that use the brush interface so if you hold down the letter b that's resizes your brush we can change the opacity of that brush and we can change the value being painted so i'm going to put this value say it around point three or so keep the opacity to around 0.5 and then let's go ahead and start painting so what i do is i select a joint in this case left o2 and that's the influence for that joint so i'm going to adjust the size of my brush by holding down b and then i'm just going to paint kind of around the edges here and we're just going to add a little bit more influence to this joint and then i'm going to go say up to rib left o3 and again do the same so what i'm trying to do is just kind of smooth this out now if i want to i can also do a smoothing operation which might be better so this is very similar to uh say sculpting if you've ever done sculpting in my of similar interface as well we can smooth things so i can say go up to my uh rib left o4 what i'm doing here is i'm just tweaking the weighting so instead of smooth i'm going to go ahead and add and so you can see that as i add in weights it starts to move a little bit more towards that so we can drop the value down just a little bit more and so what i'm trying to do here is just get a nice smooth deformation so i'm just working my way through each of these joints and making sure this is smooth and so what i need to do is basically work my way all the way around the character particularly in this torso and so now we can see how the torso is moving and you can see it's a little bit smoother so paint weights is a great way to work with large areas of the character and you're going to go through your character make sure all your weights are balanced and your character deforms smoothly painting skin weights can solve a lot of problems but not all of them so there are times when you'll need to go down to the individual vertex level to fine-tune your skinning and we're going to do that here on the character's feet so if you can see when right around here around frame 30 or 40 you can see that these vertices here are stretching and that's because the bones in this foot are affecting the vertices in that foot so we can do this on a vertex by vertex level so i want to select the geometry right click go into vertex mode let's go ahead and select some of these vertices and we can go into a window called the component editor so if i go general editors component editor you'll see that it has a number of tabs so springs particles and the one we're looking for is smooth skins and this basically tells you which joint affects which vertex so if i select one vertex you can see that this is connected to the ankle left and right the ball of the foot left and right as well as the toe left and right so what we want to do is basically just get rid of all the right influences so skeleton ankle make that zero skeleton ball of foot make that zero so now this particular vertex is only affected by the left side so we can do that for a bunch of vertices at a time so i'm going to go ahead and select some vertices here and then just use my greater than sign to basically go out to the entire foot and you'll see we've got a lot of vertices and a lot of bones of affecting it so all we have to do is basically just go through all of the right side and zero it out so i'm going to go skeleton ankle right select the top one go all the way to the bottom shift select the bottom one that selects everything in the column and then just touch zero enter and you'll see that that kind of already has had a pretty good effect so let's go ahead to the ball of the foot again i'm shift selecting all of these and zeroing them out the heel is another one the knee i'm surprised that the knee is affecting this one but there we go and one more for the toe it's a great way to eliminate things wholeheartedly but we can also go down on the individual vertex level and understand how every single joint affects each individual vertex and this is a great way for truly fine tuning joint weights and understanding exactly how vertices are affected by joints so you can go through this very very precisely and truly fine tune your skinning fine tuning your character's skin weights can be a very time consuming process so in order to save time you can mirror the weights from one side of your character to the other so here i have my character and at this point he's pretty close and one of the things you can see is that this left foot is fixed but the right foot is still kind of broken so the weighting is not correct on that foot now we can fix this just by mirroring the weight so it's a very simple process all you do is select the geometry go into skin mirror skin weights so what are we mirroring we're going to mirror across the vertical axis y z so this this so the character is vertical in y and facing z so x is kind of our left right axis so we want y z positive to negative so positive x is on the right negative x is on the left yes we want to go from this side because this is where we fix the weighting to the other and then surface association and what that means is how is it going to figure out what vertex on this side matches that vertex on the other side and basically we're just going to use the closest point on the surface and then use the other defaults as well so let's just go ahead and click mirror now that foot works so now i've mirrored my character from one side to the other and hopefully the weights should work now you can continue to tweak your weighting and uh i like to basically work on the left side and then mirror over to the right but you still will need to check to make sure that both sides of the character are deforming properly and once you do that your character is done well that just about does it for this course hopefully you understand a little bit more about how to rig a character's body and if you want to dive further into maya character rigging we have a number of other courses that cover a wide variety of topics so until next time i'm george mastry for linkedin learning
Info
Channel: Modern Video Collections
Views: 789
Rating: undefined out of 5
Keywords: rigging, maya, character, blender rigging tutorial, character rigging, tree climbing, how to, learn to, tutorial, simple, step by step, instructions, easy, fast, rig, animation, rigging in maya, maya rigging tutorial, maya tutorial, rigging tutorial, character rigging maya, maya rigging, maya character rig, character rig, game character rig, rig blend shapes, maya face rig, facial rig
Id: bSCdJYiBdsY
Channel Id: undefined
Length: 174min 48sec (10488 seconds)
Published: Fri Nov 12 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.