Friday, 30 May 2014

Red9 StudioPack v1.43 released

Well another month and another new build, as with the last one, and all future builds, I'll be taking release tags on GitHub that you can just browse to and download directly from there, far easier than Google Drive!

This release is focused on stability in the animationUI. In 1.42 I started to integrate animLayer support but there were some bugs in the way the ui handled the calls so I've gone back to the drawing board and hopefully, come up with integration that guides you through the extar steps as and when you need to.

A few bits of logic to be aware of:

  • CopyKeys has it's own 'mergeLayers' checkBox, this now controls ONLY the copyKeys call from the UI. The animLayer call here is non-destructive.
  • SnapTransforms - over time this has a pre-copyKey's checkbox but I've removed the merge layer logic from it. Instead it now, by default, does an animation merge in the background before running the pre-copy of keys, prior to the snap itself. No animLayers are destroyed or effected, this is purely a backend function.
  • MirrorAnimation - This now will prompt you if you have animLayers on any of the mirror objects, if so it will ask if you want to merge them first. Mirror is the only call that has to act on flattened animLayers and is destructive, you will loose the layers but gain a mirrored anim sequence.

There's many other fixes, PoseBlend now habndles the undoStack correctly, it was caching every iteration of the slider before, not good! Also the poseLib search box now takes comma separated text, so you can filter for multiple tags at the same time.

Main commits:

  • Fix - Red9_Anim - fixes to the poseBlender code so it now handles the undoQueue correctly, as chunks and returns object selection correctly.
  • New - Red9_Anim - Pose search now accepts multiple strings, comma separated ie 'walk,run,idle'
  • Fix - Red9_Anim - fix's in the way that all the commands wrappers in the UI handle AnimLayers - more info and dialog's added to guide you through.
  • New - Red9_Meta - added new call 'getNodeConnections' which will replace the 'getNodeConnectionAttr' in calls, designed to return all connections between a given node and the mNode, with filtering
  • Mod - Red9_Core - added double3 handling to the lockChannels call, this was causing issues when passed double3 like 'translate' 
  • Fix - Red9_Audio - added correct float conversion to all the timecode and framerate conversion functions

Any feedback as usual just ping me



Tuesday, 27 May 2014

Develop Conference - MetaData Coding in a Maya Production Pipeline

Develop Conference Talk

 I'm going to be doing a talk at Develop Conference in Brighton this year, going through how we've integrated the Red9 MetaData API into our production pipelines at Crytek. I'm in the middle of writing the talk and figuring out how much detail to go into.

The conference is happening 8-10 July and the early bird discount prices end soon.

Here's what I'm planning on, but if any of you out there are running MetaData I'd love your input too:

This talk will go through the benefits of integrating MetaData concepts in a Maya production pipeline. Red9 Metadata is Python API, part of the Red9 StudioTools, an open source toolkit freely available on the Autodesk Exchange website and authored by myself.

 In this talk I'll be showing how we've integrated this concept to all aspects of the Crytek Maya animation pipeline. Meta is used in our animation rigs as a separate schema / network to manage data, binding tools to the systems via a generic layer. It's used in our facial systems to manage relationships in code, breaking a complex system into manageable and logical chunks. We also use meta as the entry point for our exporter, the idea of connecting characters to export nodes which in turn connect to time and settings nodes.


  • The background, why? 
  • The basics of the MetaData Api base class, what does it do and what benefits does it give us. 
  • Basics of metaData internal attribute handling and auto-complete. 
  • Factory class aspects, the core of the systems, walking nodes as classes. 
  • Using Maya nodes as class representations to structure your code. 
  • Class inheritance and attribute binding. 
  • Practical examples in production. 
  • Generic nature of metadata, how it lends itself to tool pipelines. 
  • Subclassing, how's it's been heavily subclassed and expanded by the Morpheus2 project. 

See you there!



Thursday, 8 May 2014

V1.42 update....

So anybody who follows me on G+ will have seen the pose on v1.42 and the fact that I caught a big bug in the way that the AnimUi dealt with animLayers, particularly when using the mirror tools. This is now fixed on the GitHub trunk and I'll be releasing a new patched version of v1.42 very soon.

The new build has had a lot of extra work done on the UI to try and make it feel more solid. The mirror tools now work correctly with animLayers, if they are found it'll prompt you that I need to merge them and let you confirm. The SnapTransforms will, if animLayers are found and the pre-copyKeys is set, automatically merge the layers down before processing, then return them once finished.

Oh and I've added the ability to add multiple search's in the PoseUI search field, so you can filter for "walk,run,idle" which will just show poses that match any of those strings. I'm debating having this as a regex search so you could do more complex filters, either that or have a flag that switches this new behavior to be either additive, or intersection. If Intersection it would find only poses that have 'walk, 'run' and 'idle' in their name.

There are a few other small fixes that have gone in since 1.42 but these are just continued developments.