Sunday 2 September 2012

Outhouse - SHOWFEST 2012

Outhouse won Best Film for 2012 at SHOWFEST

Me and Jack Verace (Young Toilet paper Roll)


Me and Robin Queree (Old Toilet paper Roll)

Gees... I kinda look like I was photographed once and photo-shopped in don't I? :)

Wednesday 11 July 2012

Bipedal Auto-Rig - WIP

This is a test of an auto-rig for Maya that I have script in Mel - largely based on Arron Holly's rigging techniques. No weights have been painted and I didn't try to position the joints perfectly as it's just a test.
I still have some changes/fixes to make and some additions to add before I start animating a few characters.

I have been working on a facial rig as well but that's a little ways off....

Friday 6 April 2012

Wednesday 21 March 2012

Learning Mel - Early Days

I love how using Mel saves me countless hours. When I think of all that time I could have saved  in the past before I knew how to do this :)
For example – setting up an Ik Fk blend for rotation and scale is a easy as...


    string $ArmNm[] = {"shld01", "elbA01", "elbB01"};
    for ($jntSw=1; $jntSw<4; $jntSw++)

    {
   orientConstraint
       -n ($prefix + "_" + $partName + "_" + ($ArmNm[($jntSw-1)]) + "_jntOri")
           ($prefix + "_" + $partName + "_" + ($ArmNm[($jntSw-1)]) + "_ik")
           ($prefix + "_" + $partName + "_" + ($ArmNm[($jntSw-1)]) + "_fk")
           ($prefix + "_" + $partName + "_" + ($ArmNm[($jntSw-1)]) + "_jntBnd");
   createNode blendColors
       -n  ($prefix + "_" + $partName + "_" + ($ArmNm[($jntSw-1)]) + "_jSBld");
   connectAttr    
           ($prefix + "_" + $partName + "_" + ($ArmNm[($jntSw-1)]) + "_ik.scaleX")
           ($prefix + "_" + $partName + "_" + ($ArmNm[($jntSw-1)]) + "_jSBld.color1R");
   connectAttr      
           ($prefix + "_" + $partName + "_" + ($ArmNm[($jntSw-1)]) + "_fk.scaleX")
           ($prefix + "_" + $partName + "_" + ($ArmNm[($jntSw-1)]) + "_jSBld.color2R");
   connectAttr
           ($prefix + "_" + $partName + "_" + ($ArmNm[($jntSw-1)]) + "_jSBld.outputR")
           ($prefix + "_" + $partName + "_" + ($ArmNm[($jntSw-1)]) + "_jntBnd.scaleX");
    }


In the example above I've given procedure arguments for $prefix (character Name), $partName (body part like "arm") and I've used the string array ($ArmNm[]) to capture the elements within $partName - in this case the shoulder joint and the two elbow joints.

 A `for loop` cycles through 3 times (<4) and matches the $armNm array containing the elements within the $partName, (-1 because arrays start with 0 in Mel), to the newly created blend nodes for scale blending and orient constraints for rotational blending. These are then connected to the bind joints.

Thursday 1 March 2012

Stretchy Ribbon Spine

Here is a test of a Mel script I wrote for a Stretchy Ribbon Spine. I created two buttons for it. The first one creates a system of locator's which can be moved to line up with the characters spine and the next creates the spine itself based on the orientation and positional information of the locators and zeros the rotational values on the joints.

  

I've still got allot to learn about organizing my scripts properly and have been reading everything I can get my hands on regarding the best methods/standard procedures..... but gees it's fun.

Tuesday 28 February 2012

Learning Notes - Python and Mel


I've played with Mel, (Maya embeded language), on and off over the years but, to be honest, I never dug deeply into it. I can't figure out why - would have made life so much easier. I'm thoroughly enjoying the process of learning Mel and python at the moment. It's so very addictive.... and helpful :)


Here is a few of the basics in mel...
Data types
Integers
          int $areWholeNumbers = `##`
Floats
          float $areFractions = `##`
Vectors
          vector $areX,Y,ZPositions = <<X,Y,Z>>
Array
          $##[starts at 0]
Conditional  Statements for mel
<: - less then, >: - greater then, == - equal to: != - not equal to, >= - greater or equal to: <= - less or equal to ?: -if else && -logical and || -logical or  +,- -plus,minus ^ -vector cross product / -divide * -multiply % -modulo ++, -- -increment,decrement by 1 ! -not
  Loops/Iterantion in Mel
While-Loops
    example;
          int $x =0;
          while ($x <10)
          {
                      $x =$x+1;
             print ($x + "\n");
          }
For-Loops   (loop start)   (loop end)   (increment)
    example;
          for ($t=0; $t<6; $t=$t+1)
          {
                       joint -name ("naths_" + "_jnt");
          }

For-In-Loops
    example
     select bob;
          string $bobsInHere[] =`ls -sl`;
          for ($allBobsAtributes in $bobsInHere)
          {
                    string $bobsAtributes[] = `listAttr -write $allBobsAtributes`;
                   for ($bobsWritable in $bobsAtributes)
                    {
                              print ($bobsWritable + " is a writable attribute of bobs" +"\n");
                    }
          }


Do-While Loop 
   int $t = 1;
        do 
{
    $t += 3;
print ($t + "\n");
}
 while ($t <= 10);


Special Characters of note
\ =escape,
\n = newline,
/t = tab,
 \r = carriage return
Procedures

An example is a global procedure. The procedure is called from memory with the bottom line and arguments are given for width, height, depth and name.
Example;
  global proc nathansCubeIT (float $width, float $height, float $depth, string $name)
     {
          polyCube -width $width -height $height -depth $depth -name $name;
     }
                                      nathansCubeIT 5 6 4 nathCube;

Thursday 23 February 2012

Stretchy Ribbon Spine


I've been experimenting with different ways to deform and animate my "Secret Life of Objects" characters.

They all twist, stretch and squash....

Previously I used a stretchy spline Ik. This is a really simple technique which involves joints being spread evenly along, and constrained to, a curve. The curves length, (when it’s stretched) is divided by its initial length and the result is input into the joints scale so that the length of the joint chain matches that of the curve. Unfortunately joints are straight and the curve is… well… curved so the last joint on the chain sometimes overshoots the curve length. Rotate values are passed evenly between the top and bottom controls with an up vector object.

A slightly old but great set of tuts by Aaron Holly uses a “ribbon spine” instead.

Instead of a curve Aaron uses a nurbs surface and parents the bind Joints under follicles created on that surface. The surface is then bound just like the stretchy spline with joints for animation and aim vectors are used to constrain the direction the joints point. Rotational values are output from top and bottom controllers as a percentage relative to the joints position which is then averaged and fed into the joints to evenly distribute them. The center joint, for example, receives 50/50 from top/bottom. 

The benefit is that you can turn/rotate your character as many times as you want and the scale of the joints won’t overshoot – nice. Here is a little test I did with ten joints and three mid-section controllers. They don’t quite rotate the way I want but it will eventually... I also want to create a script for my S.L.O.O rig once I figure out how to get the animation features I want/need - a good excuse to learn mel.



Wednesday 8 February 2012

Lip Sync Test

I recently had a read of Jason Osipa’s book "Stop Staring" and what a great book it is.  I can instantly see the potential in Osipa's way of thinking regarding Visimes Vs Phenetics. Time to go back to basics and learn to do this properly. This is a quick test so it's a little average but it's very quick. 

 

I never knew my voice could sound like that :)

One thing I should make note of for myself comes in the form of the McGurk effect which shows us that the visual shape of a sound  can over ride the sound itself - for example "B" can become "F". HERE is the link to a BBC documentary about it. This is one of the reasons that visuals shapes have to look right or the viewer might be confused. 

Saturday 4 February 2012

Sticky Lips in Maya


Just playing around with this Maya pluggin for sticky lips...
Video:


Might take some playing but kinda cool and useful for lots of stuff :)

Wednesday 1 February 2012

WIP - Facial Rigging - Primary Facial Expressions

I rigged this head with a little UI in Maya and incorporated the primary expressions of Contempt, Fear, Anger, Disgust, Happiness, Sadness and surprise. I don't think it would really work for animation but it's fun to play with...


 

P.S. You can take the Paul Ekman Micro Expression sample test HERE to see if you can instinctively pick up on other peoples emotions/feelings. Strangely the only one I ever miss is anger but I usually get it right because it's the only one I'm ever unsure about.



Thursday 19 January 2012

nCloth on a Dragon Wing - Rigging in Maya


1. Smooth bound the wing to the wing joints
2. Separated the parts of the wing that I wanted to apply ncloth to.
3. After Ncloth was created from the separated wing objects I recombined the wing objects before I merged vertices with a threshold of 0.01
4. Cleaned up the mesh history and deleted unwanted nodes in hypergraph.

Might be a better way to do this… some R&D needed.

I've started adding some textures in maya and am enjoying making him look like an Australian bearded dragon. Rigging him will be fun as will be adding details in Zbrush...

Friday 13 January 2012

Modeling practice - Audi - W.I.P

Still lots of things to fix like the lights and some modelling issues but here is a test render - modeled in Max and rendered in Vray.