1 / 24

Part of the Red9 StudioPack - open source tool suite for Maya

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

Download Presentation

Part of the Red9 StudioPack - open source tool suite for Maya

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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!

  4. Red9 MetaData Attribute handler demo

  5. 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

  6. Red9 MetaData CryMetaRig – demo video

  7. 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

  8. 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)

  9. 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)

  10. 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

  11. 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

  12. 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

  13. Facial Systems!!!!

  14. Facial Systems!!!!

  15. Red9 MetaData CryMetaFacial – demo video

  16. 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

  17. 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']

  18. 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

  19. 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!!

  20. 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/

  21. Thanks for staying awake! Mark Jackson info@red9consutancy.com

More Related