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

HTC (eye only) and not face #8

Open
fire opened this issue Oct 3, 2024 · 5 comments
Open

HTC (eye only) and not face #8

fire opened this issue Oct 3, 2024 · 5 comments

Comments

@fire
Copy link

fire commented Oct 3, 2024

What is blocking face tracking for HTC?

Wanted to investigate.

@fire fire changed the title HTC (eye only) HTC (eye only) and not face Oct 3, 2024
@galister
Copy link
Owner

galister commented Oct 3, 2024

WiVRn doesn't pass thru HTC face tracking yet. here's how i did the FB one: WiVRn/WiVRn@e6f3ae0

it's made in a way so that a HTC implementation can live alongside the FB one.

@fire
Copy link
Author

fire commented Oct 3, 2024

https://registry.khronos.org/OpenXR/specs/1.1/man/html/XR_HTC_body_tracking.html

https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XR_HTC_body_tracking

Notes for implementation.

// Provided by XR_HTC_body_tracking
typedef enum XrBodyJointHTC {
    XR_BODY_JOINT_PELVIS_HTC = 0,
    XR_BODY_JOINT_LEFT_HIP_HTC = 1,
    XR_BODY_JOINT_LEFT_KNEE_HTC = 2,
    XR_BODY_JOINT_LEFT_ANKLE_HTC = 3,
    XR_BODY_JOINT_LEFT_FEET_HTC = 4,
    XR_BODY_JOINT_RIGHT_HIP_HTC = 5,
    XR_BODY_JOINT_RIGHT_KNEE_HTC = 6,
    XR_BODY_JOINT_RIGHT_ANKLE_HTC = 7,
    XR_BODY_JOINT_RIGHT_FEET_HTC = 8,
    XR_BODY_JOINT_WAIST_HTC = 9,
    XR_BODY_JOINT_SPINE_LOWER_HTC = 10,
    XR_BODY_JOINT_SPINE_MIDDLE_HTC = 11,
    XR_BODY_JOINT_SPINE_HIGH_HTC = 12,
    XR_BODY_JOINT_CHEST_HTC = 13,
    XR_BODY_JOINT_NECK_HTC = 14,
    XR_BODY_JOINT_HEAD_HTC = 15,
    XR_BODY_JOINT_LEFT_CLAVICLE_HTC = 16,
    XR_BODY_JOINT_LEFT_SCAPULA_HTC = 17,
    XR_BODY_JOINT_LEFT_ARM_HTC = 18,
    XR_BODY_JOINT_LEFT_ELBOW_HTC = 19,
    XR_BODY_JOINT_LEFT_WRIST_HTC = 20,
    XR_BODY_JOINT_RIGHT_CLAVICLE_HTC = 21,
    XR_BODY_JOINT_RIGHT_SCAPULA_HTC = 22,
    XR_BODY_JOINT_RIGHT_ARM_HTC = 23,
    XR_BODY_JOINT_RIGHT_ELBOW_HTC = 24,
    XR_BODY_JOINT_RIGHT_WRIST_HTC = 25,
    XR_BODY_JOINT_MAX_ENUM_HTC = 0x7FFFFFFF
} XrBodyJointHTC;

Untitled

@fire
Copy link
Author

fire commented Oct 3, 2024

// Provided by XR_HTC_facial_tracking
typedef enum XrEyeExpressionHTC {
    XR_EYE_EXPRESSION_LEFT_BLINK_HTC = 0,
    XR_EYE_EXPRESSION_LEFT_WIDE_HTC = 1,
    XR_EYE_EXPRESSION_RIGHT_BLINK_HTC = 2,
    XR_EYE_EXPRESSION_RIGHT_WIDE_HTC = 3,
    XR_EYE_EXPRESSION_LEFT_SQUEEZE_HTC = 4,
    XR_EYE_EXPRESSION_RIGHT_SQUEEZE_HTC = 5,
    XR_EYE_EXPRESSION_LEFT_DOWN_HTC = 6,
    XR_EYE_EXPRESSION_RIGHT_DOWN_HTC = 7,
    XR_EYE_EXPRESSION_LEFT_OUT_HTC = 8,
    XR_EYE_EXPRESSION_RIGHT_IN_HTC = 9,
    XR_EYE_EXPRESSION_LEFT_IN_HTC = 10,
    XR_EYE_EXPRESSION_RIGHT_OUT_HTC = 11,
    XR_EYE_EXPRESSION_LEFT_UP_HTC = 12,
    XR_EYE_EXPRESSION_RIGHT_UP_HTC = 13,
    XR_EYE_EXPRESSION_MAX_ENUM_HTC = 0x7FFFFFFF
} XrEyeExpressionHTC;



// Provided by XR_HTC_facial_tracking
typedef enum XrLipExpressionHTC {
    XR_LIP_EXPRESSION_JAW_RIGHT_HTC = 0,
    XR_LIP_EXPRESSION_JAW_LEFT_HTC = 1,
    XR_LIP_EXPRESSION_JAW_FORWARD_HTC = 2,
    XR_LIP_EXPRESSION_JAW_OPEN_HTC = 3,
    XR_LIP_EXPRESSION_MOUTH_APE_SHAPE_HTC = 4,
    XR_LIP_EXPRESSION_MOUTH_UPPER_RIGHT_HTC = 5,
    XR_LIP_EXPRESSION_MOUTH_UPPER_LEFT_HTC = 6,
    XR_LIP_EXPRESSION_MOUTH_LOWER_RIGHT_HTC = 7,
    XR_LIP_EXPRESSION_MOUTH_LOWER_LEFT_HTC = 8,
    XR_LIP_EXPRESSION_MOUTH_UPPER_OVERTURN_HTC = 9,
    XR_LIP_EXPRESSION_MOUTH_LOWER_OVERTURN_HTC = 10,
    XR_LIP_EXPRESSION_MOUTH_POUT_HTC = 11,
    XR_LIP_EXPRESSION_MOUTH_SMILE_RIGHT_HTC = 12,
    XR_LIP_EXPRESSION_MOUTH_SMILE_LEFT_HTC = 13,
    XR_LIP_EXPRESSION_MOUTH_SAD_RIGHT_HTC = 14,
    XR_LIP_EXPRESSION_MOUTH_SAD_LEFT_HTC = 15,
    XR_LIP_EXPRESSION_CHEEK_PUFF_RIGHT_HTC = 16,
    XR_LIP_EXPRESSION_CHEEK_PUFF_LEFT_HTC = 17,
    XR_LIP_EXPRESSION_CHEEK_SUCK_HTC = 18,
    XR_LIP_EXPRESSION_MOUTH_UPPER_UPRIGHT_HTC = 19,
    XR_LIP_EXPRESSION_MOUTH_UPPER_UPLEFT_HTC = 20,
    XR_LIP_EXPRESSION_MOUTH_LOWER_DOWNRIGHT_HTC = 21,
    XR_LIP_EXPRESSION_MOUTH_LOWER_DOWNLEFT_HTC = 22,
    XR_LIP_EXPRESSION_MOUTH_UPPER_INSIDE_HTC = 23,
    XR_LIP_EXPRESSION_MOUTH_LOWER_INSIDE_HTC = 24,
    XR_LIP_EXPRESSION_MOUTH_LOWER_OVERLAY_HTC = 25,
    XR_LIP_EXPRESSION_TONGUE_LONGSTEP1_HTC = 26,
    XR_LIP_EXPRESSION_TONGUE_LEFT_HTC = 27,
    XR_LIP_EXPRESSION_TONGUE_RIGHT_HTC = 28,
    XR_LIP_EXPRESSION_TONGUE_UP_HTC = 29,
    XR_LIP_EXPRESSION_TONGUE_DOWN_HTC = 30,
    XR_LIP_EXPRESSION_TONGUE_ROLL_HTC = 31,
    XR_LIP_EXPRESSION_TONGUE_LONGSTEP2_HTC = 32,
    XR_LIP_EXPRESSION_TONGUE_UPRIGHT_MORPH_HTC = 33,
    XR_LIP_EXPRESSION_TONGUE_UPLEFT_MORPH_HTC = 34,
    XR_LIP_EXPRESSION_TONGUE_DOWNRIGHT_MORPH_HTC = 35,
    XR_LIP_EXPRESSION_TONGUE_DOWNLEFT_MORPH_HTC = 36,
    XR_LIP_EXPRESSION_MAX_ENUM_HTC = 0x7FFFFFFF
} XrLipExpressionHTC;

@dfgHiatus
Copy link

Possibly relevant, this PR enables the Vive Facial Tracker's camera to be used with Project Babble. The current VRCFT Babble module should work for this as well: Project-Babble/ProjectBabble#82

@galister
Copy link
Owner

galister commented Feb 4, 2025

This issue is for standalone HTC, wired HTC can be used via Babble.

Standalone HTC seems to not be possible with pure OpenXR, even though the extensions are there. Starting the actual face tracker requires WaveSDK.

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

No branches or pull requests

3 participants