Root Motion Problem (Y-motion jumpiness)

Hello,

I am working on an animation that is, for now, a sword swing.

I have created the animation in 3DS Max 2013 (student’s licence), you can view the render here, 1.8 seconds or 55 frames of it:

Not much but it’s quite literally my first animation work ever (including the video reference, that’s me, recorded with two phones, my idea), so go easy :stuck_out_tongue: I’ve done tons of modelling and programming, but never animation.

Now, I have exported the animation as FBX file. You can find it here:
https://drive.google.com/open?id=0B8AdDXW9nCiCaWxENXY5S2RXQms

Problem is a bit tough to describe, so it’d be best if you would download the FBX file (some 400KB) and assign an avatar to it. In my case, I am using a “shadow” character model provided in a free Third Person Camera tutorial/asset pack I’ve gotten off unity store, it’s a Humanoid type of avatar. If you open the FBX in any 3D Editing software, you will not see the problem.

In short, the character in Unity experiences this weird “Jumpiness” that I’m not seeing in 3DS Max - for example when raising hands while preparing to strike, it’s almost as if the character jumps some 2 feet in air, while animation is solidly grounded all the way through, that is, feet are always touching the ground. In the animation, at the character’s lowest pint (just after the strike), the feet go through the floor in Unity.

How do I constrain this weird vertical root movement?

The skeleton’s root bone is the one placed between it’s left and right hips, and I have used the root bone extensively in the animation, altering both it’s rotation and position (including the vertical position). I do not how if this is the cause of the problem, but if it is, how would I solve it? If it cannot be solved within Unity, then what is the correct workflow for animating humanoid characters? What’s the correct bone structure?

Also there appears to be a bug when forcing selection of the Root Motion Node in the animation Import settings, no matter if FBX is exported with Y-up or Z-up option, in Unity the animation will always end up flipped the wrong way around.

I figured it out.

The problem was in the units conversion when exporting FBX file.

My 3DS Max scene is setup in Meters so my character is 2 meters tall. When exporting FBX the Unit Conversion was set to Automatic.

I have no idea what units it converted to, but when importing the animation, under Model tab in Unity, the File Scale number was something like 0.00099999.

I have manually forced the Unit conversion to Meters during export, and now both Scale Factor and File Scale numbers are “1” and animation looks as it does in Max.

What an obstacle in your work, huh? You never quite expect a computer to get confused by big numbers.

Anyhow, here’s the corrected FBX file if anybody wants it. It’s surprising how a realistic sword swing looks unbelievably underwhelming in a third person game. We definitely gotta over-exaggerate the combat moves.

Over exaggeration is something you will learn to do in almost every type of animation. Even the realistic facial expressions and animations created for games like the Uncharted series look more fun and better because they are over exaggerated. They begin with mocap but there is a lot of creative input added to the base raw data.

Mocap or rotoscoping which is basically what you did with your videos are only first pass animation data. They require additional creative passes that add exaggeration, cleanup and emotion infused into the motion that the computer don’t know about. :slight_smile: