feat: vrcft module tracking mode support#16
Conversation
|
I had an issue using both modules in VRCFT: even though I configured Baballonia to use only the eyes, my face still flickered. So I tried to fix it by adding the same mod selection feature to the Foxy Face module, and now everything works perfectly for me. |
|
I'm curious how you did that.
|
I want to achieve similar to quest pro ft quality with my beyond headset |
Jeka8833
left a comment
There was a problem hiding this comment.
I need some time to think about the best way to do this.
There was a problem hiding this comment.
I think that's unnecessary; it won't have much of an impact on UDP performance.
There was a problem hiding this comment.
At first, I didn't understand what you were trying to do. Your idea won't work well for the eyes, since eyebrows in VRCFT aren't eyes but expressions. That's why VRCFT will ignore them anyway, even if you send them (as far as I understand). However, it will work perfectly for the lower part of the face (the case you're using).
| # Add tracking mode combo box | ||
| from PySide6.QtWidgets import QLabel | ||
| self.__tracking_mode_lb = QLabel("Tracking Mode") | ||
| self.__ui.verticalLayout_7.addWidget(self.__tracking_mode_lb) | ||
| self.__tracking_mode_cb = QComboBox() | ||
| self.__tracking_mode_cb.addItem("Both", "both") | ||
| self.__tracking_mode_cb.addItem("Mouth Only", "mouth") | ||
| self.__tracking_mode_cb.addItem("Eyes Only", "eyes") | ||
| self.__ui.verticalLayout_7.addWidget(self.__tracking_mode_cb) | ||
|
|
There was a problem hiding this comment.
If you change the design, make sure to update the .ui files as well (they get recompiled into Python code).
| public override (bool SupportsEye, bool SupportsExpression) Supported => | ||
| _trackingMode switch | ||
| { | ||
| "mouth" => (false, true), | ||
| "eyes" => (true, false), | ||
| _ => (true, true) | ||
| }; |
There was a problem hiding this comment.
This code simply won't work and will always return (true, true); So just write (true, true);
There was a problem hiding this comment.
You can simply not call UpdateEyes and UpdateExpression in FoxyFaceVRCFTInterface — why keep two identical trackingMode variables? No changes are needed in this class.
| _packetProcessor.UpdateEyes(packet.Values); | ||
| _packetProcessor.UpdateExpression(packet.Values); |
There was a problem hiding this comment.
You can simply not call these methods if you need to disable part of the face.


Add VRCFT module tracking mode support
For me, this is useful because I can get better face tracking in the headset by using Foxy Face "mediapipe" for mouth tracking and Project-Babble/Baballonia app for eye tracking.
Summary
Implements tracking mode support in the FoxyFaceVRCFTInterface module, allowing users to selectively enable eye tracking, mouth/expression tracking, or both. The module now dynamically reports its capabilities to VRCFT based on the selected tracking mode.
Changes
TrackingModeEnum: New enum in Python code defining three tracking modes:mouth,eyes, andbothBehavior