Skip to content

Support for up to 64 GPU blendshapes/morphTargets required for Pro-Level Facial Animation #21636

@bhouston

Description

@bhouston

Is your feature request related to a problem? Please describe.

High fidelity facial animation requires a lot of blend shapes. For example, here is a standard blend shape set from Apple for facial animation that they can extract from their cameras. It has 57 blend shapes.

https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation

It was utilized in this demo that drove a ReadyPlayerMe avatar in Three.js via the Apple ARFaceAnchor blend shapes:

https://twitter.com/seflless/status/1381313468926676997

You can see here that Three.js currently limits morphTargets (a less common name for blend shapes) to just 4:

https://github.com/mrdoob/three.js/blob/dev/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js

Describe the solution you'd like

It would probably be best to look are removing a hard upper limit to the number of blend shapes, or to bring it to 64 (which seems like a safe number.)

Describe alternatives you've considered

We have currently implemented unlimited blend shapes via the CPU rather than the GPU. This allows for unlimited number of blend shapes but it is significantly slower.

Additional context

I've asked @selfless to join this conversation to describe how he implemented it so his approach could inform how this will become standard in the library.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions