Thursday, 13 December 2012

Skinning and finishing the character/final thoughts

  The next step of my rig was to skin the character model to the bones I had created. I did this by making sure all the bones lined up with the skin shape and used the bind skin tool. I had to make sure the max influence from the bones was set to two and to allow bind poses. This is gives the best automatic skinning effect.
  When I first skinned my character, I hit a few problems. These were down to the influence of the skinning not being so accurate. An example of this was when I dragged the right arm inwards or outwards, it would drag parts of the face mesh with it. This was breaking the model so I had to use the paint skin weights tool to sort this out.
  Because i'm not really familiar with the paint skin weights tool, I found this task very difficult and stuck with cleaning up the very obvious sections of mesh being damaged by the bones. I found that when I tried replacing the skin weights with the brush, as I dragged a bone outwards to test the influence, the mesh of the model would literally break and i'd have small tris from the mesh being dragged across the screen. Skinning weights is something I plan on working on in my own time to solve the issues I came across.
  Overall I created a functioning rig that could be used for simple animations. The rig is capable of being set into poses, can be used to create walk cycles and other small animations. With there being so much more possible with creating rigs, I feel this is an area I want to succeed in and will maintain practice at this area until I am fully confident in creating rigs.
  Since starting this module I have attempted creating rigs of my own. I started creating a rig for a scissor lift I modeled for another module. I was not completely successful with this, however I did gain a clearer understanding of the elements of rigging. I learnt about the importance of the heirachy in the outliner, and how to use the various types of constraints effectively. From creating the car rig, the best thing I learnt was how to use the expression editor. This was such a handy tool set to be taught and the possibilities for its uses are quite vast.
  After completing this module with my wider knowledge, I feel I could go back to the scissor lift rig I created and be confident enough to finish it off and make it fully functioning.

Creating the spine

  The next step in my character rig was to create a rig for the spine. I did this by creating bones that would connect up the two legs with the two arms I had already created. This was made with four bones stemming up the body from the pelvis joint (this being the root joint in the rig) and connecting the two arms to the top of this. 


  After creating this basic spine, I needed to create controllers that would enable you to bend the spine into different positions such as leaning backwards or forwards. This I did by creating three arrows along the back slightly away from the back, one one each joint, and with pivot points on the actual joint. I then constrained each arrow to the separate joints in the spine. 
  Once I had done this, I needed to parent the arrows in the correct order so the spine would be move correctly. I did this by parenting the middle one to the top one, and the bottom one to the middle one. This meant that if I selected the bottom one, all three joints would follow, and if I selected the top one, only that joint would move.


  I also had to create controllers for the rig around the waist. These controllers are the waist control, and the root control. The waist controller is constrained to the waste to enable movements such as moving the hips. The root control is the control that goes at the very top of the heirachy. all the bones and controllers are parented to this. This helps with animations where a character is moving somewhere, so only the limbs need to be animated.

Rigging arms

  The next thing I learnt to rig was the arms for my character. This I did by creating bones for the shoulder, elbow, wrist and four bones for each finger. I then added an IK handle from the shoulder to the wrist. This enabled me to move the whole arm just by moving the wrist. I created a controller to add to the wrist. The controller I made was a circle created using NURBS. I thought the circle was best as it could could go around the wrist and be an obvious indication of what it would do. I then constrained this to the wrist so the arm could be moved from this controller which I named appropriately (Left_Arm_Ctrl).
  The next step was creating a controller which could be used to curl the fingers. This task was easy to accomplish  but tedious to do so for all ten fingers over both arms. I created a controller for each finger on the hands and named each one accordingly (Left_Arm_Finger_1_Ctrl). After doing this, I added an attribute to each controller named once again accordingly (Left Arm Finger 1) and set minimum and maximum values of -1 to 10. This meant I could key this to an animation with driven keys and manipulate the animation by a numerical value. I created driven keys for each set of bones on the fingers. I had to set the driver as being the attribute I mentioned previously, and the driven being the finger bones. I set -1 as being a straight finger and 10 being a curled finger by bending each joint appropriately, and keying it to the numerical value I had chosen.


  I had to sort out the heirachy of my controls in the outliner. I parented the finger curl controls to the actual wrist controls on each arm. This meant that I could move the actual wrist controller and the finger curl controls would follow the wrist wherever it went.

Tuesday, 11 December 2012

Rigging a Car 2

  The next thing was to start creating suspension. I did this using the main car group I had made (Truck_Grp) and setting appropriate pivot points. The heir-achy I created went as follows: the main body (Truck_Body_Grp) inside the rear suspension group (Body_Rear_Sus_Grp) inside the front suspension group (Body_Front_Sus_Grp) finally inside the main body group (Body). With the outliner set up ready I created controllers for the different parts. I created two downward pointing arrows, one at the front and one at the back to control how they went up and down. The pivot points for these arrows had to be on the opposite side of the car. For example, the Rear suspension arrow pivot needed to be in line with the front wheel axles. After doing this I created an expression that enabled me to move the arrows up or down to move the suspension on the pivot. Here is the expression I used for one of my controllers:                                Body_Front_Sus_Grp.rotateX = Rear_Ctrl.translateY;
The next controller I created was the main suspension control. This is used to move the whole body around one pivot point (would be used when animating a car over rough terrain or turning corners. I created the controller, once again, using NURBS in a shape which matched the movement so it was clear to understand. I then created a pivot point in the appropriate body group of the car that was in the middle of the whole body. I then constrained the controller to the group, thus creating a control that could be used to move the entire body. 
  As I did with the wheels I colour coded the controls (In this case, red for suspension) and created limits so as not to break my model. I made sure to limit the movements so I could only move what I wanted to be moved. for example, I didnt want people to be able to rotate and scale controls that weren't meant to be scaled or rotated. To solved this, I created limits so you couldn't scale or rotate these particular controls at all, and you could only move them where I had set limits to and from. 
  To finish off the car, I created a main control. This I made by creating a square on the floor of the vehicle once again using NURBS. I constrained this to the whole car as a group so I could move the entire car around using this square. I also created a global control. This created to give the car an original position. by moving my main control around to move the car, the global control stays exactly where it started. This is useful when animating a scene. Because everything in outliner is beneath the global control in the heir-achy  this means wherever the car goes the controls follow with it.
  

Rigging a Car

  To rig up a car we first had to obtain a 3D model of one online. I chose to use a Nissan 1400. After doing this I had to separate the different parts and create groups in the outliner, which I then needed to keep track of the different parts of my model. I started by grouping each wheel separately and naming them appropriately (e.g. F_Left_Wheel), which I then grouped together into one group for all four wheels. I also created a separate group for the main car body.

  The wheel groups had to be sorted correctly. I had to create three different groups for each wheel, all with centered pivot points. The groups are as follows: The main wheel group (F_Left_Wheel_Grp) was inside the  rotation group (F_Left_Wheel_Grp) which was inside the suspension group (F_Left_Wheel_Sus_Grp). With these groups created I started making the controllers to control these. The controllers made to rotate the wheels on the X axis and to move the suspension on the Y axis were circles created using NURBS. The controller used to steer the wheels (the rotation group) was a two direction arrow also made with NURBS and then curved into an appropriate angle using the EP curve tool. I then parented the different controllers to the appropriate groups using constrains. This meant that when I moved the different controllers, I could control the wheels on the car. I also colour coded the controllers (Green in case) and set limits on them in the attribute editor so I couldn't break the model accidentally. 

Monday, 10 December 2012

Rigging Basics/Creating the legs

  In the first lesson I learnt about the basic principles of rigging, what it can be used for and the terminology needed to understand the fundamentals of the subject. I started off by creating a simple leg rig using Autodesk: Maya 2012. This rig was made by creating bones with the joint tool, and positioning them where the basic bones in a human leg are. After this I created an IK handle from the foot to the hip. This means you can move the foot wherever you like and the knee joint will follow without having to move it individually. The IK tool is also used on the different parts of the foot (Toe/Ball/Ankle) so the foot can be moved from different pivot points.

  Once the basic leg was created, I made a controller which is parented (connected) to the foot joint in the leg hierarchy. This was then named appropriately in the outliner (which is used to keep track of all the joints, groups and controls)  e.g. "Foot_CTRL".

  After this I created different groups for the foot joints. By doing this and positioning the pivot points in the right place (e.g. Ball_Lift_Grp pivot is on the ball of the foot) I could set driven keys to the foot controller. This means when I select the foot control, I can add more settings to the attributes of this that can animate different parts of my rig with numerical value. The advantage of this is that moving my rig into its original position, can be done just be changing the numerical value to 0 in the attributes.
  I also learnt about using constraints on rigs. A constrain is where you connect two things together (e.g. a controller and a wheel). This means what you do to one of these, depending on the order which you have parented it, will happen to the other.