- - - SITE IN PROGRESS - - -
week 1: Challenge 1: Building skeletons / Project briefing
Having rigged several personal Maya models before, I felt confident entering this module with a solid understanding of rigging principles. My familiarity with common joint constraints, such as the orient constraint, proved invaluable. The orient constraint allows precise control over a bone’s axis, which is especially useful for tasks like aligning finger directions or controlling spine rotations along a specific axis.
In addition, having already explored IK (Inverse Kinematics) and FK (Forward Kinematics) setups, I was ahead in understanding their use cases. IK controls, for example, make foot placement more intuitive by allowing you to position the end joint, which automatically adjusts other joints like the knee. This reduces the need for manual tweaking of individual joints, resulting in faster and more efficient animation. My prior experience with the LinkedIn tutorials provided by our tutor Alan last semester helped reinforce these concepts and made the process smoother for me.
The first challenge involved setting up a basic human bone structure for a character model provided by our tutor, Alan, called Jerry Rig. I managed to complete the setup twice during the lesson, as Maya crashed just as I was finishing the first attempt. I usually have autosave enabled on my home setup, but I later realized it wasn't turned on for the school computers.
week 2 Challenge 1: Skinning (binding & blocking weights
This lesson was about skinning. Having skinned hard surface models before, I was fairly confident starting this lesson. I was under the impression that with organic models we would be fixing large areas with the weight brush and smoothing areas, but I have realised that an accurate and precise selection of rings of the vertices to connect to the bones seems to be a much faster and efficient application method as it means we only need to blend between single rings of intermediate verticies and not trying to paint or blend over a whole limb, which can result in tedious cleanup work. Apart from not painting, everything else in this lesson went as expected and i resulted with a fully weighted and skinned model. albeit without the slim weight blends on the rings in between joints, as were likely to cover this next lesson, even though I knew how to blend, I decided to wait for following instructions.
Even at this stage I was able to fully flex and articulate my model. it just seemed there was almost like seam lines and creases that were not stretching/folding properly, such as the shoulders and elbows. These types of areas needed weight blending/smoothing.
week 3 Challenge 1: Skinning (blending weights)
This week was about blending our weights. which means that vertices that do not yet have any weights can have their weights applied by averaging the surrounding weights next to them, this also allows for smoothing of the weight values across already weight-painted vertices.
I decided between this week and next I would challenge myself to see how fast I could complete the rest of the tutorials. It took me a few days.
week 4 Challenge 1: Connection types & rigging legs
This week we were learning about constraints and different connection types and their uses and applications within Maya. This really helped me as I was looking for a basic coverage of the different connection types, as I was already aware I would need some tricky setups for the next challenge and would need to know how to apply different connections to achieve the correct results and specific orientations of different joints and objects.
The common connection types are; grouping, parenting, Constraining, connection editor, Mel script, set driven key or node editor.
By this point I had already rushed ahead and completed all of challenge 1, and all of the research tutorials, and the bonus tutorials. and I was now preparing potential ideas and setups for Challenge 2.
week 5 Challenge 1: Rigging the spine & neck / arms part 1
I spent this week cleaning up the geometry and removing five-sided faces from my own custom model I was very chuffed to find out that due to me having fairly accurate modelling. And not completely Messed up geometry, and having some experience within engineering, and it being a hard surface model which requires less blending. My Tutor was confident that I would be able to rig My own custom model With Ease. not only because I had already rigged it and showed it to him. And I was really dreaming for a more professional way of rigging because all though mine worked. And manoeuvred in the way it needed to. I can understand some of the standard methods Of rigging I used May not be very applicable when moving to unreal Engine or other Applications. understanding the preferred way of creating constraints, And also understanding the hierarchy Of having a root base skeleton Which acts as a normal human underneath, And then overlaying the complex joints and mechanisms Of the robot On top of this standard Human rig, this allows animators To easily manoeuvre my rig. Just like they would others. But while doing so they are actually. Articulating many more joints, That conforms to the general pose of the base human skeletal rig, meaning in the end a much more efficient and easier to control rig. Which still has the detailed manueverable parts Of a complex robotic. My initial method with my original Self rigged model was to use one bone at the centre of the joint which pull and move all the other nearby joints. Throughout this rigging module I have learned to use nerbes curves and circles as a control point for moving the joint. As with many rigs online it is easier to guide limbs With Inverse Kinematics. Having control points that allows you to move many bones Via 1 point, requires a strategic hierarchy or structure. Although my idea of using one created floating joint in the area that moves the other joints- Using a control circle makes so much more sense as now the animator can easily identify which ones are meant to be moved And which ones are not meant to be moved. Ideally, the animator animates from the curves and circles And not from the actual bones. Applying this new method into my own model will allow even better control as before due to the not-so-structured creation of my rig, I could not seem To get IK working as I did not have a root Base human skeleton rig to apply my IK to, This meant when applying the IK chain, it was taking into consideration all the detailed joints I added in between the 2 points in the hierarchy. Now I have a base simplistic. And easy to modify the Root human skeleton rig which I can apply my IK to. and also adding nurbs control rings to easily identify where I can efficiently animate my rig. and not let the aniamte get confused by which are the animating bones or not.
This is my first attempt at rigging this character model i made before getting the professional aid from our tutor Alan.
I felt i did a pretty good job except for the issue of no IK for the arms and legs. This made animating much more tedious. Here is a short video of me assessing my first attempt showing its limitations and functions.
Shown below, are enviroment scenes that I created myself using plugins such as V-RAY, Chaos Pheonix and Vue by E-ON. I was very happy at my scene composition and moddeling in these projects. Here I have posed my character in my own custom envoriment showing somewhat flexability. After recreating my rig setup I will hopefully then be able to also animate my character and more efficiently pose it for a demonstration of more dynamic movement in my rig.
week 6 Challenge 1: Arms part 2 & finishing up (videos) / 🟪 Reviews
This week I had already pretty much cleaned up all of my geometry for my custom rig. I now next wanted to create the base human skeleton rig within the geometry, then later try to calculate how the left over bones would need to conform and shift to suit the movements of the main root human skeleton rig. This was a very tedious and long process as it required lots of trial and error. And replanning on methods on how to achieve it.
Understanding that with my initial geometry for my character model I did not take into consideration The human form entirely as I had almost like a digitigrade leg stance, leading to a slight angle of the knee and lower leg joint. From our class tutorials I was made aware. That there may be articulation issues If the leg cannot bend along across a straight axis. This is where corrective joints To realign my geometry Along the human skeleton rig will come in handy.
During this week I very highly valued my effort in doing the bonus research tutorials and understanding the difference between constraining and parenting. And how instead of just parenting one thing to control all the attributes of the other thing. Such as scale, translation or rotate. We can actually control whether we just want to connect one of the attributes to one of the other specific attributes or multiple.
Having a good understanding of the Node editor is really what helped me excel during this task. spending the summer to learn the Node editor and hypergraph, has made this task a lot more streamlined. Being able to open up two different objects in the Node editor and easily draw a line connecting whichever attribute I need, to the other necessary attributes has allowed much easier experimentation.
week 7 Challenge 2 (starting option A or B)
This past week or two I had been working on the lower leg joint of my robot rig. This was the most tedius part of the rigging process which required a lot of trial and error due to requiring over five times the amount of bones than a standard leg. this requires meticulous placement of the IK chains on the joints. The leg required 5 IK chains in the end to function and pivot correctly.
I was also experimenting with cables during this period. my first attempts were not great as they would bend along the curve but not actually stretch one they fully extended, meaning one end of the cable disconnects from where they were attached.
Our tutor Alan gave me useful advice about how I can use a measurement took to check the distance of the curve and then using a limit to stretch the required bones into the stretched position. They looked much better after as shown here on the right.
I later had to do further modifications to cables such as the small double ended cable at the front of the body. This cable required things called clusters to be made, they help to position points on a curve. When a tube bends sometimes the middle would collide with other nearby geometry, so I had to carefully plan and constrain some bones with connected clusters. Using multiply divide nodes to connect the rotations of the Lumbar/Spine bones into the translations of these parented clusters, so that they move and orient around the other geometry in a precise way and avoid collision of geometry.
Its kind of hard to see them, but ive used an arrow to point to the clusters here on the right, they are small "C" shapes.
Here is the node setup, as you can see the curve length is being read and split, and divided by the total amount of bones in the chain, then its being fed into the scale of each bone separately to lengthen the cable at the right ratio to stretch between the two ends.
week 8 Challenge 2 (starting option A or B)
This week I was setting up the IK chain for the arms. My tutor Alan said I could stick with FK for the arms as I have already demonstrated IK on the legs. but I wanted to challenge myself. I already had created FK for both arms and legs on the original rig and realised how hard it is to animate with just FK. This has made me realise that IK is much more sensible for the user. Also, setting up an IK chain on a rig with over 500 bones I feel demonstrates a high level of skill. this is because an IK chain can affect other bones and rotations if not set up correctly. Most of the bones on my rig are corrective bones, which means they don't follow every point and control moved to the same degree. They have been set up to use many point, aim, orient, or pole vector constraints to reposition themselves to visually conform to the model in a way that makes mechanical sense. I have taken into consideration to the best of my ability how the mechanical parts have a concrete logic and solid path to where they can move. This means I have to choose very specific points where joints can rotate so they always align and don't stretch. and in areas that do stretch, I simulate the extension using elastic tubing or pistons, which are much more likely to be used for moving parts in joints for mechanical hard-surface being. I have not slacked on the blending though. There are over 10 chains on my character, which each all have over 20 bones inside. They are all responsible for bending tubes in specific angles and positions so they don't collide and "clip" through the rest of the model. All of these tubes required delicate blending. Areas such as the neck area and small cables in the fingers also demonstrate good blending of weights.
Here was a fairly enjoyable detailed setup that i created to give more interaction and livelyness to my rig. having extra cogs that seemingly react and respond to the other joints in close proximity.
This required an orient constraint connected from the shoulder so that when his arm swings forward the same rotation happens on one of the cog rotations and it spins, then I have another constraint to the following cog. I used many multiply divide nodes in between the constraints and found the rough radius and required ratio for extra turns on the smaller cog to line up with the spikes. I also used a set-driven key to slide/translate the mechanism along its central rod, so that it acted like a piston, so it visually looks like it's creating more tension and force as needed when the arm raises.
week 9 Challenge 2 (starting option A or B)
This week I was given a lot more tips by our tutor Alan, who went through some basic spring-like IK chains to see which would do best for the ankle joint in my model. I originally wanted to place my pivot joint for my foot control in between a few of the foot joints so they would all articulate when I move my foot. But this seemed way too complex of a challenge and where I could see many complex problems arising, the first one I ran into was feedback loops, where two aim constraints were needed to bridge a gap on the heel. but due to being offset every time I rotated the foot control, they couldn't keep their original angle—to then calculate the next angle amount onto the base rotation, it would shift. this led to me having many visual bugs whenever I moved my model. And although when rendering and playing it updates itself and looks okay—while animating it created so many visual issues that made it impossible to fix even when just trying to manually update the constraints by re-entering the numbers it already had on the channels, it only sometimes visually updated the whole foot. this mess of a setup resulted in me originally going back to the more simple position of just having the foot control right inside one of the normal joints and later use the extra corrective joints to simulate the machine parts moving later. I also realised these extra joints I wanted to move, actually can be controlled to move by a custom attribute later, meaning although the base model wouldn't move with these extra joints the animator could add "spring" and extra suspension to the foot manually in the animation later whenever they need, using the attributes created on the foot control.
Another task was re-adding a chain I created a few weeks before, back to the rig. It was a tedious process as all the bones in the chain had a "world up axis" within the aim constraints on the bones that are following the curve, which needed adjusting to "object rotation" for the "world up axis", Whenever I would rotate the leg with the chain, the axis of the joints would still face world up when they needed to face up - parallel and in relation to the leg axis. After changing the up axis to an object that was parented and followed the let, the chain would then follow the leg correctly.
week 10
This week I seeked for more advice on my robot rig from my tutor Alan.
I felt my rig was almost at completion by this point and so i sent it in an email to be looked over and Alan noticed a few improvements and notes on it:
"1) Pirouette side to side
Wrong axis. This should move side to side (like someone squashing something / putting out a cigarette) not rotating down the foot.
2) No rotate for the hands / wrists
Use a point constraint to connect the control to the IK and then connect the control to the wrist joint using an orient constraint.
3) Geo
Inherits transforms needs to be turned off for the geo grp
4) Dummy (low res) animation geo
The rig is (very) slow to move so it needs low-res geo for the animator to use
As we discussed could be an issue… (and typically is an issue when rigging bespoke parts)
5) Global scaling
When scaling your character using the global (main control) you will see it doesn’t scale correctly. This is due to all the tech you have used along the way. To resolve this, it would need a longer conversation about how to fix each part depending upon what you are using in that area. For example, things like squash and stretch involve a measurement calculation (using the dimension node) and that measurement changes as you scale. You typically use a ‘static number’ to divide the measurement by itself (multiply node and condition node) and that number needs to be dynamic too now (for scaling)…Basically the static number needs to be multiplied by the global scale to match what is happening with the live dimension measurement changing. That is one of many possibly tweaks you may need to do"
The Pirouette was an easy change of unplugging the axis connection in the node editor and plugging it into a different axis, and also adjusting the pivot position.
The rotate was an easy fix as mentioned by Alan.
The dummy low-res geometry was also meant to be rather simple, so this was a quick process, but it is a very necessary addition, as with how complex the whole rig has become; even on a top-spec machine, for example, it now takes up to 5 seconds to load it just translating the main rig control sideways a few units. But when using the dummy rig, it is almost instant. This has shown to me, that even though there are over 500 bones in my rig, and I tried to pay close attention to the geometry density, how much polygons can still affect performance- this draws parallels to my rigging research, and why games require relatively low polygon assets to gain more playable performae.
After receiving these tips I managed to address all these issues on the same day. I previously thought I had already solved the scaling issue on the root control- but had since added the leg chains and few extra cogs in the chest, which I later realised also needed the appropriate scale constraints and was the reason the scale still wasn't working.
week 11
I asked for more feedback from Alan before i start doing a small demonstration animation with my rig.
He mentioned just to try to add a COG control/ or a separate control for the hips that doesn't affect the rotation of the upper body. Although I could pose my rig is any position already by this point, I felt this would still add additional control in situaltions where the rig may be posed correctly but just the hips are out of place- this extra control will allow for the animator to just slightly re-adjust the hips without affecting the whole upper body animation, allowing better usability of the rig. I managed to address this also on the same day as I received it.
Later that day and night I also managed to create an animation with my rig.
I felt I wanted to demonstrate higher flexibility with this rig as compared with the jerry rig, as I wanted to show how much my rig could deform and articulate even with its amount of hard body surfaces and joints. I felt a run cycle would demonstrate a higher amount of flex and deformation in my rig as compared with the walk cycle of the jerry rig. Running requires a more wider and dynamic stance than walking, which means it will show a much better range of motion within the rig and its joints.
I decided to manually animate my rig using the controls I made and drawing reference from the mocap data that our tutor Alan provided, I managed to create a fairly high-quality looping animation, that did a good job of demonstrating my rigs flex and potential.