Prop Actions

For the purposes of this tutorial, we are using 3DS MAX as our asset creation software example.

Introduction

A ‘prop action’ is a Furniture or Room action that is triggered when an avatar joins a certain seat. For example, when you click on one of the paws in the Flying Dragon Room, the Dragon’s paw wraps around the avatar. Also, when you move from that paw to any other seat in the Room, the paw goes back to its normal, open animation. When the paw changes with a ‘seat’ change, you are witnessing a Prop Action.

To be clear, prop actions work in both Rooms *and* Furniture products.

Prop Actions can be used in concert with Avatar Actions to create wonderful effects. For the purposes of this tutorial, we will assume you want to make a piece of Furniture animate in concert with an Avatar Action. However, please note that a Prop Action does not require a corresponding Avatar Action.

What You Need

Before you can make a Prop Action, you need to have built a few things first.

To create a prop action, you need:

  1. A completed Furniture or Room file. ie – the skeleton (including properly named seat nodes), mesh and mapping has already been completed. (Heck, its a good idea to build the whole product in the Editor first just to make sure it all works.)
  2. The number of the seat node that will trigger the action (example: seat35)
  3. The name of the avatar stance for that seat
  4. An exported .xaf and/or .xpf for your Furniture/Room Idle Action
  5. An exported .xaf and/or .xpf for your Furniture/Room Prop Action
  6. OPTIONAL – an exported Avatar Animation that works with the Furniture/Room file mentioned above

Idle *AND* Prop Action

A Prop Action only works if the bones involved in that Action are being animated by another Action. For example, the weight bar on my bench press seemingly does not move when my avatar is not in the bench press seat. However, it actually is animating – just so slightly that an IMVU user can not tell. That way, when my avatar joins the seat, the Prop Action is triggered and the currently animating bones have a new location to go to.

To make an Idle animation, Save a copy of your working file. Name it something that you will remember later. For example, if your original animation came from a file called :

'Furniture_BenchPress',

Then your Idle animation file could be called:

 'Furniture_BenchPress_Idle'.

As mentioned above, the Idle animation moves all of the bones that will end up being moved in your Prop Action. That movement can be as small as you want. In the case of a piece of furniture that is meant to look like it is sitting still when no avatars are seated on it, I always just move my bones fractions of millimeters along the Z axis.

REMEMBER:

Make an Idle animation *and* a Prop Action animation for every Prop Action you wish to trigger.

Actions Needed

Once you have all of your various animations exported, it is time to put them all together in the Editor.

To learn more about exporting, please read the Intro to Exporting tutorial and the Export Animations .XAF tutorial.

For the purposes of this tutorial, we assume you are building a bench press. This means you will have three animations:

  1. The bench press ‘Idle’ animation.
  2. The bench press ‘Pressing’ animation.
  3. The avatar ‘Pressing’ animation.

Create Mode Tips

Once you’ve opened Create Mode and chosen to derive from a Furniture or Room product, we recommend that you build out that new project completely to verify that any new skeleton, mesh and texture assets work.

It is very, very helpful to know that everything in your Furniture or Room product works perfectly before you embark on adding Prop Actions. This is because mistakes in exporting animations are only clear once you start loading in those animations.

As an optional step, you could ‘Save As’ a new file. This gives you a clean slate product to go back to in case you encounter Action issues.

Create Mode Idle

I always create the Idle(s) first. That way, I can more easily keep tabs on where they all are in the stack.

To create an animation that loops forever, you want to create what is called an Idle Action. An Action is considered an Idle if it is named correctly. Otherwise, all other attributes of the Action are available to you.

Naming convention

All Idle and avatar seat based animations are named the same way: stance.AnimationName

The prefix is always labeled as stance. so the code can recognize that this Action will have special properties.

The middle section can be named two things:

  1. The name of the seat bone to which you want this Action to be applied
  2. Idle

If an Action is named stance.Idle, then the IMVU code will play it forever (or until the hamsters that keep our servers running need to take a bio break.) However, there is one other thing you will need to do in order to get your Idle animation to play forever:

set ‘# ensembles played’ to zero.

Animation Type – Room

When building an Action for your room or furniture product, you must set the Type to ‘Room’. That’s right, even if it is a Furniture item, the type must be set to ‘Room’.

Number of Idles

You may have as many Idle Actions as you want. For example, in the Candle Lit Dinner scene, one Idle controls the up/down water movement, another Idle controls the Prop Action for the ‘dolphin swim’ seat rotation and yet another Idle controls the Prop Action for the violin.

Add Avatar Action

Once you have your Idle Action built, it is time to add your Avatar Action. The Avatar Action should get its name from the seat node in your Furniture or Room skeleton. If you don’t know what you’ve named the seat node, then you don’t know what to name your Avatar Action. So, go to your MAX file and verify what you’ve named your seat node.

To learn more about how to properly name a seat node, please go to the Seat Naming Convention Tutorial.

However, in short, if your seat name is ‘seat01.BenchPress’ then your Action name will be stance.BenchPress

The IMVU code sees the suffix in the seat name in your Room or Furniture skeleton and then searches for an Avatar Action with the same suffix.

Animation Type – Avatar

If you want to add an avatar Action to your room or furniture product, you must set the Type to ‘Avatar’. This ensures that your action works with an Avatar skeleton and *NOT* the Furniture or Room skeleton.

To learn more about what the other knobs and doohickeys in the Create Mode Editor do, please read the Intro to the Editor tutorial and the Editor – Actions Tab tutorial.

Add Prop Action

Now that you have a fully built product and have tested that the avatar animation works, it is time to add your Prop Action. To do so, create an Action with one Ensemble. Since a Prop Action is a room or furniture animation, set your Type to ‘Room’.

Seat Numbers Matter

A Prop Action corresponds with a seat number (or numbers) found in your furniture or room product. In this instance, the bench press only has one seat, seat01.BenchPress. So, the name of the prop action would be:

stance.BenchPress-seat01

Please note the addition of the dash suffix at the end of the name that includes a seat number. This ‘-seat01’ tells the code that this Action should be triggered when an avatar joins seat01.

You can have multiple seats in a prop action name. For example, if the bench press was some sort of crazy, two person bench press, then the bar could be triggered by both seats 01 and 02. To make that happen, my Prop Action name would be:

stance.BenchPress-seat01,02

Please note the addition of the comma and new seat number. This ‘,02’ tells the code that this Action should be triggered by joining either seat01 and/or seat02.

VERY IMPORTANT

Interoperable animations must be the same length

As mentioned above, sometimes, you want a prop action to work with an avatar action. Said another way, you want the prop action and the avatar action to work seamlessly together. In the case of the avatar bouncing on the pogo stick, if the avatar action played even one frame longer than the pogo stick animation, then, eventually, the avatar would go down while the pogo stick went up.

Even worse, if you want the prop action and avatar action to *end* at the same time, it is possible to have the avatar end up in the J-pose while the Action system finishes the animation that isn’t done yet.

The way to ensure that your prop action and your avatar action work perfectly together is to make sure they are both the same number of frames when they are exported. This is VERY important. If your animations are not the same length (in number of frames) then your prop action will end up looking broken.

Rooms Only – Sync All Actions

Sometimes, Prop Actions can get out of whack in Room products as chatters bounce around from seat to seat. To prevent any sort of whackiness in Room Prop Actions, it is best to turn on two check boxes in the Editor. Go to the Prop Action Settings panel in the Editor and check ‘Synch all Actions’ and ‘Synch props’.

With both of these boxes checked, then the Room will reset itself every time a Prop Action is triggered.

Test

While it is always a good idea to repeatedly test your product as you build it, testing is especially necessary for Prop Actions. Save your file and then join the seat. If you see your avatar animation and prop action move in unison, then you have been successful.

If they do not move in unison, then there is something wrong and you need to go back and verify:

  1. That your avatar and room/furniture animations actually move in unison in your 3D program
  2. That you have properly named your Actions
  3. That you have properly named your seat node in your 3D program
  4. That you are using the latest exported assets for both the room/furniture skeleton (xsf) and all of the exported animations (xaf)
  5. That you have chosen the correct animation type across all Actions

Congratulations

Now that you know how to make a Prop Action, you are able to delight your customers. Let’s face it: we all love the pleasant surprise of a prop action. Even better, IMVU has seen a significant increase in sales of products that contain prop actions so use them wisely…and often.

Updated on July 21, 2023

Was this article helpful?

Related Articles

Discuss this!
Ask questions and get answers in our Creator Discussions.
BROWSE DISCUSSIONS