380 likes | 822 Views
Introduction to Maya Programming. Shuen-Huei Guan CML, CSIE, National Taiwan University 2003/10/7. Overview. Introduction Philosophy behind Maya Maya programming Tutorial: exporter Assignment. Why?. Maya is everywhere, especially in game / film / animation.
E N D
Introduction to Maya Programming Shuen-Huei Guan CML, CSIE, National Taiwan University 2003/10/7
Overview • Introduction • Philosophy behind Maya • Maya programming • Tutorial: exporter • Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Why? • Maya is everywhere, especially in game / film / animation. • Maya expert := Artist + Computer Scientist. • Uncle Sam needs you. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Introduction to Alias • Alias Research, 1983. • Wavefront Technologies, 1984. • Alias|Wavefront under SGI, 1995. • Alias®, 2003. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Introduction to Maya • Released in 1998. • Rumor has it that • Implemented by over 200 PhDs. • Too big s.t. no one knows it well. • Alias® is going bigger. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Let’s Use Maya • Basic transformation. • Selection by object, component. • Polygonal modeling. • Mirror. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Lecture Outline • Introduction • Philosophy behind Maya • Maya programming • Tutorial: exporter • Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Philosophy behind Maya • Before being a programmer, be a philosopher first. • Truly, It is ugly. But luckily, it is not that ugly as Microsoft things. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Philosophy Overview • Naming Conversion • Data Structure • Function Sets Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Naming Conversion Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
3D Rendering Pipeline • Static model • Shading • Texture • Animation • Rendering Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
3D Rendering Pipeline • Static model • Shading • Texture • Animation • Rendering Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
3D Rendering Pipeline • Static model • Shading • Texture • Animation • Rendering See test.avi Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Pipeline: Data Model Viewpoint of data Textured Model Animated Model … Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Pipeline: Operators Polygon Manipulator Viewpoint of operators Shader Animation Curve … Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Structure in Maya • Node Structure • Directed Acyclic Graph • Dependency Graph Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Node Hierarchy Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Function Sets • Objects are hidden as handles (IDs). • Use Function sets to access objects. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Data Hierarchy Function Set Hierarchy Group GroupFn GraphicsGrp GraphicsGrpFn DSPGrp DSPGrpFn NetworkGrp NetworkGrpFn Function Sets in Diagram Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Example: Traditional Class CMesh* poMesh = poScene->getMesh(“dove”); poVexArray = poMesh->getVexArray(); iPolyNum = poMesh->getPolyNum(); for (i=0; i<PolyNum; i++) { … } Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Example: Function Sets MMesh oMesh = oScene.getMesh (“dove”); MFnMesh oMeshFn(oMesh); MArray oArray = oMeshFn.getVexArray (); iPolyNum = oMeshFn.getPolyNum (); for (i=0; i<iPolyNum; i++) { … } Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Lecture Outline • Introduction • Philosophy behind Maya • Maya programming • Tutorial: exporter • Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Maya Programming • 2 choices for Maya programming • Maya Embedded Language (MEL) • C++ API • Not exclusive to each other. • Not a set-relationship. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Introduction to MEL • Familiar C-style grammar. • GUI maker. • All you do is through MEL. • Maya := DLLs + MEL. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Lecture Outline • Introduction • Philosophy behind Maya • Maya programming • Tutorial: exporter • Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Tutorial: exporter • Exporter: • Input: scene file (.mb/.ma) • Platform: Maya • Output: obj file (.obj) Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Things you need to know • Foundation.lib OpenMaya.lib. • Use Maya wizard to ease life. • Inherit from MPxFileTranslator. • Put plug-in in ~Maya/bin/plug-ins. • Sample: lepTranslator. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Exporter • Traverse all nodes. • Pick out mesh nodes. • Extract data. • Vertices • Polygons • Materials • Animation curves Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Exporter: Initialization • Entries of plug-in (dll / mll). • initializePlugin() • uninitializePlugin() • Pseudo constructor to Maya • MPxFileTranslator::creator() • Entry for exporter • MPxFileTranslator::writer() Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Exporter: extract vertices MItDag dagIter( MItDag::kBreadthFirst, MFn::kInvalid, &status); for ( ; !dagIter.isDone(); dagIter.next()) { MObject obj = dagIter.item (); MFnMesh (obj, &status); MPointArray vertexList; fnMesh.getPoints (vertexList, MSpace::kWorld ); for (i=0; i< vertexList.length(); i++) { vertexList[i].cartesianize (); MPoint point = vertexList[i]; … } } Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Exporter: extract polygons MItDag dagIter( MItDag::kBreadthFirst, MFn::kInvalid, &status); for ( ; !dagIter.isDone(); dagIter.next()) { MObject obj = dagIter.item (); MFnMesh (obj, &status); MPointArray vertexList; fnMesh.getPoints (vertexList, MSpace::kWorld ); MItMeshPolygon piter (obj, &status); for (; !piter.isDone(); piter.next()) { … } } Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Exporter: notes • Ignore Intermediate nodes. • Unload plug-in before you replace it. • Use memory as effectively as possible. • Maya Developer's Tool Kit. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Lecture Outline • Introduction • Philosophy behind Maya • Maya programming • Tutorial: exporter • Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Reference • Maya API White Paper • Book: • David Gould. Complete Maya Programming, Morgan-Kaufmann Publishers • 3D User Magazine • Web: • http://www.aliaswavefront.com/ • http://www.highend3d.com/ • http://www.learning-maya.com/ Shuen-Huei Guan, CMLAB, CSIE, NTU @2003
Appendix • Maya Personal Learning Edition for Maya Complete 5 • Free downloading coming Oct. 15, 2003. • No Maya Dev-kit. • Plug-ins does not work. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003