| |
| |
Preface | |
| |
| |
Special Acknowledgment | |
| |
| |
| |
Maya Under the Hood | |
| |
| |
In this chapter you will learn | |
| |
| |
Why Look Under the Hood? | |
| |
| |
The Dependency Graph, Attributes, and Connections | |
| |
| |
| |
Using the Hypergraph to Explore the Dependency Graph | |
| |
| |
Transform Hierarchy and Parent/Child Relationships | |
| |
| |
Examining the Hierarchy | |
| |
| |
Transform and Shape Nodes | |
| |
| |
| |
Exploring Transform and Shape Nodes, Instancing, and History | |
| |
| |
MEL and Maya's User Interface | |
| |
| |
What to Remember About How Maya Works Behind the Scenes | |
| |
| |
| |
The Basics of MEL Commands | |
| |
| |
In this chapter you will learn | |
| |
| |
Can I Use MEL Without Scripting? | |
| |
| |
Command Line and Command Feedback Line | |
| |
| |
Command Shell | |
| |
| |
Script Editor | |
| |
| |
Script Editor Versus Command Shell | |
| |
| |
Script Editor's Messages as MEL Code | |
| |
| |
Making a Shelf Button for a MEL Script | |
| |
| |
Saving a MEL Script | |
| |
| |
Seductive Dangers of the Status Message Area | |
| |
| |
The whatIs Command | |
| |
| |
Basic Structure of MEL Commands | |
| |
| |
Where to Find Information About Maya and MEL on the Internet | |
| |
| |
Newsgroups | |
| |
| |
How to Use MEL Scripts Found on the Internet | |
| |
| |
What to Remember About How to Use MEL Without Writing Scripts | |
| |
| |
| |
Using Expressions | |
| |
| |
In this chapter you will learn | |
| |
| |
What Is an Expression? | |
| |
| |
How Does an Expression Work? | |
| |
| |
Equals Sign: Equality and Assignment | |
| |
| |
How Maya Implements Expressions | |
| |
| |
Is Maya's Expression Language the Same as MEL? | |
| |
| |
When (and When Not) to Use an Expression | |
| |
| |
Defining Relationships Between Attributes | |
| |
| |
What Is Operator Precedence? | |
| |
| |
Walkthrough of Maya's Expression Language | |
| |
| |
Definitions of Variables | |
| |
| |
Computing the Values of Attributes | |
| |
| |
Assigning Computed Values | |
| |
| |
| |
Eyes | |
| |
| |
Analyzing the Problem | |
| |
| |
Planning the Eyes' Animation Controls | |
| |
| |
Writing the Expression | |
| |
| |
What to Remember About Using Expressions | |
| |
| |
| |
Controlling Particles with Expressions | |
| |
| |
In this chapter you will learn | |
| |
| |
Two Kinds of Particle Object Attributes: Per Object and Per Particle | |
| |
| |
All About Vectors | |
| |
| |
Two Kinds of Expressions: Ordinary and Particle | |
| |
| |
| |
Ordinary Expressions and a Newton Field | |
| |
| |
| |
A Simple Particle Expression | |
| |
| |
A Few Hints for Efficient Particle Expressions | |
| |
| |
| |
Helical Particles Around a Curve | |
| |
| |
What to Remember About Particle Expressions in Maya | |
| |
| |
| |
Problem Solving with MEL Scripting | |
| |
| |
In this chapter you will learn | |
| |
| |
MEL's Role in Maya: Building Scenes | |
| |
| |
Strategies for Planning MEL Applications | |
| |
| |
The Simplest User Interface | |
| |
| |
Creating, Editing, and Querying Nodes in MEL | |
| |
| |
Adding, Setting, and Getting Values of Attributes in MEL | |
| |
| |
Connecting Attributes in MEL | |
| |
| |
Creating and Connecting Expression Nodes in MEL | |
| |
| |
| |
Using MEL to Automate Setup for Spiral Particles | |
| |
| |
What to Remember About Writing MEL Scripts | |
| |
| |
| |
Variables and Data Types | |
| |
| |
In this chapter you will learn | |
| |
| |
Declaring Variables (and Not Declaring Them) | |
| |
| |
Environment Variables | |
| |
| |
MEL Statements and Type Checking | |
| |
| |
Simple and Aggregate Data Types | |
| |
| |
What to Remember About Variables and Data Types in MEL | |
| |
| |
| |
Using MEL Commands | |
| |
| |
In this chapter you will learn | |
| |
| |
What Is a MEL Command? | |
| |
| |
Structure of a MEL Command | |
| |
| |
Using MEL Commands in MEL Scripts | |
| |
| |
Avoid Using MEL Commands in Expressions | |
| |
| |
What to Remember About Using MEL Commands | |
| |
| |
| |
Manipulating Nodes in MEL | |
| |
| |
In this chapter you will learn | |
| |
| |
Using Is Command to Find Nodes by Name or Other Properties | |
| |
| |
Using Select Command to Manage Object Selection | |
| |
| |
Creating Nodes in a Maya Scene | |
| |
| |
Finding a Node's Parents and Children | |
| |
| |
Finding Information on Node Connections | |
| |
| |
About Maya's Node Types and the Node and Attribute Reference | |
| |
| |
What to Remember About Managing Nodes in MEL | |
| |
| |
| |
Controlling the Flow of Execution | |
| |
| |
In this chapter you will learn | |
| |
| |
Controlling the Flow of Script Execution | |
| |
| |
Basic Conditional Operations: if-else and switch | |
| |
| |
Loops | |
| |
| |
What to Remember About Controlling the Flow of Execution in MEL | |
| |
| |
| |
Procedures and Functions | |
| |
| |
In this chapter you will learn | |
| |
| |
Top-Down Design | |
| |
| |
| |
A Trip to the Grocery Store | |
| |
| |
What Are Procedures and Functions? | |
| |
| |
| |
Geometry-Constrained Locators | |
| |
| |
| |
Recursive Antenna | |
| |
| |
What to Remember About Procedures, Functions, and Top-Down Design in MEL | |
| |
| |
| |
Naming Nodes, Scripts, and Variables | |
| |
| |
In this chapter you will learn | |
| |
| |
Why Naming Conventions Are Important | |
| |
| |
Naming Scripts | |
| |
| |
Naming Variables | |
| |
| |
Naming Nodes | |
| |
| |
| |
Adding a Name Prefix to Objects in a Hierarchy | |
| |
| |
| |
Changing Name Prefixes in a Hierarchy | |
| |
| |
What Are Namespaces? | |
| |
| |
Strategies for Using Namespaces | |
| |
| |
What to Remember About Naming Scripts, Variables, and Nodes | |
| |
| |
| |
Designing MEL User Interfaces | |
| |
| |
In this chapter you will learn | |
| |
| |
What Is a User Interface? | |
| |
| |
What Maya Users Expect to See from a MEL Script | |
| |
| |
Questions to Answer Before Designing a User Interface | |
| |
| |
Designing and Testing a User Interface | |
| |
| |
Structure of a Dialog Box | |
| |
| |
What to Remember About Designing User Interfaces in MEL | |
| |
| |
| |
Simple MEL User Interfaces | |
| |
| |
In this chapter you will learn | |
| |
| |
Collecting Information from Users | |
| |
| |
Validating User Input: When and Why | |
| |
| |
Asking for Confirmation with confirmDialog | |
| |
| |
Asking User for Text String with promptDialog | |
| |
| |
Asking User to Pick File or Directory with fileDialog | |
| |
| |
Handling Warnings and Errors with Warning and Error Commands | |
| |
| |
Using Regular Expressions and match to Validate Data | |
| |
| |
How Regular Expressions Work | |
| |
| |
Validating Integers | |
| |
| |
Validating Floating-Point Numbers | |
| |
| |
Validating Object Names (Without Namespaces) | |
| |
| |
| |
Simple Dialogs and Input Validation | |
| |
| |
What to Remember About Simple MEL User Interfaces and Input Validation | |
| |
| |
| |
Custom Dialog Boxes | |
| |
| |
In this chapter you will learn | |
| |
| |
How to Structure a Script That Uses a Custom Dialog Box for Input | |
| |
| |
Dialog Boxes and Their Contents | |
| |
| |
| |
Making the Example Dialog Box | |
| |
| |
Common Types of Controls | |
| |
| |
Common Types of Layouts | |
| |
| |
| |
Dialog Box for Making Geometric Primitives | |
| |
| |
What to Remember About Building Custom Dialog Boxes in MEL | |
| |
| |
| |
Making Advanced Dialog Boxes with formLayout | |
| |
| |
In this chapter you will learn | |
| |
| |
Why Use formLayout? | |
| |
| |
Planning a Dialog Box for formLayout | |
| |
| |
Using formLayout: Overview | |
| |
| |
Using formLayout: Defining Placement Rules for UI Objects | |
| |
| |
Example: Implementing a Dialog Box with formLayout | |
| |
| |
What to Remember About Making Dialog Boxes with formLayout | |
| |
| |
| |
Making Advanced Dialog Boxes with Web Panels | |
| |
| |
In this chapter you will learn | |
| |
| |
What You Need to Know Before You Proceed | |
| |
| |
What Are Web Panels? | |
| |
| |
Learning Web Authoring | |
| |
| |
How a Dialog Box Built with Web Panels Works | |
| |
| |
Planning a Dialog Box for Web Panels | |
| |
| |
Creating a Web-Based Dialog Box for Maya | |
| |
| |
Launching a Web-Based Dialog Box from MEL | |
| |
| |
| |
Implementing a Dialog Box using JavaScript | |
| |
| |
Ideas for Dialog Boxes Built with Web Panels | |
| |
| |
What to Remember about Making Dialog Boxes with Web Panels | |
| |
| |
| |
Improving Performance with Utility Nodes | |
| |
| |
In this chapter you will learn | |
| |
| |
What Is a Utility Node? | |
| |
| |
When Should You Consider Using a Utility Node? | |
| |
| |
How to Create and Connect a Utility Node | |
| |
| |
| |
Using the plusMinusAverage Node to Find the Midpoint Between Two Locators | |
| |
| |
Common Utility Nodes | |
| |
| |
What to Remember About Improving Performance With Utility Nodes | |
| |
| |
| |
Installing MEL Scripts | |
| |
| |
In this chapter you will learn | |
| |
| |
Installing a Script to Make It Available in All Scenes | |
| |
| |
Installing a Script to Run When Maya Starts | |
| |
| |
Installing a Script into a Script Node in a Scene | |
| |
| |
Installing Custom Menus | |
| |
| |
Managing Button Shelves and Creating Custom Shelf Icons | |
| |
| |
What to Remember About Installing MEL Scripts | |
| |
| |
| |
Examples Using MEL with Particle Dynamics | |
| |
| |
| |
Introduction to Particle Goals | |
| |
| |
| |
Particle Goals on a Surface | |
| |
| |
| |
Using Goals on Multiple Surfaces | |
| |
| |
| |
Using Goals on Surfaces, Part 2 | |
| |
| |
| |
Examples Using MEL with Solid Body Dynamics | |
| |
| |
| |
Particle Collisions | |
| |
| |
| |
Collision Events | |
| |
| |
| |
Collisions Between Objects in Solid Dynamics | |
| |
| |
| |
Solid Dynamics and Particles | |
| |
| |
| |
Example of a Simple Crowd System | |
| |
| |
| |
Creating a Vehicle | |
| |
| |
| |
Vehicle Interaction | |
| |
| |
| |
Vehicle Environment | |
| |
| |
| |
Fine Tuning and Completing the Script | |
| |
| |
Full Script Reference: crowdSystem.mel | |
| |
| |
| |
Examples Using MEL in Character Rigging | |
| |
| |
| |
Character Controls | |
| |
| |
| |
Building a Character User Interface | |