Blendshapes values < 0 or > 100

I have several imported morphs (blendshapes) from an FBX character. These work but only between values of 0 and 100.

Which isn’t very useful because many of the morphs require over morphing or under morphing for example open and close eyes requires negative morph numbers.

Am I missing an option to turn limits off and allow over-morphing?

This isn’t possible and can’t be implemented that easy. The blendshapes are called “morph targets”. Since a single morph can have several intermediate frames, extrapolating the delta of the last frame / first frame would most likely result in a total mess. The blendshape weigths just control how far the blendshape has been “played”. It’s literally just a percentage / normalized time. If you need some sort of over / undershooting you have to create them as seperate frames in the blendshape animation.

Keep in mind that Unity is not an animation tool. It just interpolates the given animation data. See AddBlendShapeFrame for more insight. So if you want a blendshape animation that first undershoots and then blends towards the target frame and overshoots at the end before it settles at the target, you have to use at least 4 frames

  0 - Initial position
 10 - undershoot position
 90 - overshoot position
100 - target position

Now when you “play” this animation it first undershoots and at the target it overshoots. Just like bone animations they never extrapolate over the defined animations. If you need an over / undershoot in your animation it need to be animated like this. Unity only controls the “time” of the animation and only interpolates between the animation data.

2019, this is still a valid request

coming from all other animation packages I have experience with, they allow both over and negative blends


Thanks for your answer. Obviously I have no understanding of the technical implementations, so most of your elaborate answer goes over my head.

I was hoping that morph targets are represented by individual deltas of XYZ position per vertex, and that the blendshape value simply takes a 0-100 fraction of the delta and applies it to each vertex postion.

Hence my assumption this delta could be high than 100% and negative, as it would ‘simply’ increase the positional delta.