part of the red9 studiopack - open source tool suite for maya

24
Click to edit Master subtitle style

Upload: kelly-conway

Post on 31-Dec-2015

28 views

Category:

Documents


2 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

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

Click to edit Master subtitle style

Page 2: Part of the Red9 StudioPack - open source tool suite for Maya
Page 3: 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

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

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

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

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

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!

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

Red9 MetaData

Attribute handler demo

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

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

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

Red9 MetaData

CryMetaRig – demo video

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

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

Page 10: Part of the Red9 StudioPack - open source tool suite for Maya
Page 11: Part of the Red9 StudioPack - open source tool suite for Maya

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)

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

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)

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

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

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

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

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

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

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

Facial Systems!!!!

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

Facial Systems!!!!

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

Red9 MetaData

CryMetaFacial – demo video

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

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

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

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

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

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

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

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

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

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/

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

Thanks for staying awake!

Mark Jackson

[email protected]