This is a summary of the tools and techniques used in the creation of my animated robot arm project for a ‘3D Artistry’ assessment. It is written somewhat ‘after the fact’ and in the future I think I will try to update project blogs as I go!
The brief was to design a robot arm, model it, UV map it, texture it, set up a system of ‘hierarchical’ rigging and produce a 30 second animation where the arm interacts with a ‘mystery box’.
Somewhat obsessed with ‘Steampunk’ designs at the time, my initial idea was to go in that direction and I began searching the web for something on which to base my design. This was the kind of stuff I found:
After making a few sketches (that were so raw I don’t even feel like I should post them!) I dived into the modeling process.
After several days pushing polys, this was what I ended up with:
I learned a lot from building this, not having done much organic modeling before, but alas, it was a bit of a waste of time.
On showing the progress to my lecturer, I realized that I had missed the point about the kind of rigging we would be doing. This type of organic model would only lend itself to ‘skin binding to joint’ kind of rigging. To make it suit hierarchical rigging I would need to bust it into smaller manageable pieces.
I made the decision to go back to the drawing board with a new design. Busting this model into pieces would have destroyed the integrity of this initial ‘steampunk’ idea. This model will keep for another day and as I said, I learned heaps so it wasn’t really a waste of time. It did however step up the pressure to finish this assignment!
Under time pressure, I decided to go with a more conventional robot design. I decided that the aesthetic was less important than the ability to operate it via a simple rig since the point of this exercise was more focused on rigging and animation.
Again hitting the almighty google and taking inspiration from more imagery than its worth listing here, I had my design and it went like this:
2 cylinder-like shapes make up the ‘bicep’ and ‘forearm’ masses rotating from a central elbow. A ball-joint for the ‘wrist’ enables the hand to rotate on all three axis. A human-like hand has fingers extending from ball joints and each finger ‘shell’ can rotate only in X.
This system I knew would be efficient to rig and it would be capable of performing not only robot tasks, but also some human-like movements.
The hierarchical rig would just be a series of parenting where the movement of each joint had a flow-on effect. Although simple in principle, careful attention is needed with naming conventions and grouping to get the right result. This is what it looks like in the ouliner:
So with the modeling and rigging done, the machine had life and it was time to make it look pretty!
The UV mapping process was a big learning curve for me as I had not mapped complex objects like these before. I was used to just bungling my way through without much deeper understand but this time I wanted to really control the textures, hiding seams and making sure the most interesting textures would appear in the places that would be facing camera. The main areas of interest would be the forearm which I wanted to have a weathered metal look and also the fingers which I had decided would have letters spelling ‘love’ and ‘hate’ like the old prison tattoos. I figured this would add personality and make him more appropriate for the ‘bar’ setting he would be in!
So I projected the UV maps, painstakingly moved the seams to the inside and underside ‘unseen’ areas and made sure the textures would be consistent without any noticeable warping. Then I saved out UV snaps to work over in photoshop.
Starting with a few free images I obtained from http://www.wildtextures.com/ (a huge thank you to them and a free plug for you!) a began rebuilding them over my UV snapshots, re-positioning elements in relation to the features my model, repainting painting out details I didn’t want and painting in additional detail in areas that needed it.
Here’s the ‘base map’ for the forearm that I was happy with before building all the other texture nodes, you can see the UV map on top for reference:
The smaller shell on the bottom right is for the insides of the cylinder that would not really be seen. I strategically inserted rusty elements close to seams where they would naturally be more rusty if the robot arm was real.
Then I moved forward with building the colour, bump, specular and diffuse maps, moving back and forth to from Maya to Photoshop for render tests. At this stage I also established the lights in the scene so I could test the textures in their actual environment.
Here is the final lighting setup I decided on. A combination of one area light and one spotlight for the main lights, then another area light with much less intensity for rim-light behind:
and here is what my photoshop layers pallette looked like after building all the seperate textures out into layer sets:
Once I had linked these to the correct file-nodes in maya. I did some final render test and they looked like this:
As I said, the main focus of the texturing for me were the forearm and also the fingers, so I chose angles that displayed these areas best. For the elbow joint, a created a ‘hammer finish’ design using PS textures and also engraved the robots name ‘Tinman 3000’ using a combination of bump and diffuse. Other surfaces were mostly just procedural Blinns. The table surface was created using the 3D ‘wood’ procedural. In the second image above, I also utilized the depth of field settings in mayas software renderer for selective focus.
Let me re-enforce that this texturing process was pretty exhaustive, it doesn’t happen quickly- in fact, just to create the text on the fingers required 24 different photoshop textures in total.
Right, so with the ‘beauty’ treatment out of the way, I could begin animating.
The idea that evolved with the help of my lecturer was to have a ‘beer coaster’ slowly but suddenly enter the robots field of vision and to have him reacting to it in various ways. My initial idea was to have him performing more acrobatic movements, flipping the coaster up in the air and catching it. My lecturer steered me away from this as the main point of the exercise was to give the character personality and a better way to capture that was a more simplistic idea of creating human reactions to the coaster. So the ‘mystery box’ in this scenario is the coaster.
So, here is quick rundown of the key-frame poses for my animation- firstly the arm is static when the beer coaster drifts into the frame:
then, when the coaster drifts into the robots field of vision, there is a surprise reaction:
then the character moves into a ‘holding pattern’ while it considers:
next, the character starts to nervously creep towards to mystery box to explore it:
my inspiration for this creep was that kind of nervous walk that Elmer Fudd does in Looney Toones- think ‘be vewy vewy quiet…’:
I actually watched this quite closely on youtube to study the timing and exaggeration of the movements.
My character then gives the coaster a prod to test the response:
then backs into a ‘wait and see’ position:
taps his fingers while considering:
has an idea!
that idea being to give the table a big bash and see what happens:
so, after all blocking in the key-frames and doing all the in-between movements, it was time to tweak in the graph editor:
and if you think that looks confusing, you would be right!
I also learned some other lessons along the way of this project to do with organizing the rig and making things easier for ‘the animator’ (which was me anyway!)
Some of these include:
Locking and hiding attributes that are not required. You can see from this channel box screenshot that the only animatable attribute of this selected joint is rotate X. This is because I locked and hid all the other attributes.
If a joint is not supposed to move a particular way, then make sure the animator can not make that mistake!
also in the attribute editor, I decided to set limits on how far some of the rotations would go. This ensures that none of the surfaces intersect when driven too far and saves you having to look closely every time you push towards those limitations.
and 2 great tips for selecting joints while animating:
firstly, the use of selection handles positioned next to each joint
and also, the use of quick select sets. I actually made a few of these for selecting various groups. They can also be added to custom shelves if you are feeling really lazy, however they must be re-made if working on another computer- i.e- when I am working in one of the computer rooms at college.
All in all, I was happy with my end result. There are things that I will do differently next time and I guess that is the point. I have built better models in the past when that has been the sole purpose, but this is the first time I have really focused on work-flow and my first attempt at rigging and animation.
Time to take a heard-earned, end of semester break!