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: