INSTALLATION
General Installation Notes:
Files
The ExoSwitch Constraint comes with a number of files for installation. Though the installers are responsible for placing the various files that comprise the constraint system you should be aware of what is being installed for troubleshooting purposes.
Here is a list of files (NOTE: Installer will place files in proper destinations):
NOTE: For Maya 2011 on OSX there is no default plug-ins directory for the user. There is a plug-ins directory for the "Shared" user per version of Maya. So for 2011 the install directory for the bundle file would be /Users/Shared/Autodesk/maya/2011/plug-ins/
Licensing FYI
In order to use the exoSwitchConstraint the plug-in will look for a license file. It will look for the license file copied into a directory determined by the installation package for each operating system. This directory is also declared in the environment variable EXOTOOLSLICENSE.
NOTE: For Linux and OSX you will have to setup this environment variable!
Files
The ExoSwitch Constraint comes with a number of files for installation. Though the installers are responsible for placing the various files that comprise the constraint system you should be aware of what is being installed for troubleshooting purposes.
Here is a list of files (NOTE: Installer will place files in proper destinations):
- exoSwitchConstraint.extension (.so, .mll, .bundle)
- shelf_exoSwitchConstraint.mel
- exoSwitchConstraintUI.mel (GUI for creating constraint systems)
- exoSwitchConstraint.mel (Handles Graph Editor display management, mask config marking menus) • maskUI.py (Mask configuration creation, editing, clearing, copying and removing GUI) • AEexoSwitchConstraintTemplate.mel (The Attribute Editor Template File) • icons folder (this is the icons for the exoSwitchConstraint shelf)
NOTE: For Maya 2011 on OSX there is no default plug-ins directory for the user. There is a plug-ins directory for the "Shared" user per version of Maya. So for 2011 the install directory for the bundle file would be /Users/Shared/Autodesk/maya/2011/plug-ins/
Licensing FYI
In order to use the exoSwitchConstraint the plug-in will look for a license file. It will look for the license file copied into a directory determined by the installation package for each operating system. This directory is also declared in the environment variable EXOTOOLSLICENSE.
NOTE: For Linux and OSX you will have to setup this environment variable!
WINDOWS
Install Files:
To install the plug-in double click on the installation package. The installation software should automatically find the first available version of Maya. Go through the steps and complete the installation.
License Info:
The license file "ExoLicense" is put in the C: hard drive. There is an environment variable called EXOTOOLSLICENSE that has this directory associated with it. If for some reason you need to move the ExoLicense file you will have to update the EXOTOOLSLICENSE environment variable.
To install the plug-in double click on the installation package. The installation software should automatically find the first available version of Maya. Go through the steps and complete the installation.
License Info:
The license file "ExoLicense" is put in the C: hard drive. There is an environment variable called EXOTOOLSLICENSE that has this directory associated with it. If for some reason you need to move the ExoLicense file you will have to update the EXOTOOLSLICENSE environment variable.
OSX
Install Files:
To install the plug-in open the the ExoSwitch Constraint disk image (ExoTools.dmg).
Double click on the exoSwitchConstraint.mpkg file to start the installer and run through the installer steps. The installer will attempt to install the necessary files in the Shared user's Autodesk/maya/2011 directory. If no shelves directory exists in /Users/Shared/Autodesk/maya/2011 it will create one and drop the shelf file there.
License Info:
The installer will put the ExoLicense file into /Users/Shared/Autodesk/maya/2011.
The plug-in will look at this license to allow you to use the constraint. HOWEVER, you need to setup the environment variable EXOTOOLSLICENSE to point at the directory where the license file lives. There is nothing keeping you from moving the license file to another directory as long as the environment variable reflects that new location.
To set the environment variable edit your Maya.env or .bashrc files and add this line:
export EXOTOOLSLICENSE=/Users/Shared/Autodesk/maya/2011/ExoLicense
Here is a great resource on adding/editing environment variables for Maya:
environment variable
To install the plug-in open the the ExoSwitch Constraint disk image (ExoTools.dmg).
Double click on the exoSwitchConstraint.mpkg file to start the installer and run through the installer steps. The installer will attempt to install the necessary files in the Shared user's Autodesk/maya/2011 directory. If no shelves directory exists in /Users/Shared/Autodesk/maya/2011 it will create one and drop the shelf file there.
License Info:
The installer will put the ExoLicense file into /Users/Shared/Autodesk/maya/2011.
The plug-in will look at this license to allow you to use the constraint. HOWEVER, you need to setup the environment variable EXOTOOLSLICENSE to point at the directory where the license file lives. There is nothing keeping you from moving the license file to another directory as long as the environment variable reflects that new location.
To set the environment variable edit your Maya.env or .bashrc files and add this line:
export EXOTOOLSLICENSE=/Users/Shared/Autodesk/maya/2011/ExoLicense
Here is a great resource on adding/editing environment variables for Maya:
environment variable
LINUX
Install Files:
Download the ZIP file from the downloads page and unzip it.
Open a terminal and su as root. Change directory into the "ExoTools" directory that the zip file created you. In that directory is a file called maya2011Install. This is the installation script. To run it type the following in the terminal:
./maya2011Install
The installer will do the following:
Move the plug-in to either /usr/autodesk/maya2011-x64/bin/plug-ins or /usr/autodesk/maya/bin/plug-ins
Move the ExoLicense file to /home/$USER/maya/2011-x64
Move the icons into /home/$USER/maya/2011-x64/prefs/icons
Move the scripts into /home/$USER/maya/2011-x64/prefs/scripts
Move the shelf into /home/$USER/maya/2011-x64/prefs/shelves
License Info:
As mentioned above the install script will place the ExoLicense file into /home/$USER/maya/2011-x64
The plug-in will look at this license to allow you to use the constraint. HOWEVER, you need to setup the environment variable EXOTOOLSLICENSE to point at the directory where the license file lives. There is nothing keeping you from moving the license file to another directory as long as the environment variable reflects that new location.
To set the environment variable you can modify your .cshrc or .tcshrc file and use setenv. If your shell is bash you can set the variable in your .bashrc using export.
setenv EXOTOOLSLICENSE=/home/$USER/maya/2011-x64/ExoLicense
or
export EXOTOOLSLICENSE=/home/$USER/maya/2011-x64/ExoLicense
Here is a great resource on adding/editing environment variables for Maya:
environment variable
Download the ZIP file from the downloads page and unzip it.
Open a terminal and su as root. Change directory into the "ExoTools" directory that the zip file created you. In that directory is a file called maya2011Install. This is the installation script. To run it type the following in the terminal:
./maya2011Install
The installer will do the following:
Move the plug-in to either /usr/autodesk/maya2011-x64/bin/plug-ins or /usr/autodesk/maya/bin/plug-ins
Move the ExoLicense file to /home/$USER/maya/2011-x64
Move the icons into /home/$USER/maya/2011-x64/prefs/icons
Move the scripts into /home/$USER/maya/2011-x64/prefs/scripts
Move the shelf into /home/$USER/maya/2011-x64/prefs/shelves
License Info:
As mentioned above the install script will place the ExoLicense file into /home/$USER/maya/2011-x64
The plug-in will look at this license to allow you to use the constraint. HOWEVER, you need to setup the environment variable EXOTOOLSLICENSE to point at the directory where the license file lives. There is nothing keeping you from moving the license file to another directory as long as the environment variable reflects that new location.
To set the environment variable you can modify your .cshrc or .tcshrc file and use setenv. If your shell is bash you can set the variable in your .bashrc using export.
setenv EXOTOOLSLICENSE=/home/$USER/maya/2011-x64/ExoLicense
or
export EXOTOOLSLICENSE=/home/$USER/maya/2011-x64/ExoLicense
Here is a great resource on adding/editing environment variables for Maya:
environment variable
CONSTRAINT UI
Create A Constraint:
To create a constraint select one or more targets followed by the driving object.
Then run Animation -> Constrain -> exoSwitch
More control can be achieved by opening the option menu.
To create a constraint select one or more targets followed by the driving object.
Then run Animation -> Constrain -> exoSwitch
More control can be achieved by opening the option menu.
Help
Access online documentation of the plug-in. An internet connection is necessary for this menu to be funtional
Translation Driver
The object the constraint is going to use to control the translation of constrained nodes. In the case we only want the rotation of constrained nodes this field can be left blank.
Rotation Driver
The object the constraint is going to use to control the rotation of constrained nodes. In the case we only want the translation of constrained nodes this field can be left blank.
Grab Selected
Enter in the input field the object selected in the scene
Remove Item
Remove the driven object selected in the Driven Objects field
Remove All
Empty the Driven Objects field
Add
Setup the constraint with the inputs specified in the UI
Close
Abort the operation without creating a new constraint
Access online documentation of the plug-in. An internet connection is necessary for this menu to be funtional
Translation Driver
The object the constraint is going to use to control the translation of constrained nodes. In the case we only want the rotation of constrained nodes this field can be left blank.
Rotation Driver
The object the constraint is going to use to control the rotation of constrained nodes. In the case we only want the translation of constrained nodes this field can be left blank.
Grab Selected
Enter in the input field the object selected in the scene
Remove Item
Remove the driven object selected in the Driven Objects field
Remove All
Empty the Driven Objects field
Add
Setup the constraint with the inputs specified in the UI
Close
Abort the operation without creating a new constraint
Node Attributes:
The node has several attributes that control behavior. The attributes that are exposed in the channel box and AE are supposed to be manipulated or monitored by the user.
The node has several attributes that control behavior. The attributes that are exposed in the channel box and AE are supposed to be manipulated or monitored by the user.
Trans Driver (transDriver)
Shows the current translation driver. To change the translation driver choose one object from the pull down menu. The new object will be removed from the driven nodes list if it is not a rotation driver as well. If None is displayed there is no translation driver.
Rot Driver (rotDriver)
Shows the current rotation driver. To change the rotation driver choose one object from the pull down menu. The new object will be removed from the driven nodes list if it is not a translation driver as well. If None is displayed there is no rotation driver.
Driven Nodes (drivenNodes)
Shows a list of nodes that are driven by the constraint. None means no objects are currently being driven by the driver object(s).
Disabled Driven (disabledDriven)
This pull down menu shows the objects that are still connected to the constraint but have been disabled from its influence. This functionality is for objects that need to be constrained for part of an animation and need to be animated independently in another part of an animation.
Auto Switch (autoSwitch)
If this option is On (default) the constraint will automatically set the selected object (if connected to the constraint) as the translation and rotation driver of the system. Note: If different drivers were chosen in the UI when creating the constraint their status as drivers most likely will change with the next selection.
Auto Driver Select (autoDriverSelect)
If this option is On and there is animation on the constrained nodes the constraint is automatically going to select the current driver at any given frame. Default is Off.
Auto Key Switch (autoKeySwitch)
If this option is On then all changes to the transDriver or rotDriver are automatically keyframed. Default is On
Shows the current translation driver. To change the translation driver choose one object from the pull down menu. The new object will be removed from the driven nodes list if it is not a rotation driver as well. If None is displayed there is no translation driver.
Rot Driver (rotDriver)
Shows the current rotation driver. To change the rotation driver choose one object from the pull down menu. The new object will be removed from the driven nodes list if it is not a translation driver as well. If None is displayed there is no rotation driver.
Driven Nodes (drivenNodes)
Shows a list of nodes that are driven by the constraint. None means no objects are currently being driven by the driver object(s).
Disabled Driven (disabledDriven)
This pull down menu shows the objects that are still connected to the constraint but have been disabled from its influence. This functionality is for objects that need to be constrained for part of an animation and need to be animated independently in another part of an animation.
Auto Switch (autoSwitch)
If this option is On (default) the constraint will automatically set the selected object (if connected to the constraint) as the translation and rotation driver of the system. Note: If different drivers were chosen in the UI when creating the constraint their status as drivers most likely will change with the next selection.
Auto Driver Select (autoDriverSelect)
If this option is On and there is animation on the constrained nodes the constraint is automatically going to select the current driver at any given frame. Default is Off.
Auto Key Switch (autoKeySwitch)
If this option is On then all changes to the transDriver or rotDriver are automatically keyframed. Default is On
CONSTRAINT COMMANDS
exoExecSetKey
This command prevents Maya from queueing the setKeyframe commands in a script and forces them to be executed at the time they are called. Here is a code snipped of the command in action:
This command prevents Maya from queueing the setKeyframe commands in a script and forces them to be executed at the time they are called. Here is a code snipped of the command in action:
import maya.cmds as cmds
import maya.mel as mel
# Create Two Locators
loc1 = cmds.spaceLocator(p=(0, 0, 0))
cmds.move(0, 3, 0, loc1)
loc2 = cmds.spaceLocator(p=(0, 0, 0))
# Create A Constraint
commandToExec = 'exoSwitchConstraint -td "' + loc1[0] + '" -rd "' + loc1[0] + '" -dn {"' + loc2[0] + '"}'
constName = mel.eval(commandToExec)
# Keyframe The Master
cmds.setKeyframe(loc1[0], at='translateY', v=0, t=1)
cmds.exoExecSetKey()
cmds.setKeyframe(loc1[0], at='translateY', v=5, t=10)
cmds.exoExecSetKey()
exoSetKeyframe
This command is intended for internal use only.
It sets keyframes on objects connected to an exoSwitchConstraint.
Flag List:
This command is intended for internal use only.
It sets keyframes on objects connected to an exoSwitchConstraint.
Flag List:
- -att -attribute (string)
- -it -inputTangent (string)
- -ot -outputTangent (string)
- -km autoKeyMasters (on | off)
- -mwc -mwcName (string)
- -nt -nodeTime (string)
- -nv -nodeValue (string)
- -on -objectName (string)
- -tm -translationMaster (string)
- -rm -rotationMaster (string)
The constraint implements the following commands:
exoSwitchConstraint
This command is used to create, edit and manage exoSwitchConstraint nodes. See the Command area for detailed info.
cutVKey
This command is intended for internal use only.
It removes a virtual curve passed in as an argument.
Flag List:
printVKey
This command is intended for internal use only.
It returns the list of 'virtual keys' that exist on the exoSwitchConstraint attached to the passed or selected object.
Flag List:
exoSwitchConstraint
This command is used to create, edit and manage exoSwitchConstraint nodes. See the Command area for detailed info.
cutVKey
This command is intended for internal use only.
It removes a virtual curve passed in as an argument.
Flag List:
- Default Command Flags
- -name -n (string)
- -help -h
printVKey
This command is intended for internal use only.
It returns the list of 'virtual keys' that exist on the exoSwitchConstraint attached to the passed or selected object.
Flag List:
- -h -help
- -n -name (string)
MARKING MENU
A marking Menu is available to control some of the functionalities of the exoSwitch Constraint. It is available through the Alt - Right Click combination while having the mouse hovering over a constrained node.
If the original behavior of the Alt - Right Click is desired (Camera Dolly) then the Ctr-l hot-key can be used to turn the exoSwitch Marking Menu On and Off.
The marking menu can also be toggled by using the escTogglePoopUpMenu mel command.
If the original behavior of the Alt - Right Click is desired (Camera Dolly) then the Ctr-l hot-key can be used to turn the exoSwitch Marking Menu On and Off.
The marking menu can also be toggled by using the escTogglePoopUpMenu mel command.
Set Mask To:
List the available masks for the exoSwitch Constraint connected to the current object. The "None" mask is the default mask and it is always available.
Set To Rest
It sets a disabled slave object to the position where the constraint was first connected relative to the position of the master. In other words the relative position among objects belonging to the system is going to be restored using the current masters combination as starting point.
Set To Trans And Rot Master
Set the node under the mouse to be the current translation and rotation master.
Set To Trans Master
Set the node under the mouse to be the current translation master.
Set To Master
Set node under the mouse to be the current rotation master.
List the available masks for the exoSwitch Constraint connected to the current object. The "None" mask is the default mask and it is always available.
Set To Rest
It sets a disabled slave object to the position where the constraint was first connected relative to the position of the master. In other words the relative position among objects belonging to the system is going to be restored using the current masters combination as starting point.
Set To Trans And Rot Master
Set the node under the mouse to be the current translation and rotation master.
Set To Trans Master
Set the node under the mouse to be the current translation master.
Set To Master
Set node under the mouse to be the current rotation master.
KNOWN LIMITATIONS
Graph Editor Displays Curves Without Transforms
Due to the limitation in the current Maya API architecture, Maya can only display the curves of animated nodes that are members of a constraint system. The normal view is to see the transform then its curves under it.
Animation Layers Not Supported
Due to the limitation in the current Maya API architecture it is not possible to use animation layers for animated nodes connected to an exoSwitchConstraint.
Mental Ray Animation Optimization Needs To Be Set To Off For Batch Rendering
Mental Ray Animation Optimization erroneously detects constrained objects as non-animated. To fix this problem when rendering with Mental Ray go under Render Settings -> Options -> Performance and turn Off "Optimize Animation Detection".
Driven Nodes And Disabled Driven Do Not Update In The Attribute Editor
There is a Maya bug with updating enumerated attributes in the Attribute Editor
Redoing The exoSwitchConstraint Command Breaks The Undo Queue
The MDGModifiers Bug #BRTA-3720 breaks the undo queue when you redo an exoSwitchConstraint command. This can have unpredictable results and even crash Maya.
Due to the limitation in the current Maya API architecture, Maya can only display the curves of animated nodes that are members of a constraint system. The normal view is to see the transform then its curves under it.
Animation Layers Not Supported
Due to the limitation in the current Maya API architecture it is not possible to use animation layers for animated nodes connected to an exoSwitchConstraint.
Mental Ray Animation Optimization Needs To Be Set To Off For Batch Rendering
Mental Ray Animation Optimization erroneously detects constrained objects as non-animated. To fix this problem when rendering with Mental Ray go under Render Settings -> Options -> Performance and turn Off "Optimize Animation Detection".
Driven Nodes And Disabled Driven Do Not Update In The Attribute Editor
There is a Maya bug with updating enumerated attributes in the Attribute Editor
Redoing The exoSwitchConstraint Command Breaks The Undo Queue
The MDGModifiers Bug #BRTA-3720 breaks the undo queue when you redo an exoSwitchConstraint command. This can have unpredictable results and even crash Maya.