introduction to maya programming shuen-huei guan cml, csie, national taiwan university 2003/10/7
TRANSCRIPT
Shuen-Huei Guan, CMLAB, CSIE, NTU @20032
Overview
• Introduction• Philosophy behind Maya• Maya programming• Tutorial: exporter• Assignment
Shuen-Huei Guan, CMLAB, CSIE, NTU @20033
Why?
• Maya is everywhere, especially in game / film / animation.
• Maya expert := Artist + Computer Scientist.
• Uncle Sam needs you.
Shuen-Huei Guan, CMLAB, CSIE, NTU @20034
Introduction to Alias
• Alias Research, 1983.• Wavefront Technologies, 1984.• Alias|Wavefront under SGI, 1995.• Alias®, 2003.
Shuen-Huei Guan, CMLAB, CSIE, NTU @20035
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 @20036
Let’s Use Maya
• Basic transformation.• Selection by object, component.• Polygonal modeling.• Mirror.
Shuen-Huei Guan, CMLAB, CSIE, NTU @20037
Lecture Outline
• Introduction• Philosophy behind Maya• Maya programming• Tutorial: exporter• Assignment
Shuen-Huei Guan, CMLAB, CSIE, NTU @20038
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 @20039
Philosophy Overview
• Naming Conversion
• Data Structure
• Function Sets
Shuen-Huei Guan, CMLAB, CSIE, NTU @200310
Naming Conversion
Prefix Logical Grouping Example
M Maya class MPoint
MPx Proxy object MPxNode
MIt Iterator class MItDag
MFn Function set MFnMesh
Shuen-Huei Guan, CMLAB, CSIE, NTU @200311
3D Rendering Pipeline
• Static model• Shading• Texture• Animation• Rendering
Shuen-Huei Guan, CMLAB, CSIE, NTU @200312
3D Rendering Pipeline
• Static model• Shading• Texture• Animation• Rendering
Shuen-Huei Guan, CMLAB, CSIE, NTU @200313
3D Rendering Pipeline
• Static model• Shading• Texture• Animation• Rendering
See test.avi
Shuen-Huei Guan, CMLAB, CSIE, NTU @200314
Pipeline: Data
Model
Textured Model
Animated Model
…
Viewpoint of data
Shuen-Huei Guan, CMLAB, CSIE, NTU @200315
Pipeline: Operators
Polygon Manipulator
Shader
Animation Curve
…
Viewpoint of operators
Shuen-Huei Guan, CMLAB, CSIE, NTU @200316
Structure in Maya
• Node Structure
• Directed Acyclic Graph
• Dependency Graph
Shuen-Huei Guan, CMLAB, CSIE, NTU @200318
Function Sets
• Objects are hidden as handles (IDs).
• Use Function sets to access objects.
Shuen-Huei Guan, CMLAB, CSIE, NTU @200319
Function Sets in DiagramData Hierarchy
Group
GraphicsGrp DSPGrp NetworkGrp
Function Set Hierarchy
GroupFn
GraphicsGrpFn DSPGrpFn NetworkGrpFn
Shuen-Huei Guan, CMLAB, CSIE, NTU @200320
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 @200321
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 @200322
Lecture Outline
• Introduction• Philosophy behind Maya• Maya programming• Tutorial: exporter• Assignment
Shuen-Huei Guan, CMLAB, CSIE, NTU @200323
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 @200324
Introduction to MEL
• Familiar C-style grammar.• GUI maker.• All you do is through MEL.
• Maya := DLLs + MEL.
Shuen-Huei Guan, CMLAB, CSIE, NTU @200325
Lecture Outline
• Introduction• Philosophy behind Maya• Maya programming• Tutorial: exporter• Assignment
Shuen-Huei Guan, CMLAB, CSIE, NTU @200326
Tutorial: exporter
• Exporter:• Input: scene file (.mb/.ma)• Platform: Maya• Output: obj file (.obj)
Shuen-Huei Guan, CMLAB, CSIE, NTU @200327
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 @200328
Exporter
• Traverse all nodes.• Pick out mesh nodes.• Extract data.
• Vertices• Polygons• Materials• Animation curves
Shuen-Huei Guan, CMLAB, CSIE, NTU @200329
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 @200330
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 @200331
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 @200332
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 @200333
Lecture Outline
• Introduction• Philosophy behind Maya• Maya programming• Tutorial: exporter• Assignment
Shuen-Huei Guan, CMLAB, CSIE, NTU @200335
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 @200336
Appendix
• Maya Personal Learning Edition for Maya Complete 5• Free downloading coming Oct. 15,
2003.• No Maya Dev-kit.• Plug-ins does not work.