Wednesday, July 28, 2010


The talented folks at Animation Mentor went and beat me to the punch...Bishop 2.0!

Hat tip to my buddy Matt for the heads up.

Pretty nice work I have to say and they've obviously been working on it for a bit. That or they're just a lot smarter as I've been working off and on Morphy since May. Their wardrobe system is a lot like I was wanting to do but have no idea how to do yet. On the plus side, Morphy will be free so he has that going for him.

Speaking of, no I've not had much time for him this week. I've been busy doing a rigging gig, trying to line up work for the next couple of months and trying to entertain my wife's family who's in town when not working. Oh, and Starcraft 2 came out...soo...yeah...but doing some of that too:)

Saturday, July 24, 2010

Where's Morphy?!

I know. I know. He's been a bit shy this week. Actually I've been doing not very glamorous work on him as well as taking care of lots of errands - vet for the pup and a pony and all kinds of other stuff. The life of an animator/farmer sometimes requires a split focus.

Rest assured he's coming along and I've been getting great feedback from some friends. I can actually say the head is just about ready for primetime and his body has been being reworked a lot. After taking another look at The Setup Machine, I decided even though it made setup a lot easier it didn't have quite all the features I wanted. For example, I really wanted "pinable" elbow and knee control as well as easy space switching. So I went back on the look out and decided to use Doublestein's setup once again (we're using it on Garden City and I like his why not). I'm modifying a few things but for the most part it's gonna be his awesome rigging tools doing the heavy lifting here.

The body rig is 90% done and I finished up my own hand rig last night (Doublesteins is fine...just wanted a few other controls and like to not have all the fingers on one control as the only option).

In the meantime, there's been plenty of awesomeness on the internets:

  • The Engineer updated finally landed for TF2 so I've been getting my sentry on with friends some
  • Limbo released for Xbox Live. It is a beautiful game that deserves your $10 or so or whatever it costs. Absolutely love the feel and moody settings.
  • Someone else released a nice new rig here and I found his test animation pretty darn tight.
  • And some sweet film stuff...
In laws just got here for a visit, gotta jet! Have a good weekend all:)

Friday, July 16, 2010

Yes, I'm working...

Had a quick remote rigging gig with Psyop this week which I think is all done and I think I'll be heading back to LA before too long to do some more work there. Can't wait to see all the LA friends.

He's such a tease...

Been a been able to squeeze a little bit of Morphin time in and making some good progress (just playing with some body deformation stuff above on the same skeleton - the head above just the base mesh).

  • Body rig
    • Decided to do The Setup Machine again for Morphy v01 just so I can get this done sometime this year. That hand My buddy Keith pointed me to some awesome tools one of his students wrote while at Ringling. - He has a load of neat tools there which I fully intend on checking out  when I have some time. Do yourself a favor and check em out yourself:)
    • Need to figure out a best method for connecting my head rig cleanly. The end idea is that you can throw the Morphy head rig on any body rig you please
  • Facial rig - Been getting great feedback from buddies and have a good list of changes to make for the next (probably 1.0 final facial rig)
    • Adding a nose flare control
    • Add asymmetrical customization options
    • Upping the intensity of the sneer
    • Changing mouth wide from being a smile to more of a horizontal transition to make the control feel better
    • Push the limits on most of the controls from the 1.0 value limit so you all can awesomely break the face
    • Add jaw rotation control
    • Got some great ideas to try on Morphy 2.0. When I'll find the time for that I really don't know as I have a short film idea  I'm wanting to start working on.

Tuesday, July 13, 2010

Quick skin is indeed fast....

Well, it's another hot one in Texas. Went for a jog with Atticus (the name of the dog with no name) and we were both panting when we finished up. Never really tried training a dog before and it's kinda fun - come and sit are pretty good and stay is coming along nicely.

My cousin Jon was here this weekend which as usual meant a game-a-marathon. He always has sweet board games and what not. He also introduced me to League of Legends (which I suck at) and we tried Torchlight as well. I'm a fan of the free to play and nice sized demo options. Also, my cousin is gonna be in an episode of The Good Guys (which I really enjoy) and Friday Night Lights. Very cool.

Back to Morphy...

  • Threw a quick mental ray quick skin shader on him just to see if I'm getting any weirdness in the smoothness of the deformation when rendered. Few areas to work on but the facial rig is close.
  • Finished up a first pass on the tongue rig and I'm pretty pleased with it.
  • Added about twice the range of motion on the jaw down and left right at the suggestion of a friend
  • Talked to another good friend Scott (whom just released a new push pull constraint for maya!) and he gave me some great ideas that I'm definitely going to try in the future if I can't get it crammed in to Morphy
  • There some deformation stuff I'm still not thrilled with. I'm gonna see about fixin that.
  •  I'll probably start working on a test animation soon to test it out before release.

For now, I just got a quick gig so I'll be setting ole' Morphy down for a bit. He'll be back before you know it:)

Again if you missed it in the above. Scott Englert just released a cool new constraint for maya, go check it out!

Wednesday, July 7, 2010

Back to that hacking other people's scripts and other things....

Been working on cleaning things up on the facial rig to final it.

  • Took Morphy to the dentist to hopefully fix that teeth penetrating the cheek issue (painful!)
  • Added Cheek up/dn/forward/back poses at the request of one of my buddies (whose site I would be happy to link to if he had one to point me to...hint...Rick...:)
  • Started getting rid of all the expressions driving the facial rig and going totally nodal. In doing so I'm hacking jsFacialWin as I pointed out last week. So, to aid that little endevour with as many controls as I have. I scripted the process of adding the necessary nodes, renaming and reverting the names. Took a page out of the author of that awesome scripts book in using string attributes for storing variables for later use. Neato! Here it is if you might find it useful...
The process for that is:
  1. Source my script
  2. to input the starter variables when you call the script such as
    jbFacialGUITricker ("circle_anim", "circle_anim_grp", "C");
    In this case "circle_anim" is the joystick itself, "circle_anim_grp" is it's parent transform group, and "C" is the type of joystick control I want it to emmulate. 
  3. After you're done, select the anim control you wanna "reset" and type "global proc jbFacialGUITrickerClean"
/*variables needed

Script to trick jsFacialwin to using other "joysticks"
Sample input:
jbFacialGUITricker ("circle_anim", "circle_anim_grp", "C");

There's no error checkin cause this is mainly for me:)


global proc jbFacialGUITricker (string $control, string $group, string $type)
string $controlAttr;
string $grpAttr;

//renames the controls
string $controlNewName = `rename $control ($control + "CircleCtrl")`;
string $groupTempName = `rename $group ($group + "Grp")`;

//adds our new attributes for the control window to work
addAttr -ln "name" -dt "string" $controlNewName;
addAttr -ln "type" -dt "string" $groupTempName;

//sets those new attributes
setAttr -type "string" ($controlNewName+".name") $control;
setAttr -type "string" ($groupTempName+".type") $type;

//renames the group to the proper format in an inefficient manner (that works)
select $groupTempName;
searchReplaceNames "_grpGrp" "Grp" "selected";

$groupNewName = `ls -sl`;

//adds our undo attributes to pull all this stuff out
addAttr -ln "originalGroup" -dt "string" $controlNewName;
addAttr -ln "newName" -dt "string" $controlNewName;
addAttr -ln "newGroup" -dt "string" $controlNewName;

//sets the attributes for jbFacialGUITrickRemove storing variables for another script
setAttr -type "string" ($controlNewName+".originalGroup") $group;
setAttr -type "string" ($controlNewName+".newName") $controlNewName;
setAttr -type "string" ($controlNewName+".newGroup") $groupNewName;

print "Done";

global proc jbFacialGUITrickerClean ()
string $originalName;
string $originalGrp;
string $newName;
string $newGrp;

//gets attributes from our selected control
$control = `ls -sl`;

$originalName = `getAttr ($control[0]+".name")`;
$originalGrp = `getAttr ($control[0]+".originalGroup")`;
$newName = `getAttr ($control[0]+".newName")`;
$newGrp = `getAttr ($control[0]+".newGroup")`;

//renames our controls to the proper names
rename $newName $originalName;
rename $newGrp $originalGrp;


Optimization stuff isn't exactly the most exciting...

Tuesday, July 6, 2010

Morphy and the dog with no name...

So, progress hasn't been as snappy as I'd like but we did get a new puppy that I check on once an hour or so. Some friends found him in the woods and we decided to give him a home. We're having a hard time naming him though. He'll have a name one of these days:)

Pretty cute, no?

When I've had some time, I've been trucking forward. Here's some new bits...

What's this vid showing? Well, I finished the first pass on the morph based tweaks to the face. I'm not sure if I'll add more controls, simplify or what. Only time shall tell.

Went ahead and threw some out there faces on the current rom to see how deformation is holding up. The teeth is gonna be a major issue that I need to 1) tweak some facial blendshapes 2) make it easy for the user to scale the teeth or move the lips off of them a bit...(come to think of it as I write this, that may just about be a perfect option...)

What's next? Tongue, optimization and some good solid testing. After that - a full body. I'd like to animate him some time in the next month so I best get crackin.

Saturday, July 3, 2010

Eye Rig....check.

Eye/eyelid rig has been attached. Here's quick test seeing how things are deforming. Lots of polish necessary. So, here's a State-of-Morphy update:

  • Facial rig is 90% done - still need to do some optimizing and looking to create some eye fk/ik switching and some visibility toggling.
  • Weighting on the eyes needs a solid layer of polish 
  • Several of my blendShapes need some work - I'd like to see some more volume in the cheek in the smile and tweak the creasing a bit. Also the mouth corners need some love.
  • Still need to figure out how I want the morph based customization options to work and I'll probably start on that this week.
To those coming late to the party here - Yes, Morphy will be a full body rig (you can dig back though the older Morphy posts if you want some idea of what I'm doin there). I'm actually thinking about making the intial body rig with The Setup Machine to get it a Morphy v1.0 completed quicker and do my own body rig for 2.0. 

Hope everyone has a great Forth of July weekend in the US and to the rest of the world - have a great weekend anyway:)

Thursday, July 1, 2010

Eye Rig of Doom!

But first, a little Morphy update...

Quick range of motion test on the 80% complete facial rig. Still have some pose polishing to work on but I'm pretty happy with the base controls.

So getting the intial moveable scalable eye rig working wasn't too hard until I wanted to have a master eye IK control .

Master Eye IK control, I shake my fist at you!

Picked this up and left it numerous times after getting frustrated with it. However, this morning, things finally came together. Heirarchy of the transformable, moveable eye rig. The basis for the rig is Scott Englerts fk/ik eye rig. Anywhere there's a "left" item, a "right" item is assumed to be as well. These are my notes so I can make sure everything is connected right on the other side....
  • EyeRig_grp - this is the top group that contain all of the eye rig elements.
    • Parent Constraint -  target - left_eyeorb_skin_jnt
    • Scale Constraint -  target left_eyeorb_skin_jnt
    • eyeRigAttributeHolder - empty transform node with a ton of attributes connected. Holds attributes for Scott's eye rig as well as the eyelid rig
    • eyeIKMeasurements_grp - group containing all of the measurement elements to position the individual eye IK controls when the face is transformed. It is a template that helps us get the initial positions from which all subsequent offsets happen
      • eyeIKMaster_loc - Simulates the position of the eye_masterIK_anim control using the exact same constraint setup.
        • Parent Constraint - two targets - eye_left_rig_grp and eye_right_rig_grp
      • masterLeftIkDeformPos_loc - this is the startpoint for the distance node that measures how far out we need to push the ik_eye_left_anim_grp to be where it needs to be when the face is deformed
        • Parent Constraint - eyeIKMaster_loc
      • eyeIK_leftDeformPos_loc - end point for this sides measurement node
        • Parent Constraint - eyeIK_left_loc
      • masterIKToEyeIK_left_dist - distance node using the start and end point listed above. Get's our distance to later plug into the individual eye's offset when the eye postion and scale are deformed
    • eye_masterIK_Pos_grp - hold's the master IK control and the stuff necessary to move it where it needs to be when the face is deformed
      • Parent Constraint - two targets - eye_left_rig_grp and eye_right_rig_grp
      • eye_masterIK_anim_grp
        • eye_masterIK_anim - The master IK anim control that moves both eye IK anim controls with it
          • eyeIK_left_anim_grp
            • Connection - masterIKToEyeIK_left_dist.distance >>> eyeIK_left_anim_grp.tx
            • eyeIK_left_anim - Individual eye IK control 
              • Aim Constraint target left_eyeorb_skin_jnt
    • eye_left_rig_grp - All the rest of the rig stuff for the individual eye
      • eyeIK_left_loc - positioned where the original eyeFK_left_anim position is
      • eye_left_IK_UpVector_loc - positioned above the eyeball to act as a Y up object for the eye's aim constraint 
      • eyeFK_left_anim_grp 
        • eyeFK_left_anim - Individual eye FK Joystick type control
          • Limits - .tx and .ty only open channels and both clamped to -1 to 1
      • eye_left_orient_grp - holds the meat of Scott's rig
        • eye_left_FKOrient_loc - "Joystick driven" eye rotation
          • Expression - 
eye_left_FKOrient_loc.rotateX = eyeFK_left_anim.translateY * -eyeRigAttributeHolder.eye_left_UpDn;
eye_left_FKOrient_loc.rotateY = eyeFK_left_anim.translateX * eyeRigAttributeHolder.eye_left_LeftRight;
          • eye_left_IKOrient_loc - Aims at the individual eye's IK control
            • Aim Constraint - (.rx and .ry only) Targets eyeIK_left_anim
              • Up object is eye_left_IK_UpVector_loc (who is located above the eyeball to simulate Y up when the head spins around)
          • eye_left_Orient_loc - "End result" locator which the eye is constrained to
            • Orient Constraint - Targets - eye_left_FKOrient_loc & eye_left_IKOrient_loc
              • Weights are expression driven - 
    eye_left_Orient_loc_orientConstraint1.eye_left_FKOrient_locW0 = eye_left_fkikSwitch_anim.translateY;

    eye_left_Orient_loc_orientConstraint1.eye_left_IKOrient_locW1 = 1-eye_left_fkikSwitch_anim.translateY;
          • eye_left_ikPOS_loc - Snapping object for the ik control that's driven by the FK control. Initial position should match the eyeIK_left_anim
            • Parent Constraint - target eye_left_Orient_loc
        • iris_left_anim_grp - Positions the iris/pupil controls to blend between the FK and IK controls
          • Parent Constraint - (maintain position off) - Targets eyeFK_left_anim & eyeIK_left_anim
            • Weights are expression driven to move the iris between the two controls
    iris_left_anim_grp_parentConstraint1.eyeFK_left_animW0 = eye_left_fkikSwitch_anim.translateY;
    iris_left_anim_grp_parentConstraint1.eyeIK_left_animW1 = 1-eye_left_fkikSwitch_anim.translateY;
            • iris_left_anim - .sx only, connected to the iris scale blendshape via expression (.sy and .sz are connected to .sx)
              • pupil_left_anim - .sx only, connected to the pupil scale blendshape via expression (.sy and .sz are connected to .sx)
                • Expression for both -

       if (iris_left_anim.scaleY <=1) {

      eye_left_bsNode.irisShrink_bsGeo = clamp (0,1, 1 -iris_left_anim.scaleY * iris_left_anim.scaleY);
      else {
      eye_left_bsNode.irisShrink_bsGeo = 0;
      if (pupil_left_anim.scaleY <=1) {
      eye_left_bsNode.pupilShrink_bsGeo = clamp (0,1, (1 - pupil_left_anim.scaleY * pupil_left_anim.scaleY));
      else {
      eye_left_bsNode.pupilShrink_bsGeo = 0;
      eye_left_bsNode.irisGrow_bsGeo = clamp (0,1, iris_left_anim.scaleY -1 );
      eye_left_bsNode.pupilGrow_bsGeo = clamp (0,1, pupil_left_anim.scaleY -1);

        All the stuff on this site is 2000 - by Josh Burton...unless otherwise noted. All rights reserved.