Skip to main content

FAQ

What are multi-frame blendshapes?

Traditional blendshapes in Unity have only one frame which is in full effect when the property is at the value of 100. However, the Unity Engine supports blendshapes that have multiple frames under the same name. Frames in-between will morph in and out much like an animation.

Multi-frame blendshapes often come as a surprise to people as they cannot be stored inside most model file formats and are absent from most model editing software, so it is a relatively underused capability of the Unity engine.

Several of the Starmesh components make use of this by creating blendshapes that have more than one frame. This is needed because those blendshapes do not follow a linear interpolation between the base mesh and the final result.

You only need one animated or scripted property for the blendshape of a Starmesh component to have full effect.

Compatibility with applications

💬 VRChat
If you use a third-party tool called DexProtect, then you must update DexProtect to version 2.2.3 or higher. Ripple Wave will not work properly with a lower version of DexProtect.

🚫 Not compatible with GLB/GLTF format
Multi-frame blendshapes are not supported by most model file formats, such as GLB/GLTF. If you use the VRM file format, you cannot use operators that generate multi-frame blendshapes.

This can still be used in

VNyan
and
Warudo
as long as you use their proprietary avatar formats instead of the VRM format.

VRAM cost of multi-frame blendshapes

The VRAM cost of each blendshape depends on the number of vertices moved by a blendshape, multiplied by the number of frames for that blendshape.

If a multi-frame blendshape has 25 frames, then it is 25 times more expensive in VRAM than a traditional blendshape that moves the same amount of vertices.

All blendshape Operators in Starmesh will show the estimated VRAM cost. The calculations of that cost is based on Thry's VRAM calculator where each moved vertex costs 40 bytes per frame.

However, my estimate uses a worst case scenario where all moved vertices are also moved by all frames, which isn't true, so the VRAM cost could actually be lower than what's estimated.

Starmesh gives you the option to change the number of frames on some operators, however:

  • the quality when animated depends entirely on that Operator: Ripple Wave generally needs more frames than Compressive Deform would, because the vertices move in opposite directions throughout the animation so the propagation effect is lost with fewer frames.
  • there are diminishing returns as you add more frames because it takes a lot more frames to make the timestep smaller.

Runtime cost of multi-frame blendshapes

GPU rendering cost

Multi-frame blendshapes use a linear interpolation between the 2 frames that surround the current value, which is calculated on the GPU in Unity 2022.

Consider multi-frame blendshape to have the runtime rendering cost of 2 blendshapes, regardless of the total number of frames.

In addition, just like any blendshape, this has no cost when the value of the blendshape property is 0.

Animation and scripting cost

Multi-frame blendshapes have only one named blendshape value to animate or to change via script, regardless of the total number of frames.

💬 VRChat
Components that create a blendshape only need 1 animated property in the animation clip, regardless of whether that blendshape is single-frame or multi-frame.
This makes them no different from any traditional blendshape not generated by Starmesh.