click to edit master subtitle style. red9 metadata : metadata coding in a maya production pipeline...
TRANSCRIPT
Click to edit Master subtitle style
Red9 MetaData : MetaData Coding in a Maya Production Pipeline Mark Jackson, Technical Animation Director Crytek UK
Part of the Red9 StudioPack - open source tool suite for Maya
Red9_MetaData is just one module in the extensive suite of tools
Available directly from Autodesk Exchange website – linked from Maya’s help menu
Autodesk Certified app
Source code on GitHub
All platforms - Win / OSX / Linux, supported from Maya 2010 (Python 2.6)
Supported by Crytek and integrated as the core of our internal pipelines
Red9 MetaData : What we'll be covering in this talk
What is Red9_MetaData and how can it benefit you?
Basics of MetaData API base class
MetaRig – friendly out of the box rigging and animation support
Internal Production Examples
CryMetaRig - rigging
CryExportMeta - exporters
CryFacialMeta – facial systems
Getting into the code – subclassing, things to be aware of and key functions
Open floor to questions
Red9 MetaData : What are the benefits of using MetaData?
Python API to manage data and systems intuitively inside Maya
Totally generic and expandable, designed to be subclassed – Morpheus2
Handles Maya attributes in a more pythonic manner, with auto-complete
Ability to walk Maya nodes / networks as class structures – ideal for rigging
Factory class - Maya nodes represent python classes directly
MClass attr on node determines class instantiated
Visually designing code as Maya node networks
Internally caches MObject
Default uses Maya ‘network’ nodes, but this is configurable
Power is in the dot complete!
Red9 MetaData
Attribute handler demo
Red9 MetaClass : Attribute handlers
Any node in Maya can be turning into basic meta wrapped objects
Gives you instant auto complete on all attributes in the editor
Maya node attrs are all synced and bound to the Python Object
Supports complex attrs – doubleArray, double3, float3 etc
Full JSON serialization
Message attrs auto connect and return data
addAttr can be used to force update **kws
Red9\examples\MetaData_Getting_Started.py
Red9 MetaData
CryMetaRig – demo video
Red9 MetaRig : subclass - out of the box complex rig support
MetaData gives us the ability to walk nodes as class structures
MetaRig is just a standard subclass of MetaClass
Designed to be overloaded and expanded
CryMetaRig – internal subclass of MetaRig, core to internal pipelines
MetaRig wraps standard Red9 core functionality for you
In-built PoseCache support, PoseCompare, AttrMaps, ZeroPose, Mirror class
Created by simple macro using internal calls, wrapped to make things easier – see Morpheus example
Red9 MetaData : Export production example
CryExport Tag- entry point for the exporter, sub-classed for characters, props etc..
CryTimeRange- manages sub-timeranges and paths for export node
CryAnimSettings - caches and writes out animSettings per export
mRigs = r9Meta.getMetaNodes(mTypes=cMeta.CryMetaRig)
Red9 MetaData : Export production example
CryExport Tag- entry point for the exporter, sub-classed for characters, props etc..
CryTimeRange- manages sub-timeranges and paths for export node
CryAnimSettings - caches and writes out animSettings per export
exportTag = mRig.exportTagexportTags = r9Meta.getMetaNodes(mInstances=cryMeta.CryExport_BaseTag)
Red9 MetaData : Export production example
CryExport Tag- entry point for the exporter, sub-classed for characters, props etc..
CryTimeRange- manages sub-timeranges and paths for export node
CryAnimSettings - caches and writes out animSettings per export
exportTag.timeRanges
Red9 MetaData : Export production example
CryExport Tag- entry point for the exporter, sub-classed for characters, props etc..
CryTimeRange- manages sub-timeranges and paths for export node
CryAnimSettings - caches and writes out animSettings per export
exportTag.timeRanges[0].animSettings
Red9 MetaData : Export production example
CryExport Tag - entry point for the exporter, sub-classed for characters, props etc.
CryTimeRange - manages sub-timeranges and paths for export node
CryAnimSettings - caches and writes out animSettings per export for Sandbox
Simple example of how using MetaData cleans up your code
Facial Systems!!!!
Facial Systems!!!!
Red9 MetaData
CryMetaFacial – demo video
Red9 MetaData : CryMetaFacial production example
Cleanly designed node and class structures around MetaNode
One core entry point to manage the systems, subclassed from MetaRig
SubMeta nodes to group and retrieve data cleanly and intelligently
Uses __bindData__ to sync channels on the FacialCore dynamically
Facial control board and is purely a logic board, connects directly to the core via meta
Everything kept in sync so any age of facial rig will ALWAYS, on file load inherit and rebuild all the nodes expression channels
Dynamically keeps all export pipelines in sync and up to date
Red9 MetaData : Subclassing – Registery
r9Meta.RED9_META_REGISTERY:
New subclasses have to be registered!
def registerMClassInheritanceMapping()
r9Meta.RED9_META_NODETYPE_REGISTERY:
Only registered nodeTypes will be returned as MNodes – for speed
def registerMClassNodeMapping(nodeTypes=None):
baseTypes=['network','objectSet','HIKCharacterNode','HIKControlSetNode']
Red9 MetaData : key functions to be aware of
self.mNode : the Maya Node itself
self.__bindData__ : allows you to bind attrs on instantiation of the class
self.getChildren : key function used to get nodes in a network
self.lockState : manages if the node is internally locked on creation
@nodeLockManager : decorator – Manages the lockState for you
self._forceAsMeta : by default all returns and searches come back as dag path strings – speeds up the codebase. This flag switches it so that ALL returns are always instantiated metaNodes.
Other standard nodes which I’m gradually expanding:
• MetaHIKControlSetNode / MetaHIKCharaterNode
• MetaHUDNode
Red9 MetaData : Summary
MetaData helps you manage data in a more fluid manner
Makes handling attribute data very simple
Helps prototyping and managing class structures
MetaRig – specifically extended to help TD’s gain fast access to Red9 AnimTools
Keeps systems flexible and code clean
Aides in visually designing node systems
Makes my life in production 1000% easier!!
Red9 : Online Reference
GitHub : https://github.com/markj3d/Red9_StudioPack
Red9 : http://red9consultancy.com
Red9 Vimeo Channel : https://vimeo.com/user9491246
metaData part1 : https://vimeo.com/61841345
metaData part2 : https://vimeo.com/62546103
metaData part3 : https://vimeo.com/64258996
metaData part4 : https://vimeo.com/72006183
metaData HUD : https://vimeo.com/65006622
Rigging Dojo : Character Engineering Course http://www.riggingdojo.com/