Tuesday, 29 April 2014

Past Project Evaluation - Rigging a Character for a Walk Cycle

Before approaching rigging my actual character, I decided that it would be better to rig a walk cycle for a very basic character. This way, flaws in my character design will be easier to remodel and failed attempts at rigging will not happen as frequently.















Akin to my character, I decided to create a basic bipedal character in a T Pose but without hands or feet so that the basic rig does not take long.
By doing this I learnt of several problems with my character model, especially with the parts where the joints connect, details of the changes made are in the Model Development File.

Rather than go into detail as to how I rigged up the mouse model, instead I will document how I rigged my main character for the walk cycle.


















With both sides of the body ready, I started my rigging process by creating what will effectively be the spine of my character. This consists of 3 joints, the main joint, the neck joint and the head joint.  I switched to the front viewpoint to make sure I knew where the center of my character was selected the joint tool under the character dropdown menu.



















Holding the ctrl button, I clicked where I wanted the beginning and the end of the main joint to be, In this case fr

om the hips area slightly above the characters crotch to in between where the shoulder blades would exist. From this point I ctrl clicked again upwards to the base of the characters neck to create the head and neck joints.

Having realized my character was symmetrical; I noticed that the joint tool had a setting for symmetry located in the tool options. In order to create the arm joints, I changed the symmetry dropdown to draw















The joints required for my characters arms are the clav joints, the shoulder joints, the elbow joints and the wrist joints.





















Once both all the arm joints are in place, I placed both of the arms inside the neck joint. Due to the nature of how hierarchy works in Cinema 4D, the arm joints should create another 2 joints in which they connect to the neck, creating joints similar to collarbones.

Every time a new joint chain is made, it comes in a null entity so it is more easily moveable and manageable. To create a functioning rig, I had to remove the joints from the null and delete it.

To create the legs I did the same method apart from the first joint began slightly off to the side of the main joint. I named my joints hip, knee and ankle and placed them inside the hinges of my characters legs. Following this, I created joints for the heel, the foot and the toe of my character so that I would be able to create a foot roll when animating my character and positioned them inside the foot. The heel joint should be at the heel of the character, the foot joint where the toes (if they existed bend) and the toe at the end of the foot of my character. Once this was done I placed the heel joint inside the ankle joint to create a full chain of hierarchy.






















At this point I made sure to name the joints according the their position from the front view, for example if the knee joint was the one on the right it would be named RKnee.
This step helped significantly when I was attempting to rig the mouse character and will no doubt help keep other options for rigging open.

Happy with the basic skeleton rig of my character at this point, I decided to work on creating controllers for easier character movement starting with the head as it was easier to select from the other joints.
To create the shape of the controller itself, I selected a circular spline, make the object editable and rotated it to a horizontal position. To ensure that the controller was centred on the head exactly I temporarily placed the spline inside the head joint. Using the numerical data at the bottom of the screen, I changed the positional data to 0 and following this, I selected the enable axis modification and changed the rotational data to 0 aswell. Once this was done, I removed the head controller from the joint.


After this, I selected the head joint, went into the character tags menu and create a rotational constraint by ticking the PSR box and selecting R, which limits the movement of the head to rotation. To finish the controller I dragged the head controller into the target box.
























The controllers for the shoulders are created in a similar way but rather than having the controller lying flat, It is at a 90 degree angle. This step is then repeated for the other shoulder to create another identical controller for the other shoulder.


The process for creating the arm rig is based around the use of an IK tag, a modifier, which causes each section of the arm to move together with each joint affecting the above in its hierarchy.

I created a controller in the same way as before and zeroed it out on the hand joint. Due to the fact that my character is not in a T pose, the movement of the controller can be predicted to not move as it would normally and if I was to redo this step I would make sure that my character was in a pose where the arms are more accessible to manipulate.

Following this step I selected the shoulder joint and created an IK tag. Selected the tag submenu in the attributes manager, I dragged the hand joint into the end box and the hand control into the goal box. When these steps were complete I added poles.
Poles essentially work as constraints to make sure that the arm does not do anything unusual such as rotate backwards against the joint. I positioned the poles in a way that would benefit my character.


After repeating this process on both arms, I added a constraint to both hand joints and selected the parent box and then dragged the hand controller into the target field with the rotation box checked.




















Before setting up the legs I set about creating the necessary requirement for a basic foot roll as my character is a humanoid being with feet similar to that of a man.
I created 3 null objects, one for each of the joints inside the foot I created earlier. Naming the nulls appropriately, I then placed the nulls inside the relevant joint and zeroed out the coordinates.
Using the movement arrows for the X and Y positions, I moved the heel null to the back of my characters foot. This is so the software recognizes that part of the object as the point of contact when the foot steps forwards.
Then I work on creating the controller for the foot using splines as with all the other controllers. Inside this controller I placed the heel null and inside the heel null I placed the toe and foot nulls.

Unlike previous joints the constraint used on the heel joint is an Up and Aim constraint. To ensure the constraint works in the right direction I changed the axis to Z+ and placed the foot null in the target field.
For the up vector, I changed the axis to Y- and Z+ and placed the heel null into the target field.


I repeated the same constraint setting to the foot joint but instead of having the target field for the aim tab as the foot null, I replaced it with the toe null. This changes the movement of the foot on a downward trajectory making the movement appear more natural and easy to animate.
To ensure the movement is carried through the leg I added an IK tag to the leg joint in a similar fashion to how I rigged the arms. In this instance the heel joint becomes the end goal and I added a pole and a goal. The pole this time is moved outwards in the direction that the knee will be moving.


 













I then placed the goal that was created into the relevant foot controller.


The most difficult part of this part this rig is the foot roll a movement that is based around the use of Xpresso tags.
First I selected my foot controller and selected user data and clicked add user data. For convenience I named the data created foot roll.
I set the interface to Float Slider and the unit drop down to degree.
I researched successful data for the minimum and maximum values of rotation and found that the minimum value of -15 and a maximum value of 30 worked effectively. To lock this data in place I then checked the slider min and slider max boxes.

In the object manager I selected the Xpresso Tag modifier. Upon placing this the Xpresso window appears into which I dragged the foot controller, heel null and foot null.
Selecting the red corner of the foot controller box I chose user data and then foot roll.
To amplify the rotation of the foot I selected the blue corners of the foot null and heel null boxes and selected coordinates, rotation and then .P.

By right clicking the Xpresso window I located the range mapper system and inserted two range mappers. Both range mappers have the input and output ranges set to degree.
 Creating one range mapper with the data Clamp lower with input lower and output lower of 0 but with an input upper and output upper of 30.

The second range mapper has the reverse data with clamp upper selected and input lower and output lower both set to -15. The input upper and output upper values are then changed to 0.

 With this data in place I dragged the small circle on the side of each box and connected them in this manner.













The foot controller should now work on a slider that affects the foot to induce a foot roll.

Unlike the majority of my peers who modeled their characters heads in a similar way to the rest of the body, I researched a method which could be used to not only create the umbrella head, but also the rig.

I created 2 mosplines and adjusted the data so that a disk is made with numerous segments. To fill the negative space between segments I placed both the mosplines into a loft nurb which crudely created physical planes between the gaps.
After adjusting the mospline data to resemble the shape I desired I used an expresso tag on a null object to create a slider to open and close the umbrella.
















With my character being segmented, the only part left to do with the rig is to attach the model. I did this simply by dragging the objects into the relevant joint and creating hierarchies to maintain structural integrity.



No comments:

Post a Comment