Archive for the 'Announcements' Category

Wed, Jul 11th, 2012
posted by jjburton 09:07 AM

Short and simple vid this week on how to install the tools. Prolly should have done this a while back.

Work has been coming along with the rigger, gotta say my rudimentary code from last year is just lousy. That’s why we learn and grow, no?

If you’ve missed it, we’re lookin for feedback on where to proceed next. If you’d like to give us your input, please fill out the form here:


Mon, Jul 9th, 2012
posted by jjburton 02:07 PM
Most of the work stemmed from getting back to work on the modular rigger. Afraid it’s gonna be a long slog…:)
  • cgm.NameFactory
    • Made the simple do namer work better. Added a fastIterate option (default is True). Now if sceneUnique is false it doesn’t look in the scene for the name
    • fixed various bugs this introduced
  • Fixed a bunch of broken links stemming from attributes.deleteAttr changing to attributes.doDeleteAttr
  • cgm.controlBuilder
    • Fixed a problem from a function call change
  • cgm.PuppetFactory
    • Started the rigger, currently this is what it’s going to be called
    • Moved the size template maker to this class
    • Set up the class as self repairing for structure
  • cgm.Thingamarig
    • Started the tool, still VERY early. This week…
      • Puppet creation
      • Geo assignment
      • Axis picking
      • name changing
      • size template creation
  • cgm.AttrFactory
    • Added enum command on initialization call
    • Added initialValue keyword for a value ONLY set on creation
  • cgm.attributes
    • Doc fixes, and some bug fixes
    • + addPickAxisAttr(obj,name) – easy axis picker attribute
Tue, Jul 3rd, 2012
posted by jjburton 02:07 PM
Big progress for the week:
  • Updated the documentation for attrTools
  • Added buffer mode and controls to the snap marking menu
  • Lots of work on attributes front. Got a good handle on pretty much all types except multi attributes which we’ll swing back and hit later
  • Big addition this week was developing the attributes.doCopyAttr command. Maya’s own copyAttr command is a bit limited in a few ways:
    • Doesn’t support attribute copying on shape attributes
    • Doesn’t copy attribute settings (keyable, locked, etc)
    • Doesn’t allow remapping (i.e. attributes must match between objects)
  • By making our own, we’ve added some pretty cool functionality;
    • If an attribute to copy to doesn’t exist on the target, it’ll make one
    • Attribute mapping
    • copying attribute state flags
    • On the fly attribute conversion
Lessons Learned:
  • Maya’s copyAttr doesn’t support shapes annoyingly, so gotta make one. However, this has afforded more options
  • Deleting certain attributes can crash maya, yay!
  • Adding a softMin/Max to an attribute, makes it a slider in the attribute editor
  • a = b not good for copying, a = copy.copy(b) copies without the connection (make sure to import copy first:)
Next Up
  • Ryan’s estimating the first bit of the new web push will be ready next week
  • Getting back to the rigger, trying to get the base plan going on it.


Mon, Jul 2nd, 2012
posted by jjburton 09:07 AM


  • cgm.locinator
    • Made update reselect initial selection on a buffer mode update
  • cgm.snapMM
    • Added buffer tools
    • Added attrTool launcher
  • cgm.animTools
    • Added buffer tools to it
    • Made update reselect initial selection on a buffer mode update
  • cgm.attrTools
    • Made it try to load selection on call
    • Added softMin/Max options
    • Added right click menu on connection report to select them
  • cgm.AttrFactory
    • doCopyTo – used to copy values and connections between attributes
    • doDuplicateTo – used to duplicate an attribute from one object to another
    • doTransferTo – used for actually moving an attribute from one object to another
    • added soft mins and maxes and parent/children/siblings storage
    • Added soft max,min storage
    • Added storing of family info – parent,children, siblings
    • Added some better settings copying over
    • Added children command pass through commands to (doKeyable,doLocked,doHidden,set)
  • cgm.attributes
    • Had to do a bit of migration after discovering that copyAttr doesn’t work on objects without transforms
    • doBreakConnection
      • Modified to deither take (obj,attr) or (obj.attr) format
      • Updated to be able to correctly find parent connections (ie. translateX connected via translate)
    • returnObjAttrSplit – simple attr splitter since it’s a pretty common task
    • returnDriven/DriverAttribute commands to correctly find parent connections
    • returnAttrFamilyDict(obj,attr) = returns parent, children, sibling attributes in a dict format or false
    • doAddAttr(obj,attrName,attrType,*a, **kw) – generalized attr creation call
    • validateRequestedAttrType(attrType) – verifies an attr type call against an attrType Dict
    • returnStandardAttrFlags(obj,attr) – returns a dict of ‘keyable’,’locked’,’hidden’ states of an attribute
    •  returnMatchNameAttrsDict(obj,target,[attrs]) looks for name matches between attributes regardless of alias
    • returnNumericAttrSettingsDict
    • returnCompatibleAttrs(sourceObj,sourceAttr,target) –
    • validateAttrTypeMatch – simple match return to see if attribute type matches
    •  returnObjectsAttributeByTypeDict(obj,types=[]) – returns dict of attributes by type key
    •  doCopyAttr –
      • toObject(string) – obj to copy to
      • toAttr(string) — name of the attr to copy to . Default is None which will create an  attribute of the fromAttr name on the toObject if it doesn’t exist
      • values(bool) — copy values. default True
      • incomingConnections(bool) — default False
      • outGoingConnections(bool) — default False
      • keepSourceConnections(bool)– keeps connections on source. default True
      • copyAttrSettings(bool) — copy the attribute state of the fromAttr (keyable,lock,hidden). default True
      • connectSourceToTarget(bool) useful for moving attribute controls to another object. default False
Tue, Jun 26th, 2012
posted by jjburton 05:06 PM

Major avenues of progress for the week:

  • attrTools coming along well along with the accompanying modules
  • Added a buffer to Locinator along with an accompanying mode toggle
  • Added a few more hiding options for setTools (maya sets, anim layer sets)

Lessons learned from the week…

  • min/max values on Attributes only seem to be honored with float attributes
  • attributeQuery fails to return the correct value on:
    • keyable flag. Must use getAttr to get correct state
    • hidden flag. Must use getAttr with channelBox flag
  • if you change the enum options of an attribute in maya 2011 it will update the channelbox but not the attribute editor until you select something else then the object again. just deselecting the object and the object again won’t update, nor reopening the file after saving. Awesome.
    • Tried a function to manually toggle a couple selections and that didn’t work
    • Looked a little into ui update stuff, no joy. Moved on after a couple of strikes. Not a deal breaker
  • Alias attributes only affect the channel box
  • Odd bug with baseMelUI or maybe just a maya thing in maya 2013. If a text field is disabled, it clears the bgc. 2011 didn’t to do that.
  • Can assign the window as the parent to a ui element in Hamish’s baseMelUI with a self.get() function. Useful for formLayout


Mon, Jun 18th, 2012
posted by jjburton 10:06 AM

  • New build –
    • If you grabbed it first thing this morning, there’s a rev 2 up for today with a bug fix – loaded/active mode wasn’t working right
  • There’s new documentation on for setTools accessible via the nav on the side here
  • Working on attrTools and Locinator this week…
    • Locinator
      • Adding buffer tools to it for repetitive work
    • AttrTools
      • Wanna get ready for initial release
Tue, Jun 12th, 2012
posted by jjburton 11:06 AM

Just a quick update. Hopefully updates will be a bit more regular now (least till the next gig crush). Things are coming along well. Few bits:

  • cgm.setTools initial release in the last pack. Video above.
  • First open release of the beta tools. See post prior to this.
  • New format for builds like that post as an easy way for users to get a certain build
  • Work continuing on the web front. Hopefully have an announcement on that soon
  • Cool stuff:
    • Prometheus – great (a few plot inconsistencies notwithstanding). Amazing art design. Props.
    • Guild Wars 2 Beta and Torchligh 2 Beta – this year is lookin good for pc games:)
Mon, Jun 4th, 2012
posted by jjburton 09:06 AM

Well it’s about jolly time. I know. Sorry for the delays and the lack of vids. We’ve been swamped with work this month. Josh wrapped up his gig and is back coding this week, Ryan has been getting the initial web stuff going and Bokser is on a gig through the end of the month.

Here’s the notes from today’s tester release:

  • Bohdon Sayre new contributor!
    • boTriggers now includedWill work on looking at implementing more
  • General
    • Fixed a bad function call from ObjectFactory for .name(). The new call is .doName(). Was causing the control maker to error out
    • work on installer – wasn’t working on 2012
    • need to make the shelf uninstallable
    • Marking menus
    • More minor work
  • cgm.AnimTools
    • Morgan Loomis’ Copy Anim and Convert Rotation order now implemented
  • cgm.tdTools
    • Added John Doublestein’s Dynamic Parent Constraint Tool
    • zoo.SkinPropagationTool – link broke at some point.Fixed
    • Made polyUnite work with FFD’s. It’s a bit of a hack. Wanna look at cleaner implementation
    • returnSelectedAttributesFromChannelBox (NEW) – query for lots of stuff
    • returnObjectBuffers(NEW) – search a scene for object buffers for other tools
  • cgm.BufferFactory
    • now working pretty much as expected
  • cgm.bufferTools
    • starting working on the gui
    • Got some basic stuff working
  • cgm.attributes
    • Oh, stupid attributes lib. Lots and lots of work in it. Trying to unify calls where possible to my preferred method of (obj,attr) format rather than having to format everthing.
    •  simplified several commands – return driven/driver attribute/object in conjunction with buffer tools
    • doSetAttr – made to work with different attribute types. changes based on type
    • convertAttrType – new function to change an attribute from one type to another. Enum’s are stored to strings as ‘option1;option2’. Strings with a ‘;’ will split to enum options on conversion
      • storeInfo – modified to match attr type for storing for the previous bullet
  • Bugs reported
    • zooHudCTRL – fixed bug from missing zooDates.mel. Added it. Fixed. Amazing.
    • cgm.tdTools.cgmNameToFloat – missing an import
    • cgm.tdTools.cgmNameToFloat – wasn’t creating keyable attr. Fixed. Also made better reporting.
Wed, May 16th, 2012
posted by jjburton 12:05 PM

Been swamped on gigs so here’s the facial webinar Josh did a few weeks back. Thanks to Faceware for putting that together. The tools are coming along albeit at a slower pace. Hope to have some new stuff to show next week!

Wed, May 9th, 2012
posted by jjburton 10:05 AM

Sorry for the delay. Busy week:)
Lots of new tools rolled in from Morgan Loomis. Fantastic stuff. another reason why we’re glad this endeavor is taking shape. So many great tools out there that no one knows how to find em all. In keeping with that idea, we’re  thrilled to announce a new contributor – Bohdon Sayre. Woot!
  • New cgm.Marking Menu’s
    • Gotten a handle on setting up marking menus using zoo’s as a base and pushing them into a class wrapper from that
    • Set Key (default is s when setup) – meant to replace the s key
      • If no other function is selected, it acts just like Maya’s regular ‘s’ key
      • Reset selected (new!) – what a great tool. Reset transformations on an object or channels to default values
      • dragBreakdown
      • autoTangent
      • tweenmachine
      • locinator
      • animTools
      • ml Set Key
      • ml Hold
      • ml Delete Key
      • Plans – I wanna swing back and let the user set the default keying mode for the basic button press to improve on maya’s. For example, wanna include
        • breakdown mode – keys set are inbetween keys, maybe auto converts the key if they’re not
        • buffer key (assign a buffer to key everything in that buffer) More on buffers later
        • standard keying
    • Snapping (default is t key when setup)
      • Point Snap
      • Orient Snap
      • Parent Snap
      • Surface snap – requires last selected object to be a mesh, nurbs surface or nurbs curve
      • Match snap – using same functionality  from locinator/animTools
      • Loc Me
      • Tagging (from locinator)
        • Do you all think it worthwhile to allow tagging an object to another object and not just locators?
      • Matchmode – point/orient/parent
  • Bohdon Sayre new contributor!
    • boTriggers now included
    • Will work on looking at implementing more
  •  cgm.AnimTools
    • Morgan Loomis’ Copy Anim,Convert Rotation order and arc tracer now implemented
  • cgm.tdTools
    • Added John Doublestein’s Dynamic Parent Constraint Tool
  • cgm.attributes
    • convertAttrType – new function to change an attribute from one type to another. Enum’s are stored to strings as ‘option1;option2’. Strings with a ‘;’ will split to enum options on conversion
    • storeInfo – modified to match attr type for storing for the previous bullet
  • Bugs reported
    •  zooHudCTRL – fixed bug from missing zooDates.mel. Added it. Fixed.
    • cgm.tdTools.cgmNameToFloat – missing an import
    • cgm.tdTools.cgmNameToFloat – wasn’t creating keyable attr. Fixed. Also made better reporting.