Here's a quick wip out of Maya. Colors are just blocked to get a rough idea.
Monday, June 15, 2009
Someone's gotta do it...
and although its what I consider the least fun part of the 3d process, UV's have to be unwrapped. Im getting them done so I can take him into Z-brush and hopefully get some great maps painted to match his personality.
Here's a quick wip out of Maya. Colors are just blocked to get a rough idea.
Here's a quick wip out of Maya. Colors are just blocked to get a rough idea.
Tuesday, June 9, 2009
New Animation Project
So I'm embarking on a new animation project. I'm at the rough sketches and concept phase. Here's hoping putting it out to you all (most likely just me re-reading this) will make me get to work on it, and get it done.
Expect sketches, and storyboards and the likes, soon, assuming Merlin doesn't come and interrupt my work!
Expect sketches, and storyboards and the likes, soon, assuming Merlin doesn't come and interrupt my work!
Friday, June 5, 2009
dragonForRig
Here is the head of the creature that will make it onto the serpent rig. The body is still in the design phase, hopefully I can get it figured out soon.
Friday, May 29, 2009
Vector Rig Translation Control
The translation data for the rig is controlled using a script on Cntrl groups above the main tailControls. In essence, each frame, two vectors are calculated based on the lead control's position in the last frame and its position in the current frame. Those are used to calculate the magnitude of change, which is then used to calculate where each of the tailControls should be placed.
Here is a sample of the code:
This method keeps the rig from squashing and stretching when the lead control moves faster or slower; which would happen if the tail controls were just placed at the lead controls location, minus the desired amount of frames.
Here is a sample of the code:
float $distance = 3;
int $time = `currentTime -q`;
vector $oldPos = `getAttr -time ($time -3) leadObject.translate`;
vector $newPos = `getAttr leadObject.translate`;
vector $vector = $oldPos - $newPos;
float $vectorMag = mag ($oldPos - $newPos);
if ($time == 0)
{
trailObject_01_cntrlGrp.translateX = $distance * -1;
trailObject_01_cntrlGrp.translateY = 0;
trailObject_01_cntrlGrp.translateZ = 0;
string $zeroTime = "time is at zero";
//print ($zeroTime + "\n");
}
else if ($newPos == $oldPos)
{
trailObject_01_cntrlGrp.translateX = trailObject_01_cntrlGrp.translateX;
trailObject_01_cntrlGrp.translateY = trailObject_01_cntrlGrp.translateY;
trailObject_01_cntrlGrp.translateZ = trailObject_01_cntrlGrp.translateZ;
string $vectorDistance = "the new vector equals the distance";
//print ($vectorDistance + "\n");
}
else
{
while ($time > 0)
{
$newPos = `getAttr -time $time leadObject.translate`;
$oldPos = `getAttr -time ($time -1) leadObject.translate`;
$vector = $oldPos - $newPos;
$vectorMag = mag ($oldPos - $newPos);
if ($vectorMag >= $distance)
{
float $vectorScalePercent = $distance / $vectorMag;
vector $vectorScale = $vector * $vectorScalePercent;
vector $newVector = $vectorScale + $newPos;
float $placement[] = $newVector;
trailObject_01_cntrlGrp.translateX = $placement[0];
trailObject_01_cntrlGrp.translateY = $placement[1];
trailObject_01_cntrlGrp.translateZ = $placement[2];
string $setFrameMessage = "vector was set using vector from frame ";
//print ($setFrameMessage + $time + "\n");
break;
}
else
{
$distance = $distance - $vectorMag;
$time --;
//print ("vector too small, moving back a frame" + "\n");
//print ("new distance is " + $distance + "\n");
//print ("time being calculated is" + $time +"\n");
}
}
if ($time == 0)
{
$newPos = `getAttr -time 1 leadObject.translate`;
$oldPos = `getAttr -time 0 leadObject.translate`;
$vector = $oldPos - $newPos;
$vectorMag = mag ($oldPos - $newPos);
float $vectorScalePercent = $distance / $vectorMag;
vector $vectorScale = $vector * $vectorScalePercent;
vector $newVector = $vectorScale + $newPos;
float $placement[] = $newVector;
trailObject_01_cntrlGrp.translateX = $placement[0];
trailObject_01_cntrlGrp.translateY = $placement[1];
trailObject_01_cntrlGrp.translateZ = $placement[2];
}
}
This method keeps the rig from squashing and stretching when the lead control moves faster or slower; which would happen if the tail controls were just placed at the lead controls location, minus the desired amount of frames.
Thursday, May 28, 2009
Automated Serpent Rig
The idea behind this project was to create an automated rig, where the animator would animate the first control, and the rest would automatically aniamte correctly behind it. The concept was a serpent like rig (think sea serpent or leg-less dragon) where it wouldn't be required to animate the length of the body. There are secondary controls that allow for animating off the main course, but the main motion is determined by the lead control.
Here is a quick example of the X-rotation in trial:
Here is a quick example of the X-rotation in trial:
Subscribe to:
Posts (Atom)