Tuesday, 21 January 2014

The Nut Job doing well!

Critics may have slammed the film, but audiences still packed the theatres during the opening weekend. To the surprise of many people The Nut Job pulled in a very respectable 25M over the long weekend and is predicted to be Open Road's biggest grossing film!
Thankfully even those who criticized the film's script still took the time to praise the animation. I'm thrilled to have been a part of the team and it was a strange and awesome feeling to watch my name roll along the screen during the credits.

Tuesday, 29 October 2013

Jerry Can model

My second attempt at modeling, this time it was more complex than a bottle cap.
Once again I followed a tutorial series from Simply Maya and I must say I learned an awful lot again.
Thus far I'm quite enjoying the learning process. It's great to have something other than character animating to do to keep my creative juices flowing. I'm currently modeling several set props for my short film which we still hope to have updates for shortly.

Friday, 4 October 2013

Starting to model

As I mentioned recently I am going to start trying to learn how to model. As someone who is NOT an artist, this is quite daunting. However, if I want to save money on my short film I have to learn to do more than just animate. Besides, it's always good to have multiple skill sets as it can often come in handy in small studio environments.

Following along with one of the free tutorials at Simply Maya I modeled a bottle cap! While it may not be a complex object to model I still learned a lot about extruding, the insert edge loop tool, beveling an edge and how to make sure each edge is tight so it smooths correctly. I had an idea how to do some of these things, but I picked up a lot of little tricks. So here it is. I also took at stab at modeling a jerry can which turned out fairly well and now I am modeling a Spitfire Airoplane with Nurbs surfaces. So far it's all very exciting!


Monday, 30 September 2013

The Nut Job trailer

So the first teaser trailer for The Nut Job, my first ever feature film, has been released. Unfortunately Open Road didn't do a great job with the teaser and it has received mixed reviews so far. What I can say with certainty is that the movie is better than the trailer. I'm really hoping that whenever they release a second one it showcases more of the films qualities and personality.

http://www.youtube.com/watch?v=pcRk0zfGlnU

Wednesday, 18 September 2013

Getting into Modeling

So I've decided to dip my feet into the intimidating world of 3D modeling. Let me start by saying that I am no artist. My drawing abilities peak at crude stick figures I'm afraid. This desire to tackle modeling has been instigated by the short film that I'm working on. I've quickly come to realize that when you're working on a film with little to no budget, you need to learn to do as many things as possible by yourself, rather than relying on others. I've scoured the web searching for some cheap, educational options for learning the trade and in that search I discovered Simply Maya.
 They have a series of free tutorials on everything from rendering to modeling. They also appear to have countless hours of tutorials that require payment but that are still very cheap. I'll post some updates right here and hopefully I'll start to see improvements in my work. My goal is to be able to model a lot of the props for the film myself!

Saturday, 7 September 2013

Spark!

Once again it's been a little while since my last post. I had about six weeks off after production on The Nut Job wrapped up and I must say that I took advantage of having a free summer!

But now things are back up and running and I've started work at ToonBox again for my second feature film entitled "Spark". Once again I get to be part of a fantastic team of animators and my education continues as I'm learning every day.

Things are also progressing on our short film which, so far, nobody really knows anything about.
We haven't posted anything online yet as we're trying to keep the details as under wraps as possible.
However we hope to start showing the animation community what we're doing very shortly. Character designs are nearly complete and from there we will finally get our main character modeled and rigged. It's been a slow but exciting process so far and I must confess that I think about the film constantly. We believe that the story has real potential and with the crew that we've assembled so far I know that the quality of the film production will match the story. I can't wait to start sharing our film with everyone and hopefully recruit more talent to help us bring it to life!
We plan on creating a blog specifically for the film so more details on that to come shortly!

Thursday, 1 August 2013

Commerical work

This is a spot I recently completed for Chuck Gammage Animation in Hamilton, ON. I just noticed that the commercial had aired yesterday so I wanted to share it on my blog. Note: I was only responsible for the Honey Bee animation at the end. The animation was freelance work and most of it was done using my laptop on the GO train to and from Toronto. Not the best environment for creating quality animation and I'm not thrilled with the final piece, but overall I think it turned out okay.

Tuesday, 23 July 2013

Tangent cleaner

This is an excellent script that I use every time that I animate a shot. It is essentially an improved, smarter version of the auto tangent available in recent versions of Maya. Simply paste this script in to your script editor and add it to your shelf. The only glitch is that it doesn't work directly from stepped mode. You have to convert your curves to spline first, and then run this script. It does a lot of work for you and you will find that if you use this script constantly to smooth out your curves, you will spend less time in the graph editor.

//This script smoothes animation key tangents.
//Copyright Nathan Tungseth.

// Declare procedures:

proc float shallower(float $value1, float $value2)
{return ( abs($value1) < abs($value2) ) ? ($value1) : ($value2);}

proc float steeper(float $value1, float $value2)
{return ( abs($value1) > abs($value2) ) ? ($value1) : ($value2);}

global proc trdprty_tungsethTangent()
{
// Declare variables:
int $numberofcurves; int $c; string $curve; int $I;
int $selectedindexes; int $totalindexes;
int $start; int $end;
string $tanType; string $step; int $locked;
int $i[5]; float $x[5]; float $y[5]; float $m[4];
//string $before; string $keynode; string $after;
int $sign[4]; int $node;
float $ix; float $ox;
float $inSmooth; float $outSmooth; float $inlimit; float $outlimit;
float $inSlope; float $outSlope; float $inAngle; float $outAngle;
int $locked; int $weighted; int $weightlock; float $inweight; float $outweight;
float $smooth; float $limit;
float $slope; float $angle;

waitCursor -state on; // make a nice wait cursor icon while it works...-comet

// Outer loop goes through selected curves, one at a time.
string $curves[] = `keyframe -q -sl -name`;
$numberofcurves = `size ($curves)`;
for ($c = 0; $c < $numberofcurves; $c = $c + 1)
{

// Inner loop goes through selected keys, one at a time.
$curve = $curves[$c];
int $selectedindexes[] = `keyframe -query -sl -iv $curve`;
$totalindexes = `keyframe -q -kc $curve`;
$numberofselectedindexes = `size ($selectedindexes)`;
for ($I = 0; $I < $numberofselectedindexes; $I = $I + 1)
{

// Determine index value of current key (2) and four neighbors (0,1,3,4).
$i[2] = $selectedindexes[$I];
$i = {$i[2] - 2, $i[2] - 1, $i[2], $i[2] + 1, $i[2] + 2};

//if tangency type is not "step", do the following.
string $tanTypes[] = `keyTangent -in $i[2] -q -ott $curve`; $tanType = $tanTypes[0];
$step = "step";
if ($tanType != $step)
{

// Loop to determine x and y positions of five keys (time and value of each).
$start = (`max 0 (2 - $i[2])`);
$end = (`min 5 (2 + $totalindexes - $i[2])`);
for ($p = $start; $p < $end; $p = $p + 1)
{
float $X[] = `keyframe -in $i[$p] -query -tc $curve`; $x[$p] = $X[0];
float $Y[] = `keyframe -in $i[$p] -query -vc $curve`; $y[$p] = $Y[0];
}

// Calculate four slopes between the keys (0,1,2,3).
for ($p = 0; $p < 4; $p = $p + 1)
{
if ($p < $start || $p > ($end - 2))
{$m[$p] = 0.0;}
else {$m[$p] = ($y[($p + 1)] - $y[$p])/($x[($p + 1)] - $x[$p]);}
}

// Are there nodes? Check sign (+,0,-) for the 3 slope changes.

$sign[0] = ($m[1] - $m[0] == 0.0) ? ($sign[0] = 0) : (($m[1] - $m[0])/(abs($m[1] - $m[0])));
$sign[1] = ($m[2] - $m[0] == 0.0) ? ($sign[1] = 0) : (($m[2] - $m[0])/(abs($m[2] - $m[0])));
$sign[2] = ($m[3] - $m[1] == 0.0) ? ($sign[2] = 0) : (($m[3] - $m[1])/(abs($m[3] - $m[1])));
$sign[3] = ($m[3] - $m[2] == 0.0) ? ($sign[3] = 0) : (($m[3] - $m[2])/(abs($m[3] - $m[2])));

if (($sign[0] * $sign[1] >= 0) &&
($sign[2] * $sign[3] >= 0) &&
($sign[0] * $sign[3] <= 0))

{$node = true;
$inSmooth = ( $m[1] + ( ($m[1] - $m[0]) / 2.0 ) );
$outSmooth = ( $m[2] + ( ($m[2] - $m[3]) / 2.0 ) );}

else {$node = false;
$inSmooth = $m[1];
$outSmooth = $m[2];}

//as long as tangent is locked (handles move together), combine the two slope values into one.
//Exception: if weights are free and also broken, treat angle as unified.

int $Weighted[] = `keyTangent -q -wt $curve`; $weighted = $Weighted[0];
if ($weighted == true)
{
float $oldIx[] = `keyTangent -in $i[2] -query -ix $curve`; $ix = ($oldIx[0] * 10.0);
float $oldOx[] = `keyTangent -in $i[2] -query -ox $curve`; $ox = ($oldOx[0] * 10.0);
}
int $Weightlock[] = `keyTangent -in $i[2] -q -weightLock $curve`; $weightlock = $Weightlock[0];
int $Locked[] = `keyTangent -in $i[2] -q -lock $curve`; $locked = $Locked[0];
if (($locked == true) || ($weightlock == false))
{
$smooth = (($inSmooth + $outSmooth)/2.0);
$smooth = ($node == true) ? (shallower($smooth,(shallower((2.0*$inSmooth),(2.0*$outSmooth))))) : ($smooth);
$inlimit = ( ( $smooth * $m[1] ) < 0 ) ? ( 0 ) : ( 3.0 * $m[1] );
$outlimit = ( ( $smooth * $m[2] ) < 0 ) ? ( 0 ) : ( 3.0 * $m[2] );
$limit = ( shallower( $inlimit, $outlimit ) );
$slope = ( shallower( $smooth, $limit ) );

//Correct overshoot for weighted curves.
if ($weighted == true)
{$slope = shallower($slope,(shallower((($y[2]-$y[1])/$ix),(($y[3]-$y[2])/$ox))));}
else {$slope = $slope;}

$inSlope = $slope;
$outSlope = $slope;
if ($locked == true)
{
keyTangent -in $i[2] -lock false $curve; // Temporarily unlock tangent.
}
}
else
{
$inlimit = ( ( $inSmooth * $m[1] ) < 0 ) ? ( 0 ) : ( 3 * $m[1] );
$outlimit = ( ( $outSmooth * $m[2] ) < 0 ) ? ( 0 ) : ( 3 * $m[2] );
$inSlope = ( shallower( $inSmooth, $inlimit ) );
$outSlope = ( shallower( $outSmooth, $outlimit ) );
}

$inAngle = atand ($inSlope);
$outAngle = atand ($outSlope);

// If curve is weighted, calculate weight for key.
if ($weighted == true)
{
$inweight = ( ( $x[2] - $x[1] ) / ( 3 * ( cosd ( $inAngle ) ) ) );
$outweight = ( ( $x[3] - $x[2] ) / ( 3 * ( cosd ( $outAngle ) ) ) );
// If it's the first key, set $inweight = $outweight. Reverse for last key.
if ($i[2] == 0) {$inweight = $outweight;}
if ($i[2] == $totalindexes - 1) {$outweight = $inweight;}
}
else
{
$inweight = 1;
$outweight = 1;
}

// Apply angle value to tangent of current key.
// If weights are free or nonweighted, leave weights alone.
if ((($weighted == true) && ($weightlock == false)) || ($weighted == false))
{
keyTangent -in $i[2] -ia $inAngle $curve;
keyTangent -in $i[2] -oa $outAngle $curve;
}
else
{
//...but for locked weighted keys, space weights evenly.
keyTangent -in $i[2] -ia $inAngle -iw $inweight $curve;
keyTangent -in $i[2] -oa $outAngle -ow $outweight $curve;
}

// Relock tangents.
if ($locked == true) {keyTangent -in $i[2] -lock true $curve;}

// end condition that tangency type must not be "step".
}
// Go to next key.
}
// Go to next curve.
}
waitCursor -state off; // put mouse cursor back to normal. -comet
// end procedure.
}
trdprty_tungsethTangent;

Wednesday, 26 June 2013

The Nut Job wraps up

Work on my first feature is quickly coming to a close. It's hard to believe that I got this break so early in my career, and even harder to believe that it's ending so soon. I have spent a little over four valuable months at ToonBox working and learning simultaneously. I have grown a lot as an animator and I can see the progress in my work, which is always rewarding. Although my time on The Nut Job is almost over, thankfully my time at ToonBox is not. I am lucky enough to have been offered a position on the studios next feature entitled Spark. 
However, I do have 6 weeks off in between films and I plan to use that time relax and get some sun, but also to continue practicing my animation skills from home. During this time I want to put together some sort of tutorial that will hopefully provide some useful tips. My goal is to have this tutorial ready before I go back to work in mid-August.