Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Blender Humanoid Animation Mismatch

Discussion in 'Animation' started by Zullar, May 17, 2019.

  1. Zullar

    Zullar

    Joined:
    May 21, 2013
    Posts:
    651
    -I created rig, mesh, and animation in Blender
    -I imported my blender model into Unity. The rig is marked as humanoid
    -I play my animation, but it does not match the blender animation. My shield points in the wrong direction.

    Here's my blender mesh/rig/animation


    Here's my blender model imported as a generic (not humanoid) model. Everything matches correctly.


    Here's my blender model imported as a humanoid (not generic) model.
    -(Left) The humanoid rig has all default settings (0.5 muscle ranges) and the animation does not match.
    -(Right) The humanoid rig 1.0 muscles ranges. The animation matches


    It took me a long time to figure it out but it appears that the animation is being changed by Unity due to muscle range motion limits.
    upload_2019-5-17_10-28-0.png

    Has anybody else ran into this? What's the proper way to handle it?

    The best solution to avoid this would seem to be creating a Blender rig that has the same muscle limitations as Unity with 0.5 muscle limits. That way you can't create animations that aren't physically possible with a typical human skeleton.

    I've read/watched a lot of tutorials on rigging humanoids and
    1: Every tutorial uses a slightly different rig. There doesn't seem to be a standard bone/IK/pole layout for humanoids.
    2: Nothing I've seen discusses how to properly limit IK/bone motion for a typical human body in Blender. Or what those values should be to match Unity.

    The alternative bandaid is setting all humanoid muscle range limits from 0.5 to 1 allowing my Unity humanoid rig to achieve any motion. However this doesn't seem proper because then I will be doing animations that won't look realistic.

    Or is there another solution?

    Thanks in advance.
     
  2. Zullar

    Zullar

    Joined:
    May 21, 2013
    Posts:
    651
    I'll also add I'm curious how to properly handle forearms. In a real human body there are two bones in your forearm and they can twist.

    However in any rigging program (Like blender) bones are rigid and cannot twist. So modeling the forearm as one untwistable bone isn't accurate.. Should the forearm be modeled as two bones like a real human body (I haven't seen this done) or should the forearm be a chain of bones (like a spine) that are allowed to twist? Or something else?

    The whole shoulder/forearm/wrist twisting and motion limits is a bit tricky. Just not sure the best way to handle it.

    Thanks.
     
  3. Zullar

    Zullar

    Joined:
    May 21, 2013
    Posts:
    651
    I cannot figure this out.

    For example I recorded an animation in Blender where I only move the upper body & arms. The hips, legs, and feet all do not move.

    But when I play this animation in Unity on various humanoid rigs the hips/legs/feet move! And they move a lot. Even the rig I recorded the animation on has a mismatch.

    I'm guessing Unity takes the animation and then generates "humanoid" animation data. Then when it plays the animation back it uses the "humanoid" data and applies it to the rig... and maybe includes some humanoid IK. And also applies humanoid muscle motion limits. This is why playing back the same animation on the same rig the animation was recorded on gives a distorted animation?

    Still unsure why recording an animation with arms moving when played back causes my hips and feet to move a significant amount...
     
    Last edited: May 24, 2019