Hand Tracking Lab
Experiment with what the Quest 3 sees when it tracks your bare hands. Choose a test before entering color passthrough. Dinoscores is completely separate.
Lab 003: The purple line is the Quest's actual hand pointing ray (
targetRaySpace), not the direction of your index finger. The sign shows its left/right heading and up/down elevation in the room's local coordinates, and its movement in degrees. With your fingers open (at least 70 mm apart), the lab keeps updating the original pointing direction. It holds that starting direction once your fingertips are within 50 mm. “At select” records how far the beam had moved when Quest recognized the pinch; “Peak before” remembers the largest change up to that moment. Values remain visible until a later recognized pinch. The gold line still measures thumb-to-index separation; green means the lab's 20 mm threshold, not Quest recognition. The pale finger-line shows the original index-finger direction.Move and twist the readout: It starts to your left and stays in the room instead of following your face. Aim a hand's Quest pointing beam at the panel, pinch thumb and index finger to grab, then move your hand to reposition it and rotate your wrist to turn or tilt the sign. Release to leave it in place and at that angle. You can also pinch while touching the panel directly. It resets to its starting position and orientation each time you enter passthrough. Manipulating the panel does not change pinch calculations, although the grab pinch is counted.
Lab 004 · Pick up objects: Three objects appear in front of you. Reach your thumb and index finger near one, or aim the purple Quest beam at it. Use a Quest-recognized select pinch to pick it up. Move your hand to move it; wrist rotation turns it. Release the selection to leave it floating in its new position. The sign is still movable and rotatable, and the complete 25-joint hand skeleton remains visible. The Quest supplies joints, pointer poses and selection events—not a built-in object-pickup result. Our lab detects which object was near your fingers or ray. The readout labels these sources separately. A squeeze event or gripSpace may not be available for a hand; the sign reports what the browser actually exposes. No physical-world collisions or gravity are simulated.
Lab 005.3 · Finger contact fit: As in 005.2, reach with an open hand, curl several fingers to grab, and reopen to release. The hand mask keeps real fingers visible in front of the held object. New: the lab uses finger-tip positions to make small, bounded adjustments to the held object so its visible surface better meets the curled fingers. Choose Original 005.2 placement for a direct comparison, or Balanced / Stronger fit. Because you observed that the Quest's fingertip dots stop short of your actual fingertips, there is an optional 0 / 8 / 16 mm fingertip allowance. This is an approximation, not a way to reshape the real passthrough video or change the physical pose of your hand. Your 25 tracked points, connecting lines, depth mask, and movable sign remain. The sign will show the approximate contact mismatch in millimeters after a grab. Dinoscores is unchanged.
Lab 006 · Hand appearance: It uses Meta's publicly released
generic-hand model through the standard Three.js WebXR hand-model factory. This is not the Meta native SDK hand renderer. Select separate hand-model, skeleton, and Quest-ray layers before entering. A simple joint-sphere representation is available if the model asset has not loaded. The sign shows which input fields are actually reported by WebXR, and can be moved and twisted by aiming and pinching. This is the only experiment that lazily uses external model and rendering libraries; Labs 001–005 remain independent.Change experiments: use the Quest's built-in left-palm menu gesture to exit immersive mode. Look at your left palm, pinch thumb and index finger until the menu icon fills, then release. The experiment menu returns here. This reserved system gesture is not part of our lab.
Our saved capability roadmap · WebXR versus native Meta SDK
Hand appearance: (1) Meta-contributed generic-hand mesh in WebXR [006]; (2) bare-hand joint dots and lines [001/006]; (3) simple spheres/hand-volume view [006]; (4) independent model visibility and opacity [006].
Tracking: (5) 25 named joint poses [001/006]; (6) joint radii [005/006]; (7) left/right handedness and tracking availability [004/006]; (8) Quest target ray [003/006]. All are available through WebXR when reported.
Gestures: (9) native select/pinch event [003/004]; (10) finger curl / whole-hand grasp computed by lab [005]; (11) pinch strength as a continuous value [planned; browser availability varies]; (12) recognizable hand poses [planned; software-derived]; (13) native microgestures [investigate; native SDK support differs].
Interactions: (14) hand grab [005, lab-computed]; (15) custom object grip poses [planned, native SDK may offer richer support]; (16) poke [planned]; (17) distance grab [planned]; (18) ray visuals [003/004/006]. These named native SDK interaction components are not automatically WebXR events.
Debugging: (19) Hands Debug Overlay [006 provides WebXR diagnostics; Meta's native overlay itself is not exposed as a WebXR API].
Browser limitation: the full native Meta Interaction SDK is not available directly to ordinary WebXR pages. This lab reports what the browser exposes; it does not pretend to expose native-only features.