1 / 37

Introduction to Maya Programming

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.

Download Presentation

Introduction to Maya Programming

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. Introduction to Maya Programming Shuen-Huei Guan CML, CSIE, National Taiwan University 2003/10/7

  2. Overview • Introduction • Philosophy behind Maya • Maya programming • Tutorial: exporter • Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

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

  4. Introduction to Alias • Alias Research, 1983. • Wavefront Technologies, 1984. • Alias|Wavefront under SGI, 1995. • Alias®, 2003. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

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

  6. Let’s Use Maya • Basic transformation. • Selection by object, component. • Polygonal modeling. • Mirror. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  7. Lecture Outline • Introduction • Philosophy behind Maya • Maya programming • Tutorial: exporter • Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

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

  9. Philosophy Overview • Naming Conversion • Data Structure • Function Sets Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  10. Naming Conversion Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  11. 3D Rendering Pipeline • Static model • Shading • Texture • Animation • Rendering Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  12. 3D Rendering Pipeline • Static model • Shading • Texture • Animation • Rendering Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  13. 3D Rendering Pipeline • Static model • Shading • Texture • Animation • Rendering See test.avi Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  14. Pipeline: Data Model Viewpoint of data Textured Model Animated Model … Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  15. Pipeline: Operators Polygon Manipulator Viewpoint of operators Shader Animation Curve … Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  16. Structure in Maya • Node Structure • Directed Acyclic Graph • Dependency Graph Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  17. Node Hierarchy Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  18. Function Sets • Objects are hidden as handles (IDs). • Use Function sets to access objects. Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  19. Data Hierarchy Function Set Hierarchy Group GroupFn GraphicsGrp GraphicsGrpFn DSPGrp DSPGrpFn NetworkGrp NetworkGrpFn Function Sets in Diagram Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

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

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

  22. Lecture Outline • Introduction • Philosophy behind Maya • Maya programming • Tutorial: exporter • Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

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

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

  25. Lecture Outline • Introduction • Philosophy behind Maya • Maya programming • Tutorial: exporter • Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  26. Tutorial: exporter • Exporter: • Input: scene file (.mb/.ma) • Platform: Maya • Output: obj file (.obj) Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

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

  28. Exporter • Traverse all nodes. • Pick out mesh nodes. • Extract data. • Vertices • Polygons • Materials • Animation curves Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

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

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

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

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

  33. Lecture Outline • Introduction • Philosophy behind Maya • Maya programming • Tutorial: exporter • Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

  34. Assignment Shuen-Huei Guan, CMLAB, CSIE, NTU @2003

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

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

  37. Thanks for your attendance

More Related