Step 1: Create props to use in your character's hands
Create a cup, bottle, and digital camera in Maya. The cup and bottle will be used for drink-triggered actions in Massive, and the digital camera will be used for takePicture actions. Apply any UV mapping needed in Maya. It’s important that the UV mapping is exported with the obj files.
Import the geometry of the Massive character that will be using these props. Position all three props in the right hand so it looks like they’re being held. They’ll all be on top of each other, but once played back in Massive, only one will show at a time. Export each prop separately as obj files using the Maya plug-in objExport ( Options > Preferences > Plug-in Manager). The filenames for the props are: cup.obj, bottle.obj, and digi_cam.obj.
Step 2: Make duplicates of all props for each blend shape you need
Since you’ll want to make your props disappear when they’re not being used, you need to create duplicates of all the objects and then scale down to zero. When scaling props down, go to component mode, select all the vertices of the prop, then scale down to a small size. To make sure you don’t get rendering artifacts, move the scaled-down version to the inside of the hand geometry of the character. If the props are scaled at the object level, the blend shape will not appear to work, since the vertices haven’t moved. Export all the geo as separate pieces named: cup_zero.obj, bottle_zero.obj, and digi_cam_zero.obj. Next, make another set of duplicates of only the bottle and cup. Use these new duplicates for a large cup and bottle. Use the same procedure as described above, but in reverse, to scale the props to a larger size. Tweak the vertices, if needed, to position the props so they look right in the hand. Export these as: cup_large.obj and bottle_large.obj.
Step 3: Add a segment for the props to be attached
Load into Massive the agent that’ll be receiving the props. Go to the body page in Massive. Select the r_fingers segment and then add a cylinder segment named r_props. Once in the area where all the props will be located, you’ll need to position and size r_props. You can make adjustments later to the position and size once you’ve brought in your props.
Step 4: Add props to the character rig
Create a geo node for each piece prop, for a total of three for this example. Select the first geo node and select the cup.obj file from the file browser. Click on the blend tab for the cup geo. Click on the add button in the blend tab. Click on the file browser button in the blend tab to select the first blend for the cup, cup_zero.obj. Change the name of this blend to cup_zero. Add another blend for the cup and select cup_large.obj. Name this blend cup_large. Make sure the linear button is clicked for all blends. The linear processing is similar to how the blends would work in Maya.
Repeat the process for the bottle and the digital camera. The only difference is that the digital camera will have just one blend shape. Test out the blends by clicking and dragging in the active slider of the blend tab. You must skin the geo to all segments; don’t connect just to specific segments. If you do, the blends won’t work.
Step 5: Adjust the bone skinning for the r_props segment
Select all three props and lock the geometry. Next, select the r_props segment and open the bones window. Make any adjustments for the bone size and falloff. Remember to include the area where the props are scaling down or up when using the blend shapes.
Step 6: Add materials with variations to colors and maps
Create a new material node for each prop. Select the bottle material node, click on the diffuse tab and then add a texture map. Since you can render using several different methods with many different shader types, the rest of the material setup is up to you. This will at least give you a visual in the OpenGL viewer window. Select the digital camera material node and add the texture map.
For the cup, you’ll need to use a variable to define the cup diffuse hue: Go to the variables tab of the body and add cup_hue, with a range from 0 to 1 and a default of 0. Select the cup material again and go under the diffuse tab and add the cup_hue to the hue variable.
Step 7: Create variables to control different aspects of the props
You need a variable to define what drink type each agent is using, the bottle or cup. This variable will be called drink_var, with a range of 0 to 1 and a default of 1. You could make this a random choice, but it will make more sense for one agent to keep the same choice over the course of a shot. The other variable you need to define is whether the agent has a small or large drink. This variable will be drink_size, with a range of 0 to 1 and default of 0.
Step 8: Add output variables to the motion tree
For all the drink actions in the motion tree, you need to assign an output variable named drinking. The same must be done for all of the takePicture actions, with an output named takingPicture. These outputs will drive part of the "brain" to define when the agents should use the props. The use of the props will only happen when any of the drinking or takingPicture outputs are true. In this example, the drinking output has been added to the actions drinkSit and drinkStand. The takingPicture output was added to takePictureSit and takePictureStand.
Step 9: Build a brain addition to control prop visibility
The "brain" that controls the use of the digital camera is very straightforward. The blend is on at a value of 1 and, since the blend you’re using scales the prop down to nothing, you need to makes this a value of 1 when not using the prop and a value of 0 when you are using the prop. The input node uses takingPicture and is plugged into a fuzz node. You want the fuzz, which defines the camera, to be either on or off; set a fuzz value at.5. This goes into an and node, then into a defuzz set to 0 then into an output node through the channel for the camera blend, digiCam:digiCam_zero. The first part before the colon identifies the geo node name and the second part, the blend name. Attach another defuzz to the output, set the value at 1 and turn the button on.
Step 10: Build a drinking brain addition
The drinking part of the brain is a little more complex (say no more!), since we need to know what type of drink, the size drink to use and when to bring out the bottle or cup during the action. Looking at the brain from the top down, the drink_size is pulling a random variable from the agent variables. The fuzz defines the values above.5 to use the large size, and the values below.5 to default to the small size. Ignore the and nodes for right now. The next part has the input drink_var that works similar to the drink_size. This part of the brain is an "either/or" of picking the bottle or the cup. You only want one to be visible at a time. The last part is the drinking input that tells the agents when to actually break out the cup or bottle. Since the large props and the zero-sized props are both blends, you need them all to be on or off at the same time when a drink is needed. In the screen grab below, if you follow the output from the drink fuzz node, it goes out to two and nodes (bottle & drinking, cup & drinking). If you follow from the bottle & drinking node, you’ll see that it feeds into another and node: large & bottle & drinking. This would work out something like this:
If the agent is drinking and picked the bottle ( drink_var >.5) and the bottle is large ( drink_size >.5), then show the large bottle ( bottle_large active = 1 and bottle_zero active = 0), or else show the small bottle. The cup possibilities play out in the same manner as they do with the bottle but the drink variable ( drink_var) is less than.5 ( <.5).
TIP: When your agent chooses to use a prop, the best way to disguise the magically appearing prop is to have the agent grab them from under the seat in a stadium environment. If the agent is moving around, you can solve this by either reaching in a pocket or altering the brain to always use the prop for the entire shot. By adding a variable called prop_usage_var to the agent, you can control the prop to be none, drink, picture or even an override of magically appearing props.
You’ll also notice that I’ve set the range from 0 to 3. Using the override, the value of this variable needs to be above 3. You can do this through group variables without altering the brain.
The final screen grab below shows what I did to make sure the agent keeps the prop in its hands the entire time; the override is built in as well. The output modifiers drink and picture would obviously have other inputs feeding into the and nodes, but those inputs were eliminated for simplicity. Go forth and populate!
Your Guide
Mark Thielen
Massive Specialist
Reel FX Creative Studios

Mark Thielen has a character animation background and more than seven years of CG experience, ranging from film and television to commercials. He has been using Massive Software for almost three years. He was the Massive supervisor for The Ant Bully, Blades of Glory and for a few Gatorade commercials. Mark worked at DNA Productions and Rainmaker before joining Reel FX Creative Studios in Dallas.

Mark says Keep in Mind…
When you give props to Massive Software agents, you give your CG crowds more variation and give the entire shot a more realistic feel. Any opportunity you have to introduce props (as long as they make sense for the project), will help sell the crowds to your audience. One big thing to remember if you are using apf files as the output for your simulations: Your files will be limited to six blends in total. If you plan to use more than six, output your simulations to amc files instead.
Reel FX Creative Studios
www.reelfx.com
301 N. Crowdus Street Dallas, TX 75226
ph. 214.979.0961
fax 214.979.0963