introduction to maya programming shuen-huei guan cml, csie, national taiwan university 2003/10/7

37
Introduction to Maya Programming Shuen-Huei Guan CML, CSIE, National Taiwan University 2003/10/7

Upload: sybil-baldwin

Post on 13-Dec-2015

258 views

Category:

Documents


3 download

TRANSCRIPT

Introduction to Maya Programming

Shuen-Huei Guan

CML, CSIE, National Taiwan University

2003/10/7

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 @200317

Node Hierarchy

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 @200334

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.

Thanks for your attendance