::A Tidier Toolbox?::

October 25th, 2011 by hamish download the zooToolBox

I’ve been wanting to tidy up the toolbox for a LONG time now.  I’ve been slowly chipping away at the task the last few months. I think its finally in a decent enough shape to release.  So here it is.

So whats new I hear you ask?  Well…

  • Complete animation library re-write: It finally does what I’ve always wanted it to do – saving out both local space animation data AND world space animation data.  Which isn’t useful all the time, but sometimes it can be a real lifesaver.  Plus because the tool works based on selection, you can load part of the clip in worldspace and the rest in local space.  The tool still works and looks exactly the same, but under the hood things are much nicer.
  • XferAnim is also a complete re-write to slot in better with the new anim clip.  They both share a lot more code now.
  • Easier install: There are no longer dagMenuProc scripts that you have to rename.  The toolbox should setup the dagMenuProc automatically when it loads.  There is even an option that will attempt to setup the toolbox to auto-load on maya start (although I haven’t tested this on very many setups yet so its hard to know how robust this feature is).

So basically now all you should need to do is unzip the toolbox to your maya/scripts folder, startup maya and run the zooToolbox MEL command.



This post is public domain

This entry was posted on Tuesday, October 25th, 2011 at 02:45 and is filed under main. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

  • mikael persson

    Great to see an update! But I found a few issues with this latest release that I am wondering about.
    No matter how I create my leg I still can’t seem to get a proper ball roll. The toe follows along with the foot and doesn’t stay put.
    I’ve tried using both the Manual Rig Builder tool to specify my original skeleton parts and the Skeleton Builder where I move and snap all the created bits.

    When I use the Roll Ball attribute the joint below it gets stretched elongating my foot.

    If instead I try and use the CST that comes with your latest build I get a:
    // Error: Cannot find procedure “zooMatchHasParity”. //
    When selecting my legs/arms

    This is all on a clean install from your latest ToolBox build.

    However the CST in your zooToolBox_0408 works great. But I am real curious about the pose mirroring tools and the rest of your latest toolBox.

    Should it help to troubleshoot things if I sent you a rig that I’ve built?

    Thanks a lot for releasing this for free like this!

  • Anonymous

    Hi there Mikael!
    Sorry to hear you’re having problems.  Yes, if you could send me the rig you’ve built that would be very useful!  It’ll make both understanding the issue and debugging the core problem much easier/faster.

  • http://pulse.yahoo.com/_7FXYSCOCOD2NSOPPAUEZXXIWXM Clint

    Great update to your tools.  I’m really eager to use the Anim Library again but am getting an error no matter how I install it.  

    When I RT Click and try to publish to Global I get the following error.

    # Error: Event Failed: clipPublished, (,), {}: from line 225 in the function processEvent in the script C:/Users/creagan/Documents/maya/scriptszooPyMayabaseMelUI.py #

    Also I had version working earlier this year with an older version of the script and had 3-5 people all using the same poses and anims from a server. Being able to publish like that was great. I’m hoping to get it that way again with this version.Any help you may have would be appreciated. Thanks for sharing so much cool stuff.

  • http://www.jonasavrin.com Jonas Avrin

    Really exciting update.  I hope the little kinks get worked out so I can download it!

  • Jake H

    Hi Hamish
    Cheers for the update, I am  just using  your Skeleton builder to make a quadraped rig,  once I have finished editing the skeleton (mirrored the legs) and re-aligned the joints -  I cannot create a rig with  a single click :
    I get the following error:
    # Error: KeyError: userName # 

    If I build the rig  section by section I have better success, but it still falls over on the back satyr legs:
    # Warning: No objects specified that can have connections. #
    Although the create rig menu  can find the generated joints!
    When I move onto the front legs (Front Leg Quadraped) i get the following error:
    # Error: TypeError: doBuild() takes exactly 5 non-keyword arguments (4 given) #

    I am running Maya 2012 on Win 7  64 bit, running your latest ZooToolbox as of this post.


  • Anonymous

    Hiya Clint,
    have you set the location for the global clips?  There isn’t really a great way to do this currently and I really need to put in a readme for this sort of stuff.  But this is possibly happening because the global location doesn’t exist or doesn’t have write access?

  • Anonymous

    Cheers Jake, I think that error has been found and fixed – I’ll double check.  I haven’t released the fixes yet but I can send you a build if you want to test it out for me?

  • Jake H

    Cheers Hamish.
    Yeah if you can send on a build that would be great, I will ping you via gmail for instuctions on download.

    Thanks mate

  • http://pulse.yahoo.com/_7FXYSCOCOD2NSOPPAUEZXXIWXM Clint

    Thanks for the reply.  
    Where can I set the Global path? Is that something I should do in the code itself by applying the path to a particular variable? I only get a right click window over the pose icon display area, and have only pose and anim clip create options
    Otherwise right now in the Animation Library window I only have a Show menu where File menu usually sits in a menu panel, and it does not expand and returns an error. SCRIPTSpythonzooPyMayaanimLibUI.py”, line 621, in buildShowMenuandpythonzooPyMayaanimLibUI.py”, line 498, in getLocalVisibilityAttributeError: ‘AnimLibLayout’ object has no attribute ‘UI_local’ #Thanks for your help.

  • Anonymous

    Cheers Jonas!  The couple of bugs presented here have been fixed.  I’ll most likely do another release before the year is out, so stay tuned for that!

  • Anonymous

    So the global path is defined in the zooPy/presets.py script.  I need to spend some time figuring out how to make this an easy piece of data to define, but I’m not quite sure how best to do that just now.

    Anyway, open up zooPy/presets.py and right at the top there is a variable called “_GLOBAL_BASE_DIR”.  Set that to the location you want the global clips to be stored.  For example:

    _GLOBAL_BASE_DIR = Path( “c:/global/zooPresetData” )


    _GLOBAL_BASE_DIR = Path( “//network/shared/data/zoo” )

    As for the UI_local bug – The show menu is redundant.  It’ll be gone in the next release, so for now, just don’t click on it!  ;)

  • http://twitter.com/robertoraio Roberto Raio

    Hey Hamish,

    Thanks a lot for the update. Just a quick question about ZooXferAnim, I can’t find the File-Load/Write menu to import/export the animation, am I missing something? 


  • Anonymous

    G’day Robbie,
    no you’re not missing anything.  I removed them because it made more sense to me to delegate file based animation tasks to the animation library tool.  You can right click on a clip and choose the “map names manually” option to load the clip in the xfer anim UI.

    Having said all that, I could fairly easily put an import/export menu in there that just calls the functionality in anim lib…

  • http://twitter.com/robertoraio Roberto Raio

    It makes sense that you removed it then, thanks.

    I am having troubles using the Animation Library tool…(I am getting a lot of errors), is there a guide/help I can read? A friend of mine passed me a pose he exported with it and I have no idea how to load it form the animation library (Sorry but I was so used to using the old XferAnim import/export).
    Again, thank you for your help.

  • Aitor Gaston

    Hello Hamish,

    Just trying your tidier toolbox and like it a lot. Thanks for keeping your zooToolBox updated. I found a non working feature though. When trying to save an animation clip from the Animation Library, after I select all the chacater controllers and type the name for the anim file, Maya gives me an error:

    # Error: AttributeError: ‘module’ object has no attribute ‘OpenMayaAnim’ #

    Is there something I can do to fix this? “new pose clip” works fine…

    I’ll keep using zooXferAnim on the meantime. Thanks again!

  • Anonymous

    Thanks Aitor!
    Yes, this problem has actually been found and fixed – I haven’t released it yet though.  I will try to release it soon…

  • Anonymous

    Thanks for the feedback Roberto.  You should be able to put the file next to other clip files.  They live, by default, in your home/zoo/presets/animLib/libraryName folder.

    I am trying to put together an easier system for defining the preset directories so hopefully this sort of thing will become easier soon.

  • Aitor Gaston

    Sir, you are awesome!! I’ll keep an eye on your blog. Have a good one :D

  • http://twitter.com/robertoraio Roberto Raio

    Thanks for your reply, I have found the folder, but I have a .znm file to import the animation from, whereas the anim library saves out .anim files. Is there any way to get that to work?
    Also I get this error whenever I try to save out an animation:

    # Error: AttributeError: ‘module’ object has no attribute ‘OpenMayaAnim’ #

    Thanks a lot for helping me out man.

  • Lloyd Burr

    Great to hear you’ve been updating these tools, I’m very interested to use the Animation Transfer but I keep running into this error…

    # Error: object of type ‘float’ has no len()

    I’m using Maya 2009 32bit version on Windows7-64bit, any help would be greatly appreciated. Thanks!

    # Error: object of type ‘float’ has no len()
    # Traceback (most recent call last):
    #   File “C:Documents and SettingslburrMy Documentsmaya2009scriptszooPyMayaxferAnimUI.py”, line 167, in on_xfer
    #     clip = animClip.AnimClip.Generate( mapping.srcs )
    #   File “C:Documents and SettingslburrMy Documentsmaya2009scriptszooPyMayaanimClip.py”, line 527, in Generate
    #     channelClip = ChannelClip.Generate( nodes )
    #   File “C:Documents and SettingslburrMy Documentsmaya2009scriptszooPyMayaanimClip.py”, line 477, in Generate
    #     dataDict[ attrName ] = KeyframeData( ‘%s.%s’ % (node, attrName) )
    #   File “C:Documents and SettingslburrMy Documentsmaya2009scriptszooPyMayaanimClip.py”, line 60, in __new__
    #     if len( times ) == 1:
    # TypeError: object of type ‘float’ has no len() #

  • Anonymous

    Hiya Lloyd – thats an interesting error.  I bet it happens if there is only one key on something.  Maya is quite retarded with many of its commands.  My bet is that in the case that a channel only has one key maya returns a float instead of a list containing a single float.

    Anyway, thanks for the heads up.  I’ll try to reproduce the error and fix it!

  • Anonymous

    No, sorry the znm files aren’t supported anymore.  The new format is a lot faster.  The only way would be to roll back to an older version of xferAnim

  • Aitor Gaston

    Hi again Hamish,

    for some silly reason, after I downloaded your update, I deleted the old zootoolbox but since I need to export and import animation, I installed it again. When trying to export keyframes with the old zooxferAnim, I get some error and nothing happens afterwards. Do you have an eta for the tidier toolbox fixed release?


  • Joe Mandia

    Hi there Mikael! I am new to the toolbox and having a difficult time to get it to launch.
    I am running Maya2012 x64 in Windows 7 x64. I just keep getting the cannot find the procedure zootoolbox. Not sure what it is I am doing wrong. Any help would be great! thanks!

  • Anonymous

    G’day there Joe.

    To install you should be able to unzip the file into your “scripts” directory.  Its usually found here:  c:/Users//Documents/maya/scripts

    Or something like if you’re on windows.  If you’re on mac it’ll be something like ~/maya/scripts.

    Anyway, once you’ve unzipped it you should see a couple of files and 3 directories called “zooMel”, “zooPy” and “zooPyMaya”.  You should also see a file called zooToolbox.mel.

    Open up maya and run the MEL command:

    And that should be it.

  • Joe Mandia

    Hey Hammish, thanks for the response! (I’m an idiot for calling you Mikael! Sorry about that!)
    I actually have it in the exact place you mentioned and every other script directory I could find and still no go.

    the path i have is:

    and what is in there is this:

    and this is what it spits out when i try to run it:

    // Error: Cannot find procedure “zooToolBox”. //

  • Anonymous

    You have a capital B.  Try with a lower case B like this:


  • Joe Mandia

    Hahaha, man I’m an idiot. Thanks for pointing it out!! Works like a charm! Thanks for the great tool!!

  • Anonymous

    Hi Hamish , I really surprised to see the Zoo Tool Box and i am trying to build up Scaleton but i am not able to create mirror pose,would you guide me to create a mirror Scaleton ??Mean where is the name conversation menu where i can mention R to L ??

  • Calle Halldin

    Hey i get this error:
    # Error: UnicodeEncodeError: ascii #

    please help me :]

  • http://www.facebook.com/diogocavalcanti Diogo Cavalcanti

    Hello, thanks a lot for your work, it has been helping me a lot.
    however, I am trying to use the animation library with Maya 2012, and I am getting this error:
    # Error: AttributeError: ‘module’ object has no attribute ‘OpenMayaAnim’
    I saw Aitor had the same problem, had you fixed that?
    thanks again!

  • kevin_scott

    Hey Hammish – Kevin scott here from Dr D

    I am unable to load the tool box ‘at work’ ;)

    source “/home/kevscott/maya/2012-x64/scripts/zooToolboxPy/zooToolbox.mel”;

    import zooToolbox; zooToolbox.ToolboxWindow()
    # Error: line 2: No module named zooToolbox
    # Traceback (most recent call last):
    # File “”, line 1, in
    # File “/sww/gfx/lib64/python2.6/prixfixe/OrderedImport.py”, line 46, in __import
    # module = self.baseImport(name, globals, locals, fromlist, level)
    # ImportError: No module named zooToolbox #

    import zooToolbox; zooToolbox.ToolboxWindow()
    # Error: line 2: No module named zooToolbox
    # Traceback (most recent call last):
    # File “”, line 1, in
    # File “/sww/gfx/lib64/python2.6/prixfixe/OrderedImport.py”, line 46, in __import
    # module = self.baseImport(name, globals, locals, fromlist, level)
    # ImportError: No module named zooToolbox #

    not sure if its a pythin version issue or not
    hope you are ding well