Locomotion system freaks out when my character includes a prop

Hi all, I have a problem with the (otherwise wonderful) locomotion system and its calculation of "native speed" for our characters. I suspect we are doing something fundamentally incompatible with the way your locomotion system is written, but maybe I'm just setting it up wrong.

I'm working on a project in which some characters have props that are included in each character's mesh. Our characters without any props rig up just fine and are walking and running beautifully under control of the locomotion system. But as soon as I add, for instance, a basketball, the locomotion system calculates my character's "native speed" as something like 0.0034 (normally the characters' speeds range from 0.7 to 0.9 depending on their height), and their animation goes crazy.

A bit more detail: For reasons handed down from previous development, our characters must be made of a single mesh with a single material. We're developing characters in 3DS Max using bipeds, so my basketball player has a very plain-vanilla setup with a very normal bone hierarchy, PLUS a sphere floating next to him and a single bone outside of his normal skeletal hierarchy. In each animation (we're using the character@animation.fbx convention) the ball is animated right into the cycle, so each step of his walk also includes one bounce of the ball. Again, the ball is part of the same mesh and skin modifier, but the ball's control bone is outside the hierarchy of the character's main skeleton. Following all of the steps for setting up the basketball player without his prop produces beautiful results. Setting up exactly the same model with the addition of a sphere and the one bone results in the very very low native speed.

So my exact question is: Am I doing something wrong that can be fixed? Or are we trying to do something the locomotion system wasn't written to handle...

Please let me know if I'm being unclear about any details. I'm also happy to upload a scene file later today if it's helpful.

Thanks for your help! --David

The locomotion system clearly states that it is not a one-size-fits-all solution. Assuming you're using a default setup for the locomotion system without any modification, here is why your native speed might be coming out wrong:

As you guessed, it's probably a problem with your hierarchy, but which problem is not entirely clear without more details on the setup of your scene. The native speed is a parameter of a source animation in the Leg Controller component. This component is only supposed to control legs and their hierarchies from the root bone down to the feet. Anything you try putting into this system that affects anything other than the legs can (and likely will) break it.

As per the documentation:

  • "The Locomotion System will automatically fill in a root bone that is the bone highest in the bone hierarchy, but below the character object itself. As long as this bone has animation curves for its rotation and translation, it works fine. For some characters this is not the case, and a different bone can be chosen as the root bone."

  • "The Locomotion System determines the native speed of walk and run cycles by analyzing how fast the feet are moving when they are closest to the ground."

Are your legs array and root bone being set correctly? If not, this could be the cause of the why the locomotion system is determining an incorrect native speed.

  • "The Source Animations array in the Leg Controller component should contain all animations that the Locomotion System should handle. This normally includes: ...
    • Not animations where the character is jumping or otherwise airborn.
    • Not animations only applied to the upper body (so they don't affect the legs)."

Are the animations you're placing in this source animation array animating anything other than the legs? If so, then this could cause the locomotion system to determine an incorrect native speed. Using the system as implemented, your ball animations should be separate animations which you would blend over the leg animations as stated in the Additional Features section.

You could also always just modify or extend the locomotion system to accommodate your prop animations to line up with your leg animations, etc, but that is far too in-depth to go into here and now.