Showreel Animatic

Standard

This is the animatic for my showreel piece. It’s animation showreel that involves several key animation skills such as walk cycles, body mechanics, pantomime and lip syncing. There is a story to my showreel as I thought the best way to intrigue people to watch it and have them enjoy it was to make it a post apocalyptic musical number which I have appropriately named Apocalypse Wow. There is still plenty more work to be done with the animation as I have only placed the key poses in so far to tell the story. 

Pantomime Animation

Standard

This is the animation piece I created for my animation class. The story shows a “tough” guy looking at a photo of his long lost love and breaking down and crying. The animation went through several different stages that involved me filming myself as well as searching on the internet for references.

Once the references were set up and the idea was strong in my head, I began to block out the poses. I found it difficult to create emotion in a piece that required subtle movement throughout the body. I didn’t want to block out the face as I wanted to save that to the polishing stage as I knew that it would the most difficult part of the animation.

In the polishing stage, I made the movements even more subtle to really sell the believability of the animation. I made the character’s body move around less vigorously and broke up parts of the body so that they would overlap and move more fluent and not appear unnatural. I finished with the face as this was what gave the pantomime life. I added in eye darts, lip quivering and several blinks to show emotion through the face. It does need tweaking in some places here and there but over all I am very happy with the end result.

Dynamics – Week 15 Progress Review

Standard

Much has changed for my tractor beam since the week 8 review. My feedback for it was helpful in knowing how to achieve and improve the look. I therefore went back to looking for references, including video references, as images could not give a strong overall idea of what I was looking for.

I found a number of great references from movies as well as games that helped me grab an idea of what I wanted. Films such as “This is the End” and games like “Skyrim” had excellent uses of tractor beams and particles that I liked.

(1 minute 12 seconds)

What I particularly like about this reference is the solid beam lifting people up into the air. The plan is to create an initial beam that will lift the mannequin up into the UFO. I however, don’t want the beam to be made completely out of light (this assignment is about using dynamics). Instead I want to create a beam that would simulate this look but by using long streak particles.

I decided to also have particles spiral up from the ground once the beam touches the ground. This was inspired by the UFO liftoff in Indiana Jones 4. The rocks that spin around the ship were a great reference for the look that could add a new twist to the look of my tractor beam.

ufo2

Next, I created 3 tentacles that wave out of control. This was to appear as a sort of spill from the tractor beam implying that the UFO wasn’t completely in control of how the beam behaved. I originally had the tentacle arms flailing around quickly but I preferred the gentle movement so I kept it that way. Also added an emitter on the ground with a vortex field attached to it. This was to further add effect to the particles spinning up from the ground. This was done to imply that the tractor beam had a large effect on its surroundings. I also added some goal particles to the mannequin. After a few different tests, I settled on the particles that rushed violently at the mannequin. I enjoyed watching the juxtaposition of the slow, calm movements of the tractor beams and the whip like movements of the gaol particles.

The final part I added to the tractor beam was the influence from the video game “Skyrim”.

(1 minute 56 seconds)

I particularly enjoyed the way the beam wrapped itself around the character. I took this idea and applied to my tractor beam. Instead of having it wrap around the mannequin, I decided to have it wrap around the main beam. Out of accident, I made the wraparound beams slowly drop from the curves. I liked the way they gently and slowly fell. As this reflected the nature of the rest of the beam I decided to keep it.

 

The heat plume was another difficulty I faced. I originally had it emitting from the main beam but after suggestions from several classmates, I decided to create several heat plumes and have them emit from the exhausts of the UFO. This had a far greater look than what I was initially going for. I am overall not entirely pleased with the movements of the heat plume but unfortunately I had ran out of time to work on it.

Another problem I faced was the movement of the mannequin. Using rigid bodies I was able to make it float up. However, using the constraints was a challenge as it took several goes to get the right constraints in the right spots. The mannequin still had several problems after that. After several test renders, I could see that the mannequin jumped all over the screen and despite testing several different fields, I couldn’t make it work. Unfortunately I could not resolve this and therefore ran out of time working on this problem.

 

Overall, I am pleased with the look of my tractor beam. The use of both aggressive and clam movements made my tractor beam feel natural and uncontrollable. I thoroughly enjoyed working on it. I wish I had spent more time working on the heat plume and mannequin as I feel that more work could have been done to make them work properly but unfortunately, time is an issue in this field.

 

Programming – Critical Reflection

Standard

When I first started looking at ideas for a script, I wanted to create a script that would allow me to copy any sort of animation from one character to a completely different character. However, this idea seemed a bit to ambitious especially for someone like myself who cannot quite grasp programming. I admit I have had difficulty understating MEL and I do not think I will ever be able to grasp basics of the subject but I gave myself a chance to create something even if it was extremely basic.

After much consideration, I decided to downplay my original idea of transferring animation attributes so that it worked on a simple copy and paste basis.  I started with what I knew I could do by building a window that had three basic buttons. The first would select the animated object, the second would select the unanimated object and the final button would transfer the animated keys from the source to its target. Once this was done, the difficult part of writing the script began to surface. I have had difficulty understanding where to place procs and strings as well as the use of a global proc. Procs or “Procedures are often defined by putting them in MEL files in the script path, usually in your maya/scripts directory.  Then, either the procedure is defined when you use the source command to load the MEL file, or the file is sourced automatically if (and only if) certain conditions explained below are met”[1]. Strings “can be used to store names of objects, text to be printed, characters that the user has typed, MEL or expression code”[2]. I had to look at several other examples of scripts before I could begin to understand their use.

The most difficult part was finding a way for the script to copy the keyed channels from the source to the target. Vince was excellent help here as he wasn’t even sure what command was needed for this to work. With some assistance from several members of the class, it was identified that a string was needed to list the connections of the channel from the source so that they could be copied over.

Knowing which commands to use also proved to be quite daunting on my behalf.  All the tools are laid out in front of you, it is just difficult to choose the right one and in my case there was only one command that would allow me to locate the keys within the source’s channel. This proved to be the most difficult part of the script that was already proving to be too difficult, even though the end result seemed simple to me at first.

Overall I am happy with the results of my script and the knowledge I gained from building it. If it were not for Vince, I would still be stuck at step one of planning the script. I feel I learnt the basics needed to build my own independent MEL script. If I were to attempt this again, I would provide myself with a more complex challenge that involved transferring animation from one rig to another.


[1] Local and Global Variables, Mark R. Wilkins, accessed 7/11/13, last modified  2003 <http://www.melscripting.com/tutorial_1.html&gt;

[2] MEL Scripting for Maya Animators Second Edition, Mark R. Wilkins & Chris Kazmier, Morgan Kaufman Publisher, chapter 6, page 130, Variables and Data Types

Animation Transfer MEL Script

Standard

This is the MEL script for my animation transfer.  The script allows one animated object (the source) to be transferred to another unanimated object (the target). The script is simple as it only works with simple objects within Maya. You must select the animated object first then select the “Select Animation Source” button. Next, Select the unanimated object and select the “Select Animation Target” button. Finally, hit the “Copy Keys” button. This will transfer the animated keys from the source to the target. 

/*Author: Mark Tomczyk
Title: Animation Transfer
Description: This mel script transfers animation keyframes from one animated object to an unanimated object. The GUI window allows the user to select the source’s keyed channels and transfer the animation keyframes to the target.
*/

//Create a proc for the source
proc aTSelectSource()
{
//Create a global string that recognises the source
global string $mTomczyksource[];
//Create a string that selects the source
string $mTomczyksource[] = `ls -sl`;
}

//Create a proc for the target
proc aTSelectTarget()
{
//Create a global string that recognises the target
global string $mTomczyktarget[];
//Create a string that selects the target
string $mTomczyktarget[] = `ls -sl`;
}

//Create a proc to store the source and target to copy the keys
proc aTCopyKeys()
{
//Place the global strings within the proc so that they are recognised
global string $mTomczyksource[];
global string $mTomczyktarget[];

//Create a string that recognises object’s channels that have been keyed
string $channels[] = `listAttr -keyable $mTomczyksource[0]`;

//This tells the target object to look for the channels of the source object
for ($channel=0; $channel < size($channels); $channel++)

{
//Create a string that lists the channels that have been keyed in the source
string $outpNode[] = `listConnections -d true ($mTomczyksource[0] + “.” + $channels[$channel])`;

//Create an if statement that will ignore and pass through any channels that are not keyed in the source
if ($outpNode[0] != “”)
{
//Create an if statement that will copy any keyed channels that are found in the soucre and paste them to the target
if (`objectType $outpNode[0]` == “animCurveTL”)

copyKey -attribute $channels[$channel] -option curve $mTomczyksource[0];
pasteKey -attribute $channels[$channel] -option replaceCompletely $mTomczyktarget[0];
}
}
}

 

//Window Selection
if (`window -exists aTwin`) //Test if a window exists with teh ELF name aTwin
deleteUI -window aTwin; //If test is true delete the window with the ELF name aTwin

//Create a window with the title “Animation Transfer by M.Tomczyk”
window -title “Animation Transfer by M.Tomczyk”
//Create a minimize button
-minimizeButton true
//Create a maximize button
-maximizeButton true
//The window cannot be resized
-sizeable true
aTwin;

//This is a column layout with the ELF name clmLyt1
columnLayout
clmLyt1;
//This is a frame layout with a width of 500 pixals
frameLayout -width 500
//Create a label called “Select Source”
-label “Select Source”
//ELF name for the first frame layout
frmLyt1;

//Create a string with a button lebelled “Select Animation Source” with a command that performs the proc “aTSelectSource”
string $selBttn1 = `button -label “Select Animation Source” -command aTSelectSource`;

//Create a second frame layout with a width of 500 pixals
frameLayout -width 500
//Create a label called “Select Target”
-label “Select Target”
//ELF name for the second frame layout
frmLyt2;
//Create a string with a button lebelled “Select Animation Target” with a command that performs the proc “aTSelectTarget”
string $selBttn2 = `button -label “Select Animation Target” -command aTSelectTarget`;

//Create a third frame layout with a width of 500 pixals
frameLayout -width 500
//Create a label called “Copy Animation”
-label “Copy Animation”
//ELF name for the third frame layout
frmLyt3;
//Create a string with a button lebelled “Copy Keys” with a command that performs the proc “aTCopyKeys”
string $CopyBttn1 = `button -label “Copy Keys” -command aTCopyKeys`;
//Shows window
showWindow aTwin;

Script Overview – Animation Transfer

Standard

The script I am looked to create was one that deals with animation. The script allows one animated object’s keys to be transferred to another unanimated object. This will only work with basic objects. Nothing too complex. This is a simple script as mel scripting is not my strongest aspect of 3D. The main reason I chose something like this was to develop my understanding of animation from a scripting point of view and to allow the user to quickly transfer an entire animation from one object to another with ease. The copy and paste attribute in Maya exists, however it is only possible only with individual channels. My script however will take into account all the channels of an animated object and transfer them to an unanimated object. This allows my script to make it possible to move keys from a source to a target quickly an easily. This script works well on a basic level as it can work with any simple shapes or objects. This means it can be used to animate a number of different objects and be highly effective. The window will allow the user to select an animated object then its target object and transfer all its animated attributes and keys through its channel box. The window will consist of only three buttons. A select source button, which will select the source/animated object. A select target button, which will select the target/unanimated object and a copy, which will transfer all the keys from the source object to the target object.

Tractor Beam Progress – Week 9

Standard

I started this progress by looking up certain images for inspiration. After searching for some time, I settled on an image of a lightening strike. The image to me could appear as an uncontrollable beam coming down with several thinner beams spiralling down around the main beam. Using this as my main source of inspiration, I went about recreating this look in Maya.

Lightening Tractor Beam

First, I decided to work on the outer beam which would spiral uncontrollably around the main beam. This was done using a omni particle emitter with a gravity, turbulence and vortex field assigned to it. The vortex helped create the spiralling effect that I was going for. However this proved to be a bit difficult to time right with the UFO landing and then leaving.

Originally the particles moved in a graceful downward spiral, but this quickly changed and the particles then took on a more downward and upward motion to animate with the ship. This was done using the gravity field, which would abruptly change when the wooden man was picked up.

 

Next was to create the main beam. This was far simpler than the outer beam as the previz template was there to help me design this beam. Using another omni emitter and a gravity field, I was able to mimic the beam created in the previz using particles. However the problem I had here was that the particles would move through the top of the spaceship once the wooden man was sucked up. I therefore hid a polygon plane inside the ship and selected the particles that were passing through and selected “make collide”. This prevented the particles moving in a manner that I did not want them to.

 

I then made the wooden man a rigid body and attached him to a gravity field so he got sucked up the tractor beam. I could get the constraints working properly to achieve the ragdoll effect. So I left it for the time being so I wouldn’t stress about it too much. It will be something I hope to work heavily on later.

 

Next was to add textures to everything including the particles. I gave the inner beam a simple green colour and the outer beam a dark blue. As a final part to add to the beam, I created a cylinder that would represent a heatwave effect. Soft bodies and a turbulence field were added to them to create the waving effect of the heat. An mia material was then assigned to the polygon and was then made translucent so it would be clear.

The final result is not the finished work. Plenty more time needs to be spent working on the rendering of the particles not to mention the rigid bodies of the wooden man. Besides these set backs, I am happy with the overall look of the tractor beam. I am happy with the way the inner beam is particularly aggressive and violent when it comes down and when it goes back up. The outer beam could have more of a spiralling effect, but that can be fixed in the future.

Despite needing plenty more work, the tractor beam is beginning to take the shape that I intended it to.

Dynamics – Week 7

Standard

This weeks homework was to begin working on our assignments. I looked around on the internet for images of tractor beams. After a while I began searching lightning storms and found an excellent photograph of a lightning strike. It looked very much like a tractor beam with several small lightning strikes surrounding the larger “beam” which appeared like arms reaching out for something.

Lightening Tractor Beam

I then started experimenting tractor beam looks by playing around in maya attempting to create a heat wave. I achieved this by creating a polygon cone and adding soft bodies to it. Next I created a turbulence field and assigned it to the particles. However,  the field polygon cone was moving far too aggressively. I wanted to create a relaxed gentle motion that made it looked like an actual heat wave. A few expressions were added into the magnitude and the phase X, Y and Z so that the turbulence field allowed the geometry to react in a gentle manner.

Next, I just simply played around with particle emitters and fields. I wanted to go for a look in which the particles would spiral around in a swooping motion whilst also moving down, slowly at first but then more quickly. This was done using a volume emitter with a gravity and turbulence field. An expression was placed into the X and Z direction in the gravity field to get that sweeping, swirling motion. Another expression was placed into the magnitude so that that particles moved more quickly over time. The results created a particle effect with a motion that I’m happy with.