Linux environments (64-bit)
 
 
 

Maya plug-ins

The Maya Development Kit product contains a number of example plug-ins located in /usr/autodesk/maya/devkit/plug-ins. On a 64-bit installation, the /usr/autodesk/maya directory will be, by default, a symbolic link to /usr/autodesk/maya2009-x64.

Before you can use these plug-ins, you need to build them. You must first create a working directory, recursively copy the directory, and run make. For example,

mkdir -p $HOME/devkit/
cd $HOME/devkit/
cp -r /usr/autodesk/maya/devkit/plug-ins .
make Clean
make

Also, to attach your plug-in development area to the rest of Maya, you need to set a number of variables. These are:

These variables can be defined in a file called Maya.env. Maya lets you define these variables in a file so that you can easily set up the same runtime environment on another system by simply copying the file. You can still use variables in the environment and they will either override the corresponding variable in the Maya.env file or be prepended to the variable for variables which represent search paths.

The environment variable, MAYA_APP_DIR, can be used to help find the Maya.env file. If this variable is not set, Maya looks in your $HOME/maya directory. In addition, if you have multiple versions of Maya installed on your system, you can put your Maya.env file in a subdirectory of either the directory pointed to by the MAYA_APP_DIR environment variable or $HOME/maya.

Name the subdirectory to be the version number of the Maya application that is executed. For example, if you set MAYA_APP_DIR to be /usr/mydir, you can create a version specific Maya.env file in the directory /usr/mydir/2009 that will be used when the 2009 version of Maya is run. If you do not set MAYA_APP_DIR, you can put your version 2009 tailored Maya.env file in $HOME/maya/2009.

The following assumes that Maya is installed in /usr/autodesk/maya and that you have set up your plug-in development area in $HOME/devkit/plug-ins. If your installation is different, you will have to modify the lines that set MAYA_LOCATION in the examples below.

Your Maya.env file should contain the following:

MAYA_SCRIPT_PATH = $HOME/devkit/plug-ins
MAYA_PLUG_IN_PATH = $HOME/devkit/plug-ins
XBMLANGPATH = $HOME/devkit/plug-ins/%B

Users of /bin/sh or /bin/ksh need to add the following lines to $HOME/.profile.

# Location of installed maya.
MAYA_LOCATION=/usr/autodesk/maya
export MAYA_LOCATION

Users of /bin/csh or /bin/tcsh need to add the following lines to $HOME/.cshrc.

# Location of installed maya
setenv MAYA_LOCATION /usr/autodesk/maya

If you now start Maya and open the Plug-in Manager window, you should see a list of all the pre-compiled plug-ins you copied to your $HOME/devkit/plug-ins directory.

Maya API applications

To build the supplied stand-alone application examples, you need to do the following:

mkdir $HOME/devkit/applications
cd $HOME/devkit/applications
cp /usr/autodesk/maya/devkit/applications/* .
make Clean
make

Important note

The shell script mayald is used to link these applications to isolate you from the exact set of Maya shared libraries necessary for the link.

On Linux, the variable you must set is LD_LIBRARY_PATH so that the shared libraries can be found at run time.

The recommended procedure to prepare for building and running stand-alone apps is to set the following environment variables:

Linux:

setenv MAYA_LOCATION /usr/autodesk/maya
setenv LD_LIBRARY_PATH $MAYA_LOCATION/lib

When linking your plug-in, make sure to list all of the OpenMaya libraries containing the API classes you have used. The reference pages for each class specify the particular OpenMaya library containing the class.

NoteIt is possible to build a standalone application that does not have the ability to read in some Maya models. Specifically, if you try to read a file with IK using the devkit “readAndWrite” app, you get an error about a failed connection and the ik fails in the scene. To counter this, you must force the IK subsystem to load before the file is loaded. After the MLibrary() call is made, add in some command that uses the IK subsystem before the call to MFileIO::open(). The following command works:

MGlobal::executeCommand( "ikSystemInfo -q qsh" );