Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable Pico face tracking lipsync mode #2738

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

dirtball-official
Copy link

@dirtball-official dirtball-official commented Mar 5, 2025

Pico has a "Lipsync" face tracking mode which uses headset audio to drive face tracking blendshapes when it detects audio. Typically applications (such as VRChat) already have this sort of functionality, and face tracked avatars typically have options to enable/disable it in-game. Having face tracking blendshapes overridden by the headset without any user control is not expected behavior and causes confusion when troubleshooting avatar face tracking.

See the Pico documentation for details.
https://developer.picoxr.com/document/unity-avatar/face-tracking/

Pico has a "Lipsync" face tracking mode which uses headset audio to drive face tracking blendshapes when it detects audio. Typically applications (such as VRChat) already have this sort of functionality, and face tracked avatars typically have options to enable/disable it in-game. Have face tracking blendshapes overridden by the headset without any user control is not expected behavior and causes confusion when troubleshooting avatar face tracking.
if audio {
tracking_flags |= TRACKING_MODE_FACE_LIPSYNC | TRACKING_MODE_FACE_LIPSYNC_BLEND_SHAPES;
}
tracking_flags |= TRACKING_MODE_FACE_BIT;
Copy link
Contributor

@curoviyxru curoviyxru Mar 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are bools in constructors for that purpose. IMO this should not be just removed but implemented as switches in dashboard for both FaceTracker2Fb and FaceTrackingPico. See curoviyxru@b6aa99f.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. instead of removing audio input at all, we should only remove the flag TRACKING_MODE_FACE_LIPSYNC_BLEND_SHAPES

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should only remove the flag TRACKING_MODE_FACE_LIPSYNC_BLEND_SHAPES

but it matches FaceTracker2Fb's audio face tracking, doesn't it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Meta has VIDEO and AUDIO flags, which control the sources of tracking. the change we should do here is to not generate visemes/blend shapes, which regards tracking output, not input

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is to not generate visemes/blend shapes

but what does AUDIO flag on Meta do then if not generating blend shapes based on audio input?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah right. I think there is something we are missing, Pico API might be a bit confusing. What we want is to maybe allow audio source but not generate visemes. You could look up how to actually do this.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

allow audio source but not generate visemes

I'm afraid that there is no such thing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then it's a matter of sensible defaults. If generating visemes is more resource intensive, probably we should disable the audio source by default. Furthermore we should not send the visemes array range, and we should add another rule on the server-side to detect the Pico face tracking without visemes. As for VRCFaceTracking, i'm afraid we can't do much unless we make a breaking change. It should be fine to just send zeroes for the visemes range

@zmerp
Copy link
Member

zmerp commented Mar 5, 2025

I agree, we probably don't need to poll visemes. That's more of a feature for standalone games that don't have their own visemes engine.

@zmerp
Copy link
Member

zmerp commented Mar 11, 2025

@dirtball-official The lints must be resolved for the checks to pass

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants