Mon, Apr 30th, 2012
posted by jjburton 10:04 AM

It was a good week last week and things are moving along. Progress may slow a bit as both David and Josh are working gigs. Ryan is working on the first of the web side of things and we’re lookin forward to start testing that soon.

Josh is doing a webinar this week for Faceware should you be interested in checking that out. He’ll be covering Facial rigging workflow as well as a bunch of tools in the libraries. If you wanna check it out, sign up here. Also, if you have any topics you’d like covered leave a comment below.


  • Main Gui
    • cgm.animTools move to anim tab
    •  Added hot keys from zoo tools. There’s some in there I hadn’t messed with before. Neat stuff
  •  cgm.animTools
    • Justin Barrett’s tweenMachine added!
    •  Morgan Loomis’ Breakdown dragger added!
  •  Locinator/animTool update
    •  Now have the ability to specify parent/point/orient mode on object updates. Doing it for locs would take a bit of time and unless there’s a demand for it, gonna let is slide
    • When you tag an object to a match loc, it now updates the rotation order of the loc and there is an option to turn that on and off in options
  • Plans on animTools
    • The snap tab will eventually have some additional tools as well for fk/ik switching, pose mirroring, etc one we have the modular rigger up
    •  Thinking about a mini tween machine that works off buffers
    • Actually planning on doing a lot with buffers
  •  Under the hood work
    • Added a true reset now to the cgm stuff that resets that respective tool’s optionVar’s to original setting. As such, been working on an optionVar class wrapper for doing some buffer stuff that’ll save between sessions
    •  Got some good notes from one of my TD friends Scott Englert who’s a much, much more experience coder than I. So been doing a lot of work on that front
    • Classes are now stored in a separate class folder in cgm.lib



Mon, Apr 23rd, 2012
posted by jjburton 10:04 AM

Last week was a productive week.

 First off, I’m happy to announce we’ve received permission from Michael Comet to included any of his scripts we like in our release pack. Initially that will include autoTangent and cometJointOrient.
We believe one of the benefits of not charging for tool kit is that there’s less anxiety from other tool makers on letting us include their great tools as well. As one of our rules is not to reinvent the wheel if there are already great tools out there, we’re super excited. We’re so grateful for their willingness to share as the idea of a single easily accessible collection would be a great benefit to most of our various script laden folders:)

Here’s the weeks update….

What’s new?

  • General
    • tweaks to the color templates
  • cgmTools main gui
    • Added a bunch of zoo tools to be accessible from it
  • cgm.tdTools
    • Changes to the font menu
    • Preloading options
    • New size options – Size+ & 1/2 Size
  • cgm.tdTools.curves
    • Zero me – some more work on it to work with objects with pivots that have been moved
    • Curve Library – unified the aim and up directions of the curves
    • Parent selected – simple order based  parenter
    • Curve control connect – lots of options for how to control
      • Methods
        • Constrain – parent,point/Orient, point, orient
        • Shape Parent – shape parents the curves to the objects they’re drived from
        • Parent – parents the driven object to the control
        • Child of – parents the control to the creation object
        • Scale – whether to drive scale or not
      • Other options
        • Rotate Order (something wanted to try on a whim, we’ll see if it’s useufl) – adds an animatable rotate order attribute to the curve that drives all related objects and groups
        • +Group – adds an extra group the curve for constraining purposes
        • LockNHide – Lock’s and hides any attributes not being used
        • Heir – check to maintain the heirarchy if you choose, via group constraints or matching the existing heirarchy with the controls and groups
      • Updates transform on connect so you can do whatever you want to the curve control before connecting it
    • Master control maker now sets up basic groups and connects vis controls to those groups if you have vis selected on creation
    • Replace shapes – selected an existing nurbs control in a rig, make a new curve. Then select the new curve, then the old and it will replace the shapes of your existing control without breaking anything
    • Create one of each – easy way to see all of the curves in the library (they all create at world center, select them and go to cgmTools.position>grid layout to see them easier. Speaking of…
  • cgm.tdTools.position
    • Grid layout – reworked to work off of object space to make. Changed the logic to offer more options down the road
  • cgm.tdTools.joints (NEW TAB)
    • Michael Comet’s joint orient added
What’s next?
  • cgm.animTools
    • Started blocking things out and figuring out the first pass of tools to be included. First up is updating some cgm.locinator features to make it more flexible.
  • cgm.tdTools
    • continue working through getting the intial tool tested and complete
Fri, Apr 13th, 2012
posted by jjburton 11:04 AM

Intro to a wip tool from cgm.tdTools. As you’ll see. Still wip

If you wanna sign up to be a tester, there’s a link on the contact page.


Tue, Mar 27th, 2012
posted by jjburton 11:03 AM

…Apparently a whole lot.

So some time last year when I was working through learning python and working on our rigging modules I said to myself, “Self, it sure would be nice if you didn’t ever have to worry about naming anything by hand anymore.”

“Self, ” I replied…to myself of course,” what a great idea, surely we can knock that out in a couple of days.”

Turns out, I lie to myself pretty well as I’ve been plugging along on this issue ever since between gigs and it’s been almost a year now and it’s just now about finally where I want it to be. All of our modules and functions use this system as it just really makes it easier to keep a scene clean.

As a quick overview, here’s the basics of how it works…

  • The gist of it:
    • Any object in a scene can generate a name dictionary
    • The minimum a dictionary holds is the objects type which is inferred by logic (groups, shapes and other specific types are detected)
    • Before going into the name dictionary, tag info is check against a user editable short hand config file for short versions of text: ‘left’ becomes ‘l”, “right” becomes ‘r’, ‘joint” becomes ‘jnt’
    • Objects may be tagged with a variety of tags. Currently: name, position, direction, type, iterator and modifiers for all but iterator
    • Names are inherited so for example if you have a chain of objects and you tag the first one with a name tag, all other object in that chain will inherit that name tag unless assigned a different one
      • Other examples of auto inheritances are:
        • shapes always inherit their information from their transform
        • Groups inherit information from their first child
    • Tags may be strings, connected attributes or message connections to a specific object.
      • message connected names are treated as special cases. For example a locator created from another object will be message tagged to ‘object’ so that the locator is named ‘object_loc’ and it’s name tag will always update to whatever that object’s name is changed to.
    • When a name is created from a name dictionary, it combines in the order and with the joiner (‘_” is default). Those settings are found in the config file
  • Current gui tool fuctions include:
    • Tag and Release
      • Object load with preview of what name will be with the naming tool
      • Navigation – load child/parent
      • Name loaded object or the descendants of the loaded object
      • Easy change tag fields which auto update with current information from the loaded object (color coded  for keyed values, connections and parent tags)
      • Right click menu on tag fields for selecting parent tag objects, or connected objects
    • Selection based tools
      • Multi tag editing
      • Copy tag from first to others
      • Swap tags
      • Clear tags
      • Name selected
      • Update name – loads the objects current name to the name tag, then names the object
      • Name Heirarchy
  • Assertions:
    • A given name can only be used by one object in a scene
    • An objects iterator cannot be 0 unless no other object in the scene either has that objects name or name dictionary
    • Named objects have priority to iterators they bare