Wednesday, 16 July 2014

MetaData Develop Conference Talk notes

http://www.developconference.com/seminar/Coding-a-Maya-production-pipeline-with-MetaData

The talk went well, and I promised I'd make these available so here the links. The PowerPoint has notes on it that I used to remind me but hopefully you'll also find them useful too. The videos that I showed during the talk are also now on Vimeo (just got one more to upload) I recorded these in the studio so they're a bit noisy, they were only intended to be used a video tracks to talk over, but I think they might help if you have the ppt next to you.

So, PowerPoint is here:   Power Point: MetaData in a Maya Production Pipeline

Videos:

Video 1: MetaData Attribute Handlers
Video 2: MetaData - MetaRig

Video 3: MetaData - MetaFacial in the Crytek Pipelines To follow:

Hopefully you'll find these useful, mail me if you have any questions about the talk, or Red9

thanks

Mark

Friday, 4 July 2014

Now Autodesk Certified :)



Great news from Autodesk and the Exchange site, Red9 StudioPack is now an Autodesk certified application. The build on the Exchange site has also now been fully updated and wrapped into a solid installer that support Win, OSX and Linux.

Thanks to the guys at Autodesk for spotting an issue with the doc api links.

If you download from the exchange then please remember to add a rating to it, it keeps the app on the featured list.

thanks

Mark

Friday, 20 June 2014

More Audio goodness

I've just added extra functionality to the Audio handlers in Red9 that hopefully you'll all find useful. 

Firstly I've expanded on the conversion tools to handling timecode, we now have the full complement:

milliseconds_to_Timecode(milliseconds, smpte=True, framerate=None)
milliseconds_to_frame(milliseconds, framerate=None)
timecode_to_milliseconds(timecode, smpte=True, framerate=None)
timecode_to_frame(timecode, smpte=True, framerate=None)
frame_to_timecode(frame, smpte=True, framerate=None)
frame_to_milliseconds(frame, framerate=None)

We're using these internally to process timecode around our MoCap deliveries, converting time to the relevant units as and when required.



I've also added a new function to the Red9_Sound menu in the Trax Editor, 'Sync_BWavs' which is designed to automatically sync multiple BWav files to their internal timecode. BWav's are Braodcast Wav's used when recording audio with timecode as it embeds the data into the wav's header, very useful in production.

The new function processes either the selected audio nodes in Trax, or ALL wavs in the scene, depending on selection. It then inspects the internal BWav's timecode, and if found and valid it will shift the audio nodes in Maya to match their original timecode's, re-syncing them to the original shoots timelines. 

I've also done a few fixes to the AudioNode class, adding the setters that were missing in some of the properties.

cheers

Mark

Thursday, 5 June 2014

New AnimUI functions....


So a few updates. I've been working on the back-end to the AnimUI a fair bit recently and have exposed a few new options that should be useful to you all.

First one is the matchMethod - this is the code that takes 2 hierarchies and matches them, node for node to them process correctly. This is used by all the anim code calls, copyAttrs/Keys, poseLoad etc so it's a really low level feature. Now this has been there for a while but it wasn't actually hooked up correctly...ooops! There's been a flag to control the matchMethod but it was missing an option, and that in turn has caused a few of you issues.

The new option is 'index' and that turns OFF all the matching code and just takes the 2 hierarchies that the filter found, and zips them together in the order they were found. Why? well this is what Maya native does on all hierarchies, absolutely no intelligence just one to one mapping. It will now allow things like this to match:

AlphaRig_WristCtrl == BetaRig_WristCtrl

previously this would never match as there's no naming match there, other than me allowing you to enter a search and replace to the UI. With the index option it will match, as that node was found as the 4th child of the hierarchy in both rigs. This also means that the Pose's stored for Alpha_Rig will load correctly to Beta_Rig ;)

So what else, well I've added sort logic to the poseUI. You can do a number of new things in there. Firstly the searchBox takes comma separated searches, so you can add "walk,run,idle' and it will show those as a filter. You'll also notice there's 2 new icons, sort by name, and sort by date. This has been getting on my nerves as my facial library at work is 80+ shapes and if I add a new one I have a lot of scrolling to do!! So sort by date is a godsend.

These are in the GitHub branch and will shortly go into another live release, after testing ;)

cheers

Mark

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!

https://github.com/markj3d/Red9_StudioPack/releases/tag/1.43

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

thanks

Mark

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.

http://www.developconference.com/Content/Develop-2014

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.

Topics:

  • 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!

cheers

Mark

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.

cheers

Mark