Setting up an Animated Billboard in Maya

Create the billboard geometry

At this time I have not had any luck with .avi or .mov files as source files for Maya. Instead I use a sequence of images that match the framerate of the timeline of Maya. It is critical to match the file type, naming convention and settings below.

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. These can be exported from a video that is opened in photoshop or aftereffects.

3. Make sure that you are working in Maya with the frame rate that you ultimately plan to use when you render. In Maya, under Window-> Setting Preferences->Preferences

Click on "Settings" - set time to specify frame rate to 23.976 (or if not 23.976 you should match the final output frame rate of your animation).

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, create a aiStandardSurface node. You can find this on the left "create" index under Arnold-Surface-AiStandardSurface.

Hit Control A to open the attribute editor and give the shader a Name.

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. Middle mouse drag the shader from the hypershade to the object. Press 6 on the keyboard to see the texture.

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


B) choose random image each frame


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:


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.


Joshua Mosley 2018