Search Unity

Animating Face: Make a bone don't blend in the Animation Controller?

Discussion in 'Animation' started by GameEver, Mar 3, 2021.

  1. GameEver

    GameEver

    Joined:
    Apr 28, 2020
    Posts:
    12
    We have a cartoon-like character and we are using images for the eyes and mouth of the character.
    The animator applies the images of the eyes and mouth using a bone. According to the position of the bone, the eyes that will be displayed. Same for the mouth.
    We are using this system so that the animator can set the expressions and we can also change them in Unity with script, just modifying the position of the bone.

    eyes.png

    This works fairly well inside animations, but when we transition from one animation of the cat to another with a transition duration, that bone gets blended too and during that transition we see many eyes and mouths go by.

    Does anyone have an idea how to make an specific bone not blend or another idea for handling facial expressions for cartoon/animé faces that can be setted by the animator in Maya and also be changed by script in Unity when needed?
     
  2. CodeKiwi

    CodeKiwi

    Joined:
    Oct 27, 2016
    Posts:
    119
    I was trying to do something similar a while ago but never found a way to stop blending only part of a clip. I think I was using a bone to create a UV offset.

    Just thought I’d post some other options:
    1. Make a separate layer for the face bone. The face layer can then have no transition time but needs syncing to the body animation.
    2. Visibility: maybe create a mesh for each expression and show / hide them.
    3. Multiple bones. One bone per expression. Maybe compact data e.g. expression 1 is x axis or x rotation.
    4. Maybe morphs (no shape, only weight). Similar to multiple bones but easier to read. Displayed expression = highest weight.
    5. Custom format e.g. animation.fbx + faceAnimation.txt. Might be difficult to sync to body animation.
    I’d probably try 2 or 4.