Friday, September 9, 2011

A Week in the Life Between Gigs...

Some folks wonder what freelancers do between gigs. Well I can't speak for them but for me more than a few days without a project to work on is a painful thing - I just really enjoy making stuff. As I've been posting sporadically, since the start of the year I've been working on a python rigger so aside from doing a little animation with Morphy a few months ago, that's what I work on.

Aside from the typical things of course . Like spending time with my wife when she gets home, grocery store trips, joggin the dog, cookin dinner and workin through mountain of stuff that gets put on the backburner when those crazy gigs come - oil changes, home repairs and the like. Also reading books. I read . A lot. My brother got me caught on The Game of Thrones series so that's kept me busy about a month of reading. Should finish the last one (so far) next week or so. Highly recommended if you like the fantasy genre in the slightest - except for you, mom....maybe a little non-PG. Some characters I've loathed I've come to really like. Except Cersei, I'll be amazed if Mr. Martin can redeem her.

Back to python. Maybe other TD's work different. I've never really worked in a studio setting with other td's writting code so I don't know but I find myself circling back through things I thought I'd fixed days before.  Also, my libraries of functions have gotten huge. Can't believe how long it took to figure out the traceback feature in this week. Some days I feel like an idiot.

Here's my running log from this week so far(which I've been using evernote for note keeping and really enjoying). For code writing I'm using jEdit and version tracking via an online code repository.


  • bbRiggingLib
    • locMeSurfaceCV
    • setCurveByColor(obj,color)
    • setCurveByIndex(obj,colorIndex)
  • bbDistanceLib
    • returnDirectionSortedDict(targetObject,objectList)
    • returnClosestObjectsFromAim(targetObject,objectList) 
  • bbSkinLib simpleControlSurfaceSmoothWeights
    • added a lot more calculating, doing a pretty good job now (though a little slow cause of all of the measuring)
  • bbAttributeLib
    • doSetAttr(attribute,value,forceLock = False)
      • set attr replacment that ignores locks, relocks if it was locked and has a forced lock override
    • doConnectAttr - see above
  • bbSpineRig
    • pretty much workin now want a better ribbon setup but the spine works with squash and stretch
  • bbDictionaryLib
    • returnColorIndex(color)
    • returnColorDict()
    • returnRotateOrderIndex(ro)
    • returnRotateOrderDict()
    • returnVectorToString(vector)
  • bbDistanceLib
    • returnClosestUPosition - made it work with compound curve objects
    • returnCenterPivotPosition - returns the coordinates of the pivot of a bounding box of an object or objects
  • bbModuleLib
    • returnSettingDataAsFloat - culls in the data from the settings as a float, parsing it if there are ',' to a list or to an array with the '|' divider
    • bbCurveLib
    • createTextCurve(text,size=1,font='Arial') all the text curve under a single transform 
    • createTextCurveObject(text,size=1,name=None,font='Arial') stores info for easy updating of the text or font 
    •  updateTextCurveObject(textCurveObj) recreates the text with new text and font info sizing it the same as what was there and replaceing the shapes that were there. All while leaving the original transform node unmolested 
  •  bbRiggingLib 
    •  centerPivotLocMeObject - like loc me object, however, for positioning purposes, uses the bounding box pivot of the object instead of it's actual pivot 
  •  bbControlMaker
    •  moved the limbControlMaker here from bbLimb
  • bbModuleLib 
    • createdcreateSizeTemplateControl - which makes a template sizing object for initital sizing data
  • bbSearchLib 
    •  returnObjectType - fixed logic for detecting shapes 
  •  bbRiggingLib 
    •  setCurveColorbyName & setCurveColor by Index - added shape detection so that if you feed it a shape instead of a curve it just does the shape, if a curve, it does all of it 
  •  bbCurveLib 
    •  made the update text account for parent scales to ensure it maintains it's proper size and stores the new scale, also made it retain curve color info 
    • Added duplicateShape because it's apparently not easy to do so with basic maya commands added gear, eye and teeth shapes 
  •  bbControlMaker
    • MasterAnim almost done working 
    • childControlMaker which will come in all kinds of handy
  • bbAutoNameLib 
    •  more fixing of the auto name logic made storeInfo default to locking the attributes, however there is a leaveUnlocked bool option now 
  • bbMathLib
    • multiplyList - does what it says, ignores 0's 
  • bbRiggingLib 
    •  parentPivotLocMeObject - takes the pivot of the immediate parent of an object instead of it's own while still matching orientation and oration order of target object, world if no parent is present 
    • returnColorsFromCurve - queries the colors of all the shapes under a curve and order them by volume encompassed
  • bbCurveLib 
    • made duplicateShape work with curves with children (yay compound curves!) 
  • bbLimb
    •  started the changeover to the new template setup 
  • bbModuleLib 
    • returnOrderedModules (redo) - Changed it to read the hierarchal relationship of the modules stored via message nodes to produce an order instead of the wonkier version I had before.
  •  bbControlMaker 
    • MasterAnim done 
    • childControlMaker done 
        Generates a radial array of controls around a base control where things start at noon and it divides
        the clock positions by the number of controls to make.  You can also change the mode so that you can
        tell it where to start on the clock and increment which to use.Stores the children controls to the baseControl
        as a message  node and stores the parentControl info to each generated control. It also takes into 
        account the colors of the baseControl using a secondary color if it exists.
        baseControl(string) - The control we're working off of
        controlTypes(list) - the controls you want created. If the type specified isn't in the base settings,
                             the control is created as a bbTextCurveObject
            Presets - settings
        mode(list) - (['even']) -  mode to set our values by and other information as required
            Options -   ['even']
                        ['incremental',30] - the firest term is mode, the second
                                            is the degrees to separate the controls by. Can be negative   
        baseAim(vector) - ([0,0,1]) - which way does your master control point
        baseUp(vector) - ([0,1,0]) - which way is up for your master control
        offset(int/float) - (0) - offset the starting clock position
        scaleMultiplier(float) - (.25) - multiplier for scale (default is .25) of the absolute size of the parent control
        distanceMultiplier(float) - (1.25) - multiplier for distance to travel 
        localRotationOffset(vector) - ([0,0,0]) - offset rotation for the controls if you want it
        aimChildren(bool) - (False) - aims the controls at the root of the base if True
        zeroGroups(bool) - (False) - if True adds zero transform groups to zero out the controls
        lockHide(bool) - (True) - If true, locks hides and makes unkeyable the typical transform attributes per control

    • bbControlMaker 
      • Heirarchy changes to the size object 
    •  bbLimb 
      •  returnTemplateSizeObject - returns existing objects or makes them and returns them if they weren't found 
      • doGenerateInitialPositionData
        •  initially looked at using curves from the start but am leaning towards just orienting locators aimed where I need and using multiply lists below against standard ratios stored via settings.conf
    •  bbRiggingLib 
      •  aimSnapUpObject (added) 
    •  bbDistanceLib 
      •  returnClosestUPosition - made it work if you feed shapes in it 
    •  bbMathLib 
      • multiplyLists - multiplies lists of values - [[2,3,4],[2,3,4],[2,3,4,3]] = [8, 27, 64, 3]

Tuesday, September 6, 2011

Morphy! By a noodle....

Morphy Tip of the Month: If you get some funky creasing in the face with a customization option don't hesitate to select the offending section and try a 'smooth skin weights' option or just manually paint in some smoothness around there. 

First off a big congrats to Pairatch Lerthajornwong for their winning entry to 11 second club. Check it here!

First the classical....

Then a little more hip

Morphy struttin it

Little drinky drink

And some more from 11 second club

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