This is the entire table of contents for the Complete Maya Programming book.
CONTENTS
PREFACE
SOURCE FILES
1. INTRODUCTION
1.1 MAYA'S PROGRAMMABILITY
1.1.1 Customization
1.1.2 Integration
1.1.3 Automation
1.1.4 Extensions
1.2 PROGRAMMING INTERFACES
1.2.1 MEL
1.2.2 C++
1.2.3 Mel or C++?
Ease of Use
Specific Functionality
Cross-Platform Portability
Speed
Disclosure
2. FUNDAMENTAL MAYA CONCEPTS
2.1 MAYA ARCHITECTURE
2.1.1 Overview
2.2 THE DEPENDENCY GRAPH
2.2.1 3D Application Design
Past Approaches
Maya Approach
2.2.2 The Scene
2.2.3 Visualizing the Dependency Graph
2.2.4 Data Flow
2.2.5 Nodes
2.2.6 Attributes
2.2.7 Compute Function
Dependent Attributes
Time
2.2.8 Connecting Nodes
2.2.9 DAG Nodes
Transforms and Shapes
Parenting
DAG Paths
The Underworld
Instances
2.2.10 Dependency Graph Updating
Push-Pull Approach
Updating in Practice
Keyframe Animation Updating
3. MEL
3.1 INTRODUCTION
3.1.1 Behind the Scenes
3.2 THE MEL PROGRAMMING LANGUAGE
3.2.1 Commands
Issuing Commands
Command Arguments
Command Help
Command Query
Command Edit
Command Modes
3.2.2 Variables
Variable Types
Automatic Variable Types
Automatic Type Conversions
3.2.3 Comments
3.2.4 Operators
Assignment Operator
Arithmetic Operators
Booleans
Relational Operators
Logical Operators
Operator Precedence
3.2.5 Looping
For
While
Do-While
Infinite Loops
Continue
Break
3.2.6 Procedures
3.2.7 Scope
Global and Local
Initialization of Globals
Conflicts
Global Procedures
Script Editor
3.2.8 Additional Execution Methods
Command Results
Eval Command
3.2.9 Efficiency
Explicit Type Declaration
Array Sizes
3.2.10 Additional Constructs
Assignment Chaining
In-place Arithmetic Operators
Increment and Decrement Operators
Conditional Operator
Switch Statement
For-in Statement
3.3 SCRIPTING
3.3.1 Text Editor
3.3.2 Storing Scripts
Default Script Directories
Custom Script Directories
Automatic Startup
3.3.3 Development Preparation
3.3.4 Sourcing
3.3.5 Debugging and Testing
Save Before Executing!
Showing Line Numbers
Tracing Script Execution
Displaying Warnings and Errors
Runtime Checking
Determining Types
3.3.6 Versioning
3.3.7 Deployment
Updating
3.4 OBJECTS
3.4.1 Basics
ListAll Script
3.4.2 Hierarchies
3.4.3 Transforms
Transformation Matrices
Spaces
ObjToWorld Script
SpaceToSpace Script
3.4.4 Attributes
Dynamic Attributes
Attribute Information
3.5 ANIMATION
3.5.1 Time
3.5.2 Playback
3.5.3 Animation Curves
Functions
Keyframing
Evaluation
Infinity
Keys
Examples
3.5.4 Skeletons
OutputJoints Script
ScaleSkeleton Script
CopySkeletonMotion Script
3.5.5 Motion Paths
3.6 GRAPHICAL USER INTERFACES
3.6.1 Introduction
3.6.2 Fundamental Concepts
3.6.3 Windows
3.6.4 Layouts
ColumnLayout
RowLayout
GridLayout
FormLayout
FrameLayout
TabLayout
ScrollLayout
MenuBarLayout
3.6.5 Controls
Menus
Buttons
Check Boxes
Radio Buttons
Text
Lists
Groups
Images
Panels
Tools
3.6.6 Connecting Controls
Attribute Groups
NameField
Other Elements
3.6.7 User Feedback
Help
Displaying Progress
3.7 EXPRESSIONS
3.7.1 Learning Expressions
Wiggle
Flash
Magnet
3.7.2 Expression Guidelines
Attribute Assignment Only
Supported Attribute Types
Avoid setAttr and getAttr Commands
Connected Attributes
Automatic Deletion
3.7.3 Debugging Expressions
Error Checking
Tracing
Disabling
Broken Connections
Object Renaming
3.7.4 Particle Expressions
Creation and Runtime Expression Evaluation
Per Object and Per Particle Attributes
Vector Components
3.7.5 Advanced Expressions
Combining Expressions with Keyframe Animation
4. C++ API
4.1 INTRODUCTION
4.2 FUNDAMENTAL CONCEPTS
4.2.1 Abstracted Layer
4.2.2 Classes
Naming Convention
Design
4.2.3 MObject
4.2.4 MFn Function Sets
Custom Function Sets
4.3 DEVELOPING PLUGINS
4.3.1 Plugin Development under Windows
Setup
Execution
Editing
Debugging
Release
4.3.2 Initialization and Uninitialization
HelloWorld2 Plugin
4.3.3 Errors
Checking
Reporting
Integration
4.3.4 Loading and Unloading
4.3.5 Deployment
Updating
4.4 COMMANDS
4.4.1 Creating Commands
4.4.2 Posts1 Plugin
4.4.3 Adding Arguments
4.4.4 Posts2 Plugin
4.4.5 Posts3 Plugin
4.4.6 Providing Help
Automatic Help
Posts4 Plugin
4.4.7 Undo and Redo
Mayas Undo/Redo Mechanism
MPxCommand Support for Undo/Redo
Undoable and Non-undoable Commands
Posts5 Plugin
4.4.8 Edit and Query
Clock Plugin
4.5 NODES
4.5.1 GoRolling Plugin
4.5.2 Melt Plugin
4.5.3 GroundShadow Plugin
4.5.4 Attributes
Creating
Compound Attributes
Default Values
Attribute Properties
Dynamic Attributes
4.5.5 Compute Function
4.5.6 Plugs
4.5.7 Datablocks
4.5.8 Node Design Guidelines
Simplicity
Context
Locality
Networks of Nodes
4.6 LOCATORS
4.6.1 BasicLocator Plugin
4.7 MANIPULATORS
4.7.1 BasicLocator2 Plugin
4.8 DEFORMERS
4.8.1 SwirlDeformer Plugin
4.8.2 Dependency Graph Changes
4.8.3 Accessories
4.8.4 SwirlDeformer2 Plugin
4.9 ADVANCED C++ API
4.9.1 General
Referencing Nodes
Proxies
Networked and Non-Networked Plugs
4.9.2 Dependency Graph
Contexts
Datablocks
Propogation Flags
Handling Pass-Through
Cyclic Dependencies
APPENDIX A - Additional Resources
ONLINE RESOURCES
Companion Website
Additional Websites
Alias | Wavefront
Highend3D
Bryan Ewert
MAYA APPLICATION
Documentation
Learning MEL
Learning C++ API
MEL Reference
C++ API Reference
Examples
MEL Examples
C++ API Examples
APPENDIX B - MEL FOR C PROGRAMMERS
APPENDIX C - FURTHER READING
Mathematics
Programming
General
C++ Language
Computer Graphics
General
Modeling
Animation
Image Synthesis
GLOSSARY
INDEX
ABOUT THE AUTHOR