Complete Maya Programming Volume II

An In-depth Guide to 3D Fundamentals, Geometry, and Modeling


  • David Gould, Weta Digital, New Zealand

David Gould's acclaimed first book, Complete Maya Programming: An Extensive Guide to MEL and the C++ API, provides artists and programmers with a deep understanding of the way Maya works and how it can be enhanced and customized through programming. In his new book David offers a gentle, intuitive introduction to the core ideas of computer graphics. Each concept is explained progressively and is fully implemented in both MEL and C++ so that an artist or programmer can use the source code directly in their own programs. Geometry and modeling are covered in detail with progressively more complex examples demonstrating all of Maya's possible programming features.
David Gould's first volume is widely regarded as the most authoritative reference on Maya programming. Volume II continues this tradition and provides an unmatched guide for the artist and programmer tackling complex tasks.
View full description


Intermediate to advanced Maya developers, technically savvy artists, technical directors, and students; in the film, television, and game industries


Book information

  • Published: August 2005
  • ISBN: 978-0-12-088482-7


"A great follow-up to Volume I! Volume II is an in-depth guide to the mathematical and geometric concepts indispensable to advanced Maya programmers."
—Larry Gritz, Exluna/NVIDIA

Table of Contents

1 Introduction1.1 Example Files1.1.1 Compiling Example Plug-ins1.1.2 Sourcing Example MEL Scripts1.2 Executing MEL Code in the Script Editor
2 Points2.1 Dimensions2.2 Cartesian Coordinates2.3 Homogeneous Coordinates2.4 Polar and Spherical Coordinates2.5 Conversions2.5.1 Cartesian to Homogeneous2.5.2 Homogeneous to Cartesian2.5.3 Cartesian to Polar2.5.4 Polar to Cartesian2.5.5 Cartesian to Spherical2.5.6 Spherical to Cartesian2.6 MEL2.7 C++ API2.8 Locators
3 Vectors3.1 MEL3.2 C++ API3.3 Adding3.4 Subtracting3.5 Scaling3.6 Length3.6.1 MEL3.6.2 C++ API3.7 Distance Between Points3.7.1 MEL3.7.2 C++ API3.8 Normalizing Vectors3.8.1 MEL3.8.2 C++ API3.9 Dot Product3.9.1 Angle Between3.9.2 Length Squared3.9.3 Perpendicular Projection3.10 Cross Product3.10.1 Perpendicular Vector3.10.2 Area of Triangle3.11 Points Versus Vectors
4 Rotations4.1 Angles4.1.1 MEL4.1.2 C++ API4.2 Rotations4.3 Orientation Representations4.3.1 Euler Angles4.3.2 Quaternions
5 Transformations5.1 Matrices5.1.1 Matrix Multiplication5.1.2 Matrix Transpose5.1.3 Identity Matrix5.1.4 Inverse Matrix5.1.5 MEL5.1.6 C++ API5.2 Transforming Points5.2.1 MEL5.2.2 C++ API5.3 Transforming Vectors5.3.1 MEL5.3.2 C++ API5.4 Transforming Normals5.4.1 MEL5.4.2 C++ API
6 Transform Nodes6.1 Pivot Points6.2 Transformation Matrices6.2.1 Querying Transformation Matrices6.2.2 Editing Transformation Matrices6.3 Hierarchies of Transformations6.3.1 Transformation Spaces6.3.2 MEL6.3.3 C++ API
7 Coordinate Frames7.1 Up Axis7.1.1 MEL7.1.2 C++ API7.2 Handedness7.3 Custom Coordinate Frames7.3.1 C++ API
8 Polygonal Meshes8.1 Displaying Meshes8.1.1 General8.1.2 Components8.1.3 Normals8.1.4 Back-face Culling8.1.5 UV Texture Coordinates8.1.6 Vertex Colors8.1.7 Nonplanar Faces8.2 Querying Meshes8.2.1 Vertices8.2.2 Edges8.2.3 Polygons8.2.4 Face Vertices8.2.5 Normals8.2.6 UV Texture Coordinates8.2.7 Blind Data8.3 Creating Meshes8.3.1 Problematic Meshes8.3.2 Creation Checks8.3.3 Molecule1 Plug-in8.3.4 Molecule2 Plug-in8.3.5 Molecule3 Plug-in8.3.6 Molecule4 Plug-in8.4 Editing Meshes8.4.1 Construction History8.4.2 Supporting Construction History8.4.3 Supporting Tweaks8.4.4 Mesh-editing Framework8.4.5 Displace Mesh Plug-in
9 Nurbs9.1 Concepts9.1.1 Control Vertex (CV)9.1.2 Hull9.1.3 Span9.1.4 Degree9.1.5 Order9.1.6 Edit Points9.1.7 Curve Point9.1.8 Parameterization9.1.9 Knots9.1.10 Form9.1.11 Surface Point9.1.12 Surface Isoparms9.1.13 Surface Patches9.1.14 Surface Curves9.1.15 Trimmed Surfaces9.2 NURBS Curves9.2.1 Displaying Curves9.2.2 Querying Curves9.2.3 Creating Curves9.2.4 Editing Curves9.3 NURBS Surfaces9.3.1 Displaying Surfaces9.3.2 Querying Surfaces9.3.3 Creating Surfaces9.3.4 Editing Surfaces
10 Subdivision Surfaces10.1 Concepts10.1.1 Control Mesh10.1.2 Subdivision10.1.3 Limit Surface10.1.4 Creases10.1.5 Hierarchical Subdivisions10.1.6 Ordinary and Extraordinary Points10.1.7 Subdivision Scheme10.2 Displaying Subdivision Surfaces10.3 Querying Subdivision Surfaces10.3.1 Components10.3.2 Creases10.3.3 UV Texture Coordinates10.3.4 MEL10.3.5 C++ API10.4 Creating and Converting Subdivision Surfaces10.4.1 Polygonal Mesh to Subdivision Surface10.4.2 Subdivision Surface to Polygonal Mesh10.4.3 NURBS Surface to Subdivision Surface10.4.4 Subdivision Surface to NURBS Surface10.5 Editing Subdivision Surfaces10.5.1 MEL
11 Contexts (Tools)11.1 SelectRingContext1 Plug-in11.1.1 Usage11.2 SelectRingContext2 Plug-in11.2.1 Installation11.2.2 Usage11.3 SelectVolumeContext1 Plug-in11.3.1 Installation11.3.2 Usage
A Further LearningA.1 Online ResourcesA.1.1 Companion Web SiteA.1.2 Additional Web SitesA.2 Maya ApplicationA.2.1 DocumentationA.2.2 Examples
B Further ReadingB.1 MathematicsB.2 ProgrammingB.2.1 GeneralB.2.2 C++ LanguageB.3 Computer GraphicsB.3.1 GeneralB.3.2 ModelingB.3.3 AnimationB.3.4 Image Synthesis