cameraTrack - Maya 1.5 Plugins for camera manipulation.
by Paul Bennett [bennett@cc.gatech.edu]

The latest version and documentation can be found at
http://www.cc.gatech.edu/gvu/perception/projects/motionMatching/cameraTrack/

cameraTrack is a milestone in the motionMatching project.  For more information about that project, go to the motionMatching homepage.

Download the source code cameraTrack.tar

View the source files for cameraPath, guiShift, shiftPath

The cameraTrack suite consists of three plugins.

The cameraTrack suite of plugins is used for adding cameras to Maya whose properties change per frame.  The camera properties are read from a file by one of the plugins.  The other two plugins allow for easy property editing of the moving camera within Maya.  This is to allow the user to adjust the cameras due to miscalibration in motion control.

cameraPath - read the camera input file and create the camera with all attributes keyed.
shiftPath - take a selected camera and for a given attribute, change all the attributes for each keyframe by a certain amount.  
guiShift - take a selected camera and allow the user to use the mouse to move and allign the camera.  

Detailed usage instructions:

cameraPath

cameraPath -n <camera name> -f <file name>

<camera name> is the name of the camera.
<file name> is the location of the camera track file.

The camera track file is a tab delimited file with one line for each keyframe.  Each line should have the following information. frame number, x, y, z, rotate x, rotate y, rotate z (in radians), scale x, scale y, scale z, vertical film aperature, horizontal film aperature, focal length, fstop, and focus distance.

shiftPath

shiftPath -a <attribute name> -v <value>

You must first select a camera before running this command.

If you selected a camera's transform node, <attribute name> is one of the following:
translateX
translateY
translateZ
rotateX                 [in radians]
rotateY                 [in radians]
rotateZ                 [in radians]
scaleX
scaleY
scaleZ

If you selected a camera's shape node, <attribute name> is one of the following:
horizontalFilmAperture  [maximum value is 1200]
verticalFilmAperture    [maximum value is 1200]
focalLength             [maximum value is 3500]
squeezeRatio            
fStop                   [maximum value is 64]
focusDistance           
shutterAngle
centerOfInterest        

<value> is the delta change you want to accrue to the attribute (neg or pos)

guiShift

You must first select a camera before running this command. You must select the camera's transform node or shape node as apropriate (like you have to do with shiftPath.  example:  if you want to change scaleX, you have to select the camera transform node.  if you want to change focalLength, you have to select the camera shape node.  You can not change both with the same invocation of the plugin)

After you run guiShift, a window will popup with a button on it.  You may make changes to the camera any way you like, via the mouse or the attribute editor.  Once you have change the camera, press the button.  The plugin will compute the delta change from before you ran the plugin to right before you clicked the button and it will apply the change to every keyframe for any attribute that changed.

Note:  After you press the button the window will not close.  Close the window manually.

Note:  You must have shiftPath loaded before using guiPath.

Image Planes

If you are representing a camera from a motion control camera file with the  intent of placing an animated object in a real world environment it is helpful to view the camera images in the background.  This can be accomlished by using image planes.

In Maya, you attach an image plane to a camera.  When you look through a camera with an image plane you see the image in the background.  If the image plane has a movie file assoicated with it, the movie will change the frame on the image to match the current animation frame in Maya.  

To implement this:

Highlight the camera you want to create an image plane for.
Bring up the attriubte editor (ctrl-a)
Click on the triangle to show the options under "Environment"
Click on "Create"
In the input box for Image name, type in or browse to the image or movie file.
If this is a movie file and you want the image to change accroding to the current animation frame number in Maya, check the box "Use Frame Extention". Next, change the current frame number to the start frame you want the movie to start from in Maya.  One way this is done is to use your mouse and either scrub or click the desired frame number on the frame bar at the bottom of the Maya screen.  Once this is selected, right click over the "Frame Extention" edit box and set a key.  Next, click on the frame in the Maya frame bar that you want to be the ending frame of this image.  Type in the frame number that you want the image to show at this key in the "Frame Extention" edit box.  Right click over  the "Frame Extention" edit box and set a key.  You can now play or scrub your animation and the image on the image plane with change with the animation.


** DEVELOPER INFORMATION **

There is a make file in the development directory.  Simply type make and all three plugins will be compiled.  

Each plugin has one source file and there are no compile dependencies between them. [some plugins require other plugins to be loaded in order  to run, but not compile.]


The following information regarding Maya plugin development were found on the net.  None of the resources were useful, but are included for completeness.

Intro to MEL/API
http://reality.sgi.com/tkluyskens_aw/txt/melapi/ 

SGI Conductor Plugin Program
http://www.aw.sgi.com/pages/home/pages/plug_ins/pages/conductors/index.html

Maya Queen
http://reality.sgi.com/tkluyskens_aw/txt/queen.html

Flay.Com. Lightwave 3D Tutorial, Plugin, Information and TechniquesSearch Engine
http://www.flay.com/

Maya Discussion Forum
http://www.3drender.com/discussion/index.html

Another Maya Discussion Forum
http://www.lumis3d.com/msgboards/