Sunday, February 26, 2012

Project: Blocking and Final Animation

This is a playblast video of the blocking of my animation:

 
I was rather thorough with the blocking, hence the blocking animation itself more or less resemble the final animation. Blocking was really helpful in that it practically shows how some the poses I planned for the animation will play out, especially when I change the graph editor to include transitions. Ultimately, I only had to add in facial animation and a few fine-tuning since I put so much effort on the blocking. Here's a playblast video of it:


Making the final animation was rather quick and simple enough. Adding in the facial animation was a bit more tedious than blocking but fun nonetheless, especially since I have complete control over his expressions. I had issues dealing with the weighting of the movements, since the character was moving so fast. Sometimes, these problems go unnoticed but I was able to fix them eventually. Ultimately, I am proud and rather satisfied with my final animation.

Project: Storyboard

Here are some photos of my group's final storyboard:











I must say, making the storyboard helped in facilitating the making of the animations, not only for myself but also for my partner. This is because the storyboard basically shows how our characters would interact and how our animations would roughly look like, even if the final animation may not be exactly the same.

This was how our first storyboard looked like:

Sunday, February 5, 2012

Week 4: Exercise 5

 
1.       Imagine you are creating a scene where a car drives along a straight road, but swerves around at random as if the driver is drunk. Do you think it would be useful to know how to program using MEL when creating this scene? Explain.

 Yes I believe so. If we manually animate the car swerving, it will appear unnatural as the intended effect is supposed to be random and animation makes use of curves, which make the animation appear stiff or too unnatural; impossible to make it seem realistic. Using MEL script, we can randomize the swerve and this can even be achieved without much effort. We can even make the car interact with pedestrians or other cars unfortunate enough to be in its path.


2.       For the drunken car scene, give TWO advantages and disadvantages (pros and cons) of using scripting to create the swerving car animation.

 Using scripting to make the scene allows the car to move more naturally as the randomizing of the movement allows for swerve to be unpredictable. Another advantage is that limitations can be set to the car's movement so that it won't cross a certain boundary, such as outside the street or a building.

A disadvantage though is that the car will not return to its initial position when returning the timeline back to frame 1. In fact, it will cause the car to move even further down its path. This can be troublesome and potentially project-breaking as the car may be hard to find if neglected. Also, even with the randomize effect, the car may turn too quickly, making it appear jittery rather than swerving. Swerving is more easily accomplished with animation, although more time-consuming and less natural.


3.       You might think that programming using MEL is similar to using ALICE (in Year 1). It is actually very different. Explain TWO of the main differences, as far as you can tell.

Alice is much more object oriented, even more so that Maya, in that all the models, scripts and categorization is already provided. However, unlike MEL, Alice merely allows us to mess around with the models and built-in scripts while MEL lets us modify the attributes and even allows us to create scenes, such as a zombie apocalypse or a drunken driver. Another difference is that MEL is far more advanced and it is meant for users familiar with scripting in general. Alice serves as a form of introduction to scripting and makes use of proper English to better facilitate this. 
Conclusion
To conclude this, I have to say that this week is by far the most interesting and innovating week as I am exposed to MEL scripting for the first time. I learned a great deal and I honestly had fun watching the zombie apocalypse play out. It makes me interested to make my own scene using MEL scripting. Overall, this week was fun.

Week 4: Exercise 4

This is a screenshot of 5 curves/shapes created using the Comet menu:





I know well enough that creating these shapes and ensuring that they are selected as one shape, not as individual lines, is rather hard (as I came across that kind of problem with rigging lessons back in 3DVA). This lessons shows that making the curves can be simplified by downloading and installing scripts from the internet. Not to mention that the shapes were rather neat and useful as control curves. I will go back to the Comet menu should I have need of rigging my own model.

Week 4: Exercise 2 & 3

Following the lesson, I was able to create the custom Zombiemaker window, well, to a certain extent. These are the codes used:

**********

if (`window -ex zmkr_win`) deleteUI zmkr_win;//eliminates previously made window

window -wh 200 75 -t "Zombiemaker" zmkr_win; //creates the window

columnLayout -adj true;//this holds the following buttons and textboxes

int $randNumber = 0;//this variable will hold the random number made

$txt_box = `textField -editable 1 -width 400 -text $randNumber`; //this creates the textbox using the above variable as the textbox's content

button -l "Random" -c "$randNumber = rand(1, 50); $txt_box = `textField -editable 1 -width 400 -text $randNumber`;"; //this is the first button, with display Random. The command will generate a random number, place it in the variable randNumber and place it on the new textfield

button -l "Create" -c "z_spawn($randNumber)"; //this is the second button and triggers the z_spawn procedure when clicked. Note that randNumber was thrown into the procedure.

showWindow zmkr_win;//this simply shows the window

proc z_spawn(int $a)//this procedure will spawn zombies based on the randNumber variable as $a.
{
int $num_zombies = $a; //$a will then be thrown into the num_zombies variable
string $all_characters[] = `ls -tr "zombie*"`; //This selects all currently existing zombies
if (size($all_characters)) delete $all_characters;//and deletes them
for ($i = 0; $i < $num_zombies; $i++)//this creates zombies based on the variable number
{
string $new_zombie[] = `duplicate -rr -un -n "zombie#" original_zombie_GRP`;//duplicate the zombie
setAttr ($new_zombie[0] + ".v") true;//set its visibility to 1 so that it is not hidden
float $randx = rand(-1120,1120);
float $randz = rand(-1120,1120);//create two variables to hold a pair of randomized spawn coordinates
move $randx 0 $randz $new_zombie[0];//and spawn it randomly across the coordinates
}
};

**********

And here are screenshots of the window in action. The first is a general screenshot of the menu:
A textbox is provided and the user is allowed to insert the amount of zombies they wish to spawn in the box. However, I failed to achieve that so currently, the textbox allows user to input numbers with no effect at all. The buttons, though, work as intended and here are screenshots of it:




This after the Random button was clicked. It work as intended: A random number generated and placed in a textbox. However, it generated a NEW textbox rather than editing the old one. Hence, constantly clicking the button will flood the menu and only the last textbox is legit. Now, here's the Create button:



The Create button works perfectly and the number of zombie generated (28 in this case) is spawned as is the number generated.

This exercise showed me some possibilities of Maya through the use of MEL scripting and the Expression Editor. It is rather interesting and fun as we can generate our own scene, like this zombie apocalypse, simple through the use of codes. The tutorial itself is very thorough, hence this was not a hard exercise, except for making the Zombiemaker window.

Week 4: Exercise 1

Here's a screenshot of my rendered cube lit with the 3-point light effects:


Making this was fairly straightforward, although I had difficulty understanding about saving scripts and using them in the future by saving the script on the shelf. Nonetheless, I was able to catch on and did it.

Following that, here's a playblast of the barrels falling using gravity. Quality was reduced as the server keeps insisting on rejecting the original file:


I'll be honest; I didn't know that such a thing is possible to do in Maya. I always thought that such effects are accomplished through actual animating. Now I can see how gravity effects are produced in most video games, well, assuming that animation was not already used to accomplish such effects. Not to mention how quick and simple it is to achieve this and that is installed or built-in MEL scripts.

And finally, here's the video of my pyramid rolling around with help from a custom UI. Note that since animating it rolling even with the UI is nigh impossible, I resorted to using FRAPS to record the pyramid rolling:


Creating a window using MEL scripting is deceptively hard due to the large number of codes involved and from the fact that I am new to MEL scripting. However, after going through the lesson, I realize it has several similarities with ActionScript and after a while, it came naturally to me.

I did, however, had a bit of problem rolling the pyramid. When I moved the pyramid, it did not roll and had me stress out for a while. But, I came to realize that I did not read an important part of the lesson: The frame must be greater than 1 for the effect to take place...and my frame was set at 1. I literally slapped myself in the forehead for being stupid and lazy. Hence, lesson learned. Fixed it and I sighed with relief. What an interesting moment it was.

Thursday, January 26, 2012

Week 2: Exercise 2

I decided to use the Joe rig. Due to how the rig is modeled, no modifications will be made to the expression. This is the blocking:


And this is with transition. Note that the keyframes are the same, hence clipping is expected:

 

Doing the blocking of the animation is rather hard as I only got a one-sided view of myself rather than the typical top-front-side view. Hence, I had to rely heavily on my own imagination and my understanding of weight shifting, along with knowing how I might stand during the scene. Several limitations on the rig, such as his very short arms, hindered my attempts slightly but alas, I was able to finish it. The following are screenshots of the keyposes the animation is based on:







Saturday, January 21, 2012

Week 2: Exercise 1b

I chose to do the sole sound file taken from Get Smart. Due to the sarcasm and calmness behind the voice, I tried to appear rather sleazy and a bit restless.

Extra Works

These are some extra works that I do in my spare time. This post will be continuously updated as I do more extra works.

 
The above video is me adding in phonemes to the Morpheus rig (since it lacks phonemes to begin with).

Week 2: Exercise 1a

My group chose the Godfather scene where McCluskey assaults Michael hard enough to cause him to fall to the ground. I play as Michael, who the camera mostly focuses on.


This was right at the beginning of the scene. Jing Hong, who acted as McCluskey, was standing a rather threatening pose. This can seen as his chest was forward and his fists clenched and backwards. This implies hostility and possibly anger. I was standing in a neutral pose, showing that I may not notice what was coming and was not angry in any way.


This is moments before I got hit by Jing Hong. Despite the smile on Jing Hong's face, the movement of the punch was fast as can be seen in the motion blur on his fist. This implies anger. His pose also shows him throwing himself forward to put as much force in his fist as possible, once again showing anger or his willingness to punch. My hands rose in a shocked attempt to block or dodge the punch, although I was ultimately too slow as the scene requires that I get hit.



This was right after I got hit. Jing Hong's fist does not stop moving as it overshoots and was decelerating. His shoulder was pushed forward by the force he used on the punch. His body relaxed slightly from the punch as it appeared less threatening. I was forced into the direction that his fist moved and held on to my jaw, which was hit. Holding on to my jaw after such a punch shows pain.
This was moments after the previous keypose. Jing Hong's stature starts to relax while I was beginning to tense up. This can be seen as my pose in this screenshot (in which I was bending) differs greatly from the previous one (in which I was mostly standing almost straight). My bent down position, with my hands still on my jaw, shows that the pain was probably unbearable and my free hand was clenched, showing that I may be trying to resist the pain.
In this scene, I attempted to stand despite the pain, as can be seen with my free hand still clenched, my hunched body and my hand still on my jaw. I was also looking up to Jing Hong and staring at him, apparently not happy with what he did. Though hard to see, I was showing an angry expression to show hostility. My body was angling backwards as I began to lose balance, showing that I may be losing consciousness. Jing Hong appears much less threatening and more relaxed than the previous screenshots as he was done punching me. This can be see with his body straightening up and his arms not longer clenched.
In this final screenshot, I have fallen from my previous position as I was lying on the ground rather than standing. I haven't lost consciousness fully however, as my hand was still holding on to my jaw. The rest of my limbs were limp, implying my lack of strength to stand up. I was not looking at Jing Hong anymore, probably showing that I was too exhausted or angry to look up to him.

Here's the original video where these screenshots were taken from:

Tuesday, January 17, 2012

Week 1: Exercise 3

1.       Does a blendshape require the base mesh and the target mesh to have the same number of vertices? Explain your answer, with reference to how blendshapes actually work.

      Yes. Blandshapes involve a polygon morphing into the same shape as the target polygon and hence, any difference in the number of vertices could cause unwanted distortion as the base polygon attempts to form into the target polygon's shape. More often than not, blendshapes normally involve a modified target polygon duplicated from the base.

2.       Can blendshapes only be used for facial animation? If not, prove it! Animate something and post it on your  blog.

    No. It can also be used for making squash and stretches and actual animation  otherwise accomplished through the more thorough but more tedious rigging. Here's a prove:


3.       If you want a character to look angry, you might decide to create a target mesh of the character's head and then modify it to have an angry expression. This is NOT how it should be done. Why not? And what would be a better approach? (Hint: you want to give the animator as much freedom as possible.)

     If the target mesh is set to appear angry, it limits the expression of the character to just neutral and angry. Also, there are many different levels of anger and when set to one level, the other levels won't be possible, such as a mesh set to appear annoyed but unable to appear mad. A much better approach would be to blendshape the different movable parts of the face to move in different directions. For example, an eyebrow can be made to move up for one target mesh while another sets the same eyebrow to be able to slant downwards to appear angry. With each parts moving individually, all kinds of expression can be made, not just anger.

Week 1: Exercise 2a and 2b

This is the results after going through the tutorial:



Learning about blend shape deformers is a bit confusing for a while but after re-reading the tutorial a few times, I begin to understand it and I even managed to somewhat remember the steps required to do blend shapes. In the end, I thought it was straightforward and potentially less tedious than rigging, though limited. The animating confuses me for a while as I can't see the keyframe on the time slider, only for me to find out that the keyframe is on the blend shape node.

After that, I made another expression as we were tasked to. I made the model wink through blend shape so here's the result:


Making a wink is actually easier and faster than a smile or raising the brow because the entire eyelid, which was easy to select, moves and very little editing on the cluster weight was needed. In the end, it turned out the way I want it to.

Week 1: Exercise 1b

Week 1: Exercise 1a

This is my animation of Boris saying the line, "You don't know the power of the dark side.".


Making this animation was surprisingly fun and fairly straightforward for me as I spend a lot of my video gaming time looking at the mouth movements of characters during cutscenes. I've always been fascinated by mouth movements in 3D models for some reason and I guess all that staring may have paid off. The only difficulty I face was making the animation appear realistic and not robot-like, which I overcome by creating arcs through the graph editor or by making the model twitch slightly and slowly in "idle" parts.