Setting up an Animated Billboard in Maya

Create the billboard geometry

1. Read the tutorial on setting up a static billboard.

2. Create a numbered sequence of images with the following format. "imagename.001.tif", "imagename.002.tif", etc.

3. In Maya, under Window-> Setting Preferences->Preferences

Click on "Settings" - set time to specify frame rate to 24 or 30 fps (You should match the final output frame rate of your animation. Remember 23.976 is more efficient on the web, 29.97 is more compatible with equipment and movement is more fluid without needing motion blur.)

Click on "time Slider" - set playback speed to "Real-Time" or "Play every frame" (Real-time is good for checking every frame, play every frame is better for checking timing, but it may drop frames.)

4. Open the Hypershade window, click on the Lambert icon on the left to create a new shader.

In the attribute editor, give the shader a name

Turn the Ambient Color all the way up - so the photograph does not require light to reproduce its local color

Turn the Diffuse Down, so the light in the scene will not brighten the local color of the image.

Turn the Shadow Attenuation down to 0.0 or you will have a halo where there should be transparency.

ab

5. Click on the checkerboard button next to color in the shader attributes

When the dialog pops up choose "file"

rename the "file" node that is created in the attribute editor so you can find it later "fileAni"

navigate to the first frame of your sequence "Imagename.001.tif"

check the "Use Image Sequence box" to map the frames of your sequence to the frames of the timeline.

5. Click on the plane, then under the "rendering" tab of the program,

go to "lighting/shading->assign existing material->Animated_Lambert to the object. Hit 6 on the keyboard to display textures.

6. At this point, if you look at frame 3 of the maya timeline, you should see frame 3 of your sequence mapped on the object. Maya uses an "expression" (a script) to coordinate the animation of the texture.
There are three basic ways to get more sophisticated in working with sequencing the animation. You can delete the script and use keyframes to time-out the animation, you can edit the script and create an algorithmic control system (expressions) or a control system that links multiple shaders with a master controller also using (expressions). see below
 

Keyframe Method

In this example - I want maya to map my stop-motion animation (frame 1-6) over the span of frame 5-25 of the Maya animation.

1. In the file node, right click on the value in the "Image Number" attribute and delete expression.

2. On the maya timeline - set the cursor to frame 5

3. Type in 1 in the "image number" attribute box, and right-click->set key.

4. Advance to frame 25 in the maya timeline

5. type in 6 in the "image number" attribute box, and right-click->set key.

6. If you select the file node, you can use the graph editor to edit the animation curve that drives the frame sequence.

 

Expression (scripting) Method

In this example, assume that i want to achieve various results with my 6 frames (frame 1-6) of stop motion animation

1. Right Click on the "image number" attribute in the file node and "edit expression"

2. The expression editor window opens up and shows you the expression, "fileAni.frameExtension=frame"

3. Here are some example scripts that would have interesting results. After you enter these scripts in the expression editor, click Create to check the expression - look in the blue command response area to see if the script has errors.

A) slow down animation

fileAni.frameExtension=frame/2

B) choose random image each frame

fileAni.frameExtension=(int(rand(6))+1);

C) Fluctuate (randomly ping-pong across frames)

//framecount should equal the length of your sequence.
$framecount = 120;
//higher freqFac equals faster animation.
$freqFac = .5;
//jumpy equals an added shake - small numbers like .05 work well. zero turns it off.
$jumpy = .02;
/////////////////
$freqA = rand((8*$freqFac),((8+$jumpy)*$freqFac));
$freqB = rand((7*$freqFac),((7+$jumpy)*$freqFac));
$freqC = rand((6*$freqFac),((6+$jumpy)*$freqFac));
$fluctuateB = ((((sin(time*$freqA)))+1)/2)*($framecount)+1;
$fluctuateA = ((((cos(time*$freqB)))+1)/2)*($framecount)+1;
$fluctuateC = ((((cos(time*$freqC)))+1)/2)*($framecount)+1;
fileAni.frameExtension = int(($fluctuateA + $fluctuateB + $fluctuateC)/3);

 

Creating a Controller Method

In this example - one node could control multiple file node sequence numbers. The master control is an attribute on a locator.

1. Create->Locator, move the locator out of the center of the world so you can select it later.

2. rename the locator "BBControl"

4. With the Locator selected, Modify->add attribute

in the dialog box, name the attribute "Frame"

set the data type to integer

leave min, max and default blank

3. Type "fileAni" into the search box at the top of the maya interface to select it.

4. In the attribute editor, Right-Click on the value next to "image number" and choose to edit expression.

5. change the expression to:

fileAni.frameExtension=(BBControl.frame);

click Create to check the expression - look in the blue command response area.

6. to add additional file nodes to this expression create the shaders first, then add lines to the expression as follows.

fileAniB.frameExtension=(BBControl.frame);
fileAniC.frameExtension=(BBControl.frame);

Joshua Mosley 2010