Introduction to Maya Programming

Download Report

Transcript 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
2
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.
3
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Introduction to Alias
•
•
•
•
Alias Research, 1983.
Wavefront Technologies, 1984.
Alias|Wavefront under SGI, 1995.
Alias®, 2003.
4
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.
5
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Let’s Use Maya
•
•
•
•
Basic transformation.
Selection by object, component.
Polygonal modeling.
Mirror.
6
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Lecture Outline
•
•
•
•
•
Introduction
Philosophy behind Maya
Maya programming
Tutorial: exporter
Assignment
7
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.
8
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Philosophy Overview
• Naming Conversion
• Data Structure
• Function Sets
9
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Naming Conversion
Prefix Logical Grouping
Example
M
Maya class
MPoint
MPx
Proxy object
MPxNode
MIt
Iterator class
MItDag
MFn
Function set
MFnMesh
10
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
3D Rendering Pipeline
•
•
•
•
•
Static model
Shading
Texture
Animation
Rendering
11
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
3D Rendering Pipeline
•
•
•
•
•
Static model
Shading
Texture
Animation
Rendering
12
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
3D Rendering Pipeline
•
•
•
•
•
Static model
Shading
Texture
Animation
Rendering
See test.avi
13
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Pipeline: Data
Model
Viewpoint of data
Textured Model
Animated Model
…
14
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Pipeline: Operators
Polygon Manipulator
Viewpoint of operators
Shader
Animation Curve
…
15
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Structure in Maya
• Node Structure
• Directed Acyclic Graph
• Dependency Graph
16
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Node Hierarchy
17
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Function Sets
• Objects are hidden as handles
(IDs).
• Use Function sets to access
objects.
18
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Function Sets in Diagram
Data Hierarchy
Group
GraphicsGrp
DSPGrp
NetworkGrp
Function Set Hierarchy
GroupFn
GraphicsGrpFn
DSPGrpFn
19
NetworkGrpFn
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++) {
…
}
20
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++) {
…
}
21
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Lecture Outline
•
•
•
•
•
Introduction
Philosophy behind Maya
Maya programming
Tutorial: exporter
Assignment
22
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.
23
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.
24
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Lecture Outline
•
•
•
•
•
Introduction
Philosophy behind Maya
Maya programming
Tutorial: exporter
Assignment
25
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Tutorial: exporter
• Exporter:
• Input: scene file (.mb/.ma)
• Platform: Maya
• Output: obj file (.obj)
26
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.
27
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Exporter
• Traverse all nodes.
• Pick out mesh nodes.
• Extract data.
•
•
•
•
Vertices
Polygons
Materials
Animation curves
28
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()
29
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];
…
}
}
30
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()) {
…
}
}
31
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.
32
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Lecture Outline
•
•
•
•
•
Introduction
Philosophy behind Maya
Maya programming
Tutorial: exporter
Assignment
33
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Assignment
34
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/
35
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.
36
Shuen-Huei Guan, CMLAB, CSIE,
NTU @2003
Thanks for your attendance