240 likes | 343 Views
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
E N D
Red9 MetaData : MetaData Coding in a Maya Production PipelineMark 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.exportTag exportTags = 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
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! defregisterMClassInheritanceMapping() r9Meta.RED9_META_NODETYPE_REGISTERY: Only registered nodeTypes will be returned as MNodes – for speed defregisterMClassNodeMapping(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/
Thanks for staying awake! Mark Jackson info@red9consutancy.com