Desmond IN3D Blog
Sunday, 21 August 2011
Animation Project
Robot Background & Setting
My robot name is Toby, Toby is initially doing his assigned work, he is doing it in a very systematical and consistent way, he imagines it was to be another ordinary day at work and hence was in a very monotonous mood.
The scenario in which Toby would be is scenario 3 where there are boxes that are moving slowly at first but then gradually accelerates.
Self Critique
Overall I felt that I did my animation to the best of my ability, even if I did not use that many principle of animation in my work, I felt that my animation was still generally well done enough to portray the emotions and reaction of my robot clearly enough to the audience watching my animation. Another area that I felt that I have done well in general is the application of timing in my animation. However I am not pleased with myself for not being able to use the graph editor in my animation as I regrettably was not well-versed enough about the graph editor to use it to better my animation.
Animating of the robot arm to carry the boxes
Initially I was discussing with my tutor on how we can make the boxes come in for the robot arm to carry it, he suggested using a camera that shows only certain area of the scene so that we can make it seem as though the boxes are moving in via a conveyor belt.. He suggested that the camera could be positioned at such an angle that it showed the robot arm picking the boxes up but also in such a way that when the conveyor belt moves quickly the boxes that the robot arm failed to picked up would drop downwards and out of the camera view.
Hence taking his advice I tried to plan my animation to do so in such a way, making some modification of my own such as adding another platform where the robot arm would place all the boxes it had collected so far, that platform would move out of the camera view each time a box is placed on it to give the illusion that it was transporting the box it had to someplace else.
As for the animation of the robot arm carrying the box, I simply did it using the same method which the online Maya tutorial demonstrated, which was setting the constraints of the boxes by key framing them at the appropriate time. I initially made an error of not key framing the parent constraints selectively and as a result it screwed up my animation however I rectified that mistake and everything worked perfectly as I had planned so far.
Below shows the animation that I had hoped to achieve at that instance, it was generally easily done and it only took me a day though looking back I should have finished this much sooner, unfortunately I did not paid as much attention to the “selective” key framing of the box and therefore wasted time here.
Parent Constraint (Oh God…)
This was by far the worst time eater I had doing this Animation project, initially I assumed duplicating the boxes and merely setting new key frames for them zooming down the platform/conveyor belt would work unfortunately it didn’t and hence started a series of test and methods to get the parents constraint of boxes to work accordance with the “moving platform” and the robot arm to work.
The next method I tried was doing a special duplicate/ other forms of duplicating it, admittedly I didn’t really understand the special duplicating functions hence I didn’t really expect this method to work, however it did work out in a way, unfortunately it wouldn’t allow me to move the boxes into position before the arm control constraint started working which means that once the first box was being constraint by the arm control, all the other duplicates started following the translation values of the first box. (So that didn’t work out too well)
Next I tried duplicating the box but deleting the parent constraints and re-doing it all over again, initially I simply did it the way the Maya online tutorial did it, unfortunately it was here that I found the root of the problem, for parent constraint to work, it needed a rest position, however that also means that object has to remain there and couldn’t be moved from that position unless a constraint was acting on it, in which case for my animation that would means either the moving platform or the arm control to start acting upon it.
Hence I tried looking online for help however I did not find information that would help my predicament, thus initially I was ready to set small objects on the conveyor belt that the audience wouldn’t see during the animation but they would act as constraints moving the box from one position to another however that means it would also result in many key frame being keyed throughout the animation, just I was just ready to disembark on this painful venture, my fellow animator came to suggest an idea to me that would solve my problem.
He suggested using the same box for the animation since the robot arm could only carry one box at a time, it also means I could use re-use that box but it simply required me to re-position the box outside the camera view, hence from there it was just a matter of optical illusion, by making the box that moved on the conveyor belt disappear just as the box that had the constraint appear so that the animation would seem smooth.
It was a genius idea! Not only did that make it easier for me as the animator, it also made sense that this should have been the better approach given that it meant less computing cycle was to be consumed for the animation as well.
Robot Emotions
After solving the problem of the parent constraints I now had to do the robot animation, for this I relied heavily on the example used by Pixar animation of Luxor Junior. I studied their animation of the lamp being surprised noticing their application of the principle anticipation where the big lamp bend over before making a sudden upward jerking to signify a surprised or shocked impression. Adapting that idea into my animation I tried to incorporate that idea into my animation as the boxes started flooding in, however due to my lack of expertise using the graph editor as mentioned above, I faked all of those expression making good use of timing.
After that I asked myself how would I react if I saw something that greatly surprised me, I would examine it closer was the first thing that I could think of, hence I incorporated that idea as well into my animation where the arm rotated left and right to get a closer look of the row of boxes. Once again I made use of timing to convey that idea in my animation, also I used easing in and easing out to make the animation more believable, at the same time maintain motion that was faster than normal to show that it was still in the state of surprise.
Lastly, I wanted to show Toby getting a major shock when it realizes that the length of the boxes coming in stretches for miles before making him place the box at a much faster speed, for that once again I look for reference in the Luxor Junior animation and realized how the big lamp gave a very exaggerated movement of shock when the big ball came, hence using that idea I incorporated that into my animation as well before making Toby move the box at a much faster pace.
Now after putting 2 boxes and looking to see if there was still an endless stream of boxes, I wanted to show Toby being in a state of frustration, for that I consulted my tutor again, and he and I discussed the idea of it being frustrated and then finishing the animation of by whacking one of the boxes of the conveyor belt/platform. I decided that I would make the robot do what I always do when I’m frustrated (besides swearing :P), I would always smack my palm to my forehead and shake my head, since the robot has no hands to smack, I settled for making it shake its head furiously before smacking one of the boxes towards the camera, after playing with the timing involved for the animation as wells as applying the ease in and ease out motion for the robot arm, I succeeded in making a satisfactory animation :D
PS: Unfortunately only the first animation could be showed, I don't know why blogger is not letting me upload the rest of the animation I chose.
Animating Robot Arm
Animating Robot Arm
This exercise was my first ever animation I’ve done in Maya, previously we used the pencil software to learn about key framing and timing of animation, hence this time in Maya I’ve learn to handle an IK system as well as understand the basis of how animation was to be done in Maya. In this post I would not state so much about my process as I find that redundant given how I followed the Maya online tutorial to do my robot arm, I would rather discuss my reflections and thoughts about any point that I had problem understanding or found immensely useful or important.
Kinematics Systems
I’ve learn via this exercise that there are two kind of system one can use in Maya to animate our models, these are known as Inverse Kinematics and Forward Kinematics.
Inverse Kinematics (IK) handlers are points where animators control to handle the model they are animating, movement of joints are calculated by something known as the IK solver.
Due to this fact, IK handlers are normally used to pose characters that have skeletons, that is to say models that have joints such as a arm or a leg. To do this, we place the IK handlers at position of the joints, that is to say the places where the model’s skeleton will rotate when we animate them. (Example: Placing an IK handler at the shoulder of an arm)
Compared to Forward Kinematics (FK) which requires you to manually manipulate each joint of the model’s skeleton as well as manually control its movement until you have reached the desired pose for a key frame. This can be a tedious process especially when working with a complex skeleton.
![]() |
| IK Handler in Robot Arm |
![]() |
| Picture showing only the IK handler Orange color represents the robot arm skeleton |
Skeletons & Hierarchy
Hierarchy also plays an important role in animation, based on how the joints are connected in the hierarchy table, hierarchy not only helps to make a more realistic animation but it also saves a lot of work for animators when working with a skeleton-like structure.
Hence skeletons are basically a system that connects the various joints of a model and arranges them into based on hierarchy.
Example:
When working with an arm, the hierarchy for its joints are arranged in the below order.
This means that when we animate the shoulder, the elbow and the wrist moves along, and if we animate the elbow only the wrist follows, and lastly the wrist movement doesn’t affect the elbow and the shoulder.
Since I’m a coder, I understand hierarchy aspect much better than most of the other aspects of animation, and thus I am able link the hierarchy to a programming stand point of view. In game programming, it is essential that we have code in a fashion known as object-oriented programming (OOP). This is to say that behaviours often exhibited by one of the game objects in our game are linked to a class where specific codes tells it how to behave, however to ensure that we do not repeat any codes (Imagine a shooter game where player is firing of a machine gun, it would make a lot more sense to write a class or function where all bullets has rather than creating a new function or class for each bullet fired).
With that said objects in programming can inherit one another as well so as to save even more time and processing power. Example of inheritance in OOP, an animal has a name and an attribute that states what type of animal it is (reptile/mammal/bird/etc). Hence I could make a lion class, now lion class inherits animal class, hence it has to have a name as well as the type. So when we want to check if the lion is a mammal, we have to manipulate the code such that it links back to the animal class to get the information that the lion is a mammal type class. Similar to Maya animation ideology of inheritance, if the parent which in the code case is the animal class and the Maya case which is the shoulder joint, manipulating the parent means that the any of its child classes/joints would be affected.
Hypergraph
I love this tool if only we could incorporate something like this into my programming software! Basically I understand that the hypergraph is meant to be used as a tool that shows the overview of every object in the scene and their relationship to one another. This way not only can we understand what to manipulate should we want a certain result but we can also easily select them from the hypergraph, example of a case where using the hypergraph would be useful is say when we are animating a tail of a dragon where there are many scales and bone involved, hence instead of doing trial and error to see which bone segment controls which segment of scales we could simply go straight to the hypergraph and see for ourselves, not only that we can select the segments we want to manipulate directly without having to pan and try to select it from perspective view or other views.
![]() |
| Hypergraph showing objects Selected Swivelbase (yellow) indicates more object parented under it |
![]() |
| List of objects parented under swivelbase / base of robot arm |
Create Skeleton Tool
The create skeleton tool is the basic tool for creating a skeleton to rig in Maya. The first click would be the parent joint which is to say that joint would control the subsequent joint clicked. Hence due to the functionality of this skeletons it is important that we as animators think about the structure of the model we are going to animate and how it would move and behave, and then plan out a skeleton system that would suffice the work we would do before rigging the model.
Parenting the skeleton hierarchy
This basically means we parent the model to its skeleton, since it makes sense that we do it this way instead of the other way round as even in real life the skeleton is being wrapped by the muscles and body structure and movement limits are determined by the skeletal structure. To parent the model to the skeleton it is important that the order of the selection is correct, we first select the model node and then shift select the joint / skeleton node we wish to parent it to.
Applying an IK System to the Skeleton Hierachy
We apply an IK system to our skeleton by using a tool known as the IK handle tool, this serves as a mean of letting us control the movement of our model based on it skeletal structure. To do so we click on the parent of the skeleton system (first skeleton node / the first click when we created the skeleton system), and the second click is on the last joint of the skeletal system (last skeleton node / the last click when we created the skeleton system). To test if the IK has been applied correctly we can click on it and test the movement to check if it is in accordance of what we were expecting when we planned the skeletal system and movement that it must perform.
Creating a control object
Basically we utilize a tool known as create locator to create a control object that will be used as a point to control the entire IK handler system as this is much easier than manipulating each joint individually. This is extremely important especially so when working with complex joint and skeletal systems.
Also it is important that we freeze transform for the control object, that way we can ensure that we can reset its position to where we initially place the control object by zeroing all its translation.
Constraining Object in an IK System
From what I understand, it is the modeller/rigging guy job to constrain the axis and position that the object can move before passing it to the animator, this is similar to what we do in game programming where the base code designer designs the function and base code before passing it to the scripter to finish, example base code designer comes up with a function called shoot, scripter then assign the script that has the function shoot to certain guards in the game that has the gun.
To constrain an object movement in Maya, there are several ways to go about it, there are tools to constraint movement of an object to a certain point or constrain it to have the same movement as another object, for in which in our case, the robot arm is constraint to the control object. Also we can constraint the movement of certain objects in Maya via the attribute editor where we set the min & max value of how much an object can either translate, rotate and scale.
Parent Constrain
From what I understand in the tutorial, a parent constrain applied to an object can have multiple objects influencing it, in this tutorial there are two influence of other object on the cargo box which are firstly the robot arm and secondly the platform.
Parent constraints are used to ensure that one object follow the movement of another object so that when we animate, we need not animate both objects but rather just animate one object and adjust the constraint of the other object that we put the parent constraint on.
Also for parent constraint to work we must set a rest position for the object that we constraint, the rest position indicates where the object lies when it is not influenced by any of the other objects.
Utilizing parent constraints in an animation
Basically the object who has the utilize objects has it constraint value set to 1, so for example the robot arm is now moving the box at frame 10, so at frame 10 when the robot arm just touched the box, we set the arm control value on the box to 1, when it move to the platform at frame 20, we set the arm control value to 0 and the platform value to 1 on the box. When the box is not being moved or repositioned by the arm or platform we set the value both to 0 which is also the box rest position that we set when applying the parent constraint onto it.
Sunday, 5 June 2011
Story ,Primitive Shape & Reference Images
The mouse is on his mousetrap car, when something (heavy preferably) drops destroying the tracks, hence this forces the mouse to lean heavily to one side of the cart causing it to tilt off the track. As the cart tumbles flipping as it falls through the air, it hits against the hilt of the wooden sword, it somersaults forward and travels on the blade of the wooden sword, with 2 wheels while the other 2 wheels are in the air.
![]() | ||
| (Primitive Shapes) |
Self-Critique
Overall I felt that my work mostly satisfied my expectation in terms of modeling and in terms of the framework, however I find the texturing a great deal to be desired, although this is not altogether unexpected as I did foresee this in my initial planning. However overall I am satisfied with my work.
General Appearance
In terms of general appearance I feel that my model was extremely similar to that of the actual object. Especially in terms of the hand-guard of the sword as well as the hilt of the sword, I felt that I have done especially well in modeling these two parts of the sword.
The spaces between each of the curves holes of the guard were taken into consideration as I modeled it with the help of the different view so as to ensure that it was as close to the real thing as possible.
The hilt of the sword was extremely challenging as it had a certain unique shape of both being curved & flat at the same time. Hence I took a long time trying to model that aspect however after various attempts I manage to come up with one that I was satisfied with by using a mixture of Booleans->Difference & Extrusion.
The sword blade itself which I made using a curve deformer was ok looking, although I find that at closer examination in a zoomed in mode that the curve of the blade is not all that smooth. However overall I am still satisfied with how it turned out.
However in terms of the other finer aspects of the wooden sword, which is to say the finer details such as the little bumps on the sword, where the wood joins & any other aspects where no clear modeling was needed but details that were to be shown through texturing was where I felt that I have done badly.
The inner layer of the hand-guard of the sword has a more complicated and layered texture compared to the outside layer. However I could not seem to find the correct texture for the inner layer & hence left it similar to the texture of the blade of the sword.
The hilt of the sword as well was not ideally what I would have wanted it to be though I did try to imitate it by applying a darker burned texture of the one I used for the blade of the sword.
Overall I felt that I should have researched more about texture rather than just simply using those provided in the lab exercises.
Progression & Research
I took a total of 2 weeks to finish my model as I started work on it on week 4. I took the first week to understand & do research on how to model the wooden sword. The second week I tried to do research & experiment on texturing but admittedly that was not as fruitful as I hoped for it to be.
PS: I have done my research here as well wish I would show as I progress through the project.
Week 1:
Hand Guard Making:
As stated above I did the hand guard of the sword in the first week (start of week 5), this was probably the only part of the model I was a hundred percent sure of how to model.
Basically what I did was to use the Booleanà Difference Tool to make the curve side of the guard. Just like what was done for the bucket in the lab exercises.
I used a CV curve tool & a Revolve tool to ensure that like the method shown in the tutorial, however I used a higher segment count when using the revolve tool to give it a more round edge. The reason I did this is because I wanted to ensure that the topology was correct.
![]() |
| (Using CV Curve Tool) |
![]() |
| (After Revolving) |
I was pleased to say that this went rather smoothly indeed. The only problems I face were the fact that since you could only difference two objects at one point. I had to make sure that each sphere that I had use in the difference tool was arranged equally inside the hand guard of the sword. I accomplished so by making use of the channel box as well as the top view to check the distance between each spheres.
![]() |
| (Using the Channel Box Editor & Top View to prepare for Boolean-->Difference) |
![]() |
| (After using Boolean-->Difference) |
Hilt Making:
This was probably the trickiest component I had to do for the sword modeling project, given that the hilt of the sword had a curve that faced outwards rather than just a simple straight line slope that most people would assume at first glance. Also the part where the hilt had a flat side only added to the difficulties I faced.
Initially I tried to use a method I thought will work as I was researching on how to make object appear smooth as I had to attempt to create the curve effect that the hilt of the sword had at the end of it. (I decided to use a square at this point as I felt that it was easier making a curve from a square-like object rather than making a flat point from a curve/smooth object)
Hence I tried to manipulate the face of the end of the cylinder as shown below before using a tool called Polygonal Smooth.
However upon applying the tool I realize that there were several problems with it. Firstly I feel this method had its limit while working on a square like object I cannot find a way to manipulate the object to become a perfect circle. Below was my best attempt at creating the hilt, as you can see I first made the square model out of a cube & by manipulating the faces and inserting new edges using the Insert Edge Loop Tool to the object you see below, then selecting specific faces & edges as I prepare to use the smooth tool on it.
![]() |
| (Before Smoothing Object View) |
![]() |
| (After Smoothing Object View) |
As shown in the 2 diagrams, even though it looks similar, the smooth edge tool can never be used perfectly on a square like object. Hence it was here I realize I should use a cylinder and try to make the flat edge via some method.
(A few days later)
After thinking long & hard, in which I was thinking about inserting new edges and manipulating vertexes similar to what I’ve done earlier on (which when involves a many edges and vertex object such as the cylinder is just hellish), I realize that actually the method I needed was very simple. I could simply use a Boolean difference to make both the curve & the flat face of the hilt. As shown below I first create a cylinder and then using a cube that is scaled accordingly, I arrange it in such as way that when I apply the difference tool, it could give me what I want.
![]() |
| (Using extrusion to bring out the curve) |
Week 2:
I started work on the blade near the end of Week 5, though I would consider it Week 2 in the progress schedule already since it was only a few minutes before Sunday.
I consider the blade shape initially in week 4 to be a cube; however I was not faced with the difficulties of 2 things, making it curve appropriately as well as smoothing of the edges.
The first method that I wanted to try was manipulating of vertexes to imitate the curve of the blade as well as the smooth edge (This is a very painful task). At first I went to create a cube and scale it to size so that it will be close to that of the blade, also I made the cross section of edges so that I could manipulate the shape more easily.
![]() |
| (Manipulating Vertex to form sword edge) |
I manipulated the sword shape via vertexes, which took freaking long!!! Hence as a result I took a very long time just to come up with the blade shape (with curve edges). However I still needed to make the blade curve rather it just being straight. I wasn’t going to manipulate vertexes again as I didn’t have enough time. Hence I decided to use a deformer curve tool to bend the blade (Similar to what I’ve done for the lab exercise where we had to make tracks).
Before I applied the deformer I used the smooth tool which I’ve discovered a few days ago on specific faces of the blade. This gave the blade a smoother feel to its edges. The below images are images where I was testing to see if the smooth tool will work & it did. Though at this stage I was not really done with manipulating the vertex just yet.
![]() |
| (Before Smoothing) |
![]() |
| (After Smoothing) |
Hence after I applied the deformer curve (had to spend some time getting the right setting by playing with the options in the deformerà Bend Tool, options such as low & high bound as well as curvature to determine how curve the blade would be.) Below is an image of how the blade looks like once it had been bend. (I forgot to take a screen shot of how it looked like before it was bend, but from the above images where I manipulate the vertex, it was generally looked something like that.)
![]() |
| (After using Deformer-->Bend) |
Now I simply put together the 3 pieces of the sword and texture it, I used a simple wooden texture that I found online & using Photoshop adjusted it accordingly to fit the each pieces of the wooden sword accordingly. (Example the guard had a layer of darker wood & I tried to imitate that in my texture.)
I don’t have much screenshot of me doing the texture as I simply applied the file on a lambert type material and rotate the UVs until it looked ok. At this point I was in a rather rush for time hence I didn’t use methods in Maya such as editing UVs or other Maya-based techniques to do the texture. Instead I edited outside of Maya environment using Photoshop hence in this aspect I felt that I have failed.
Never the less I felt that overall I did all right, the final image of the wooden sword is shown here below. Overall I felt that I had a better understanding of vertex manipulation after this project (especially since I literally spend a few days manipulating vertex while making the blade!!!). However I felt that even though I felt that I had a better understanding of which vertexes to manipulate to reach my ideal shape, I also know that there are better methods out there rather than doing it vertex by vertex as my method is non-practical in terms of time & efficiency.
![]() |
| (Finished Blade) :D |
Subscribe to:
Comments (Atom)






























