webxr-input

Implement WebXR input handling for Quest devices in Three.js.

1|1|Updated Mar 30, 2026
One-click install
npx skills add https://github.com/Entelligentsia/skillforge --skill webxr-input
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: webxr-input
Source: https://github.com/Entelligentsia/skillforge/tree/main/meta-webxr-skills/skills/webxr-input
Command: npx skills add https://github.com/Entelligentsia/skillforge --skill webxr-input

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

WebXR input sources on Quest devices can be complex to manage: you need to handle controllers, hand tracking, and synchronization of input poses with 3D models. This Skill offers a consolidated guide to access XRInputSource data, handle per-frame updates, and render appropriate models.

Core Features & Use Cases

  • Access and interpret XRInputSource properties (handedness, profiles, gamepad, gripSpace, and hand) to drive UI and interactions.
  • Retrieve per-frame poses for targetRaySpace and gripSpace to drive raycasting and controller attachments.
  • Integrate hand-tracking with XRHand joints and pose data to animate hands in the scene.
  • Use Three.js factories (XRControllerModelFactory and XRHandModelFactory) to render controller and hand representations and handle input events (selectstart, selectend, squeezestart, squeezeend).

Quick Start

Connect the Three.js scene to WebXR input sources including controllers and hands.

Frequently Asked Questions about webxr-input

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I handle WebXR controller input and hand tracking in Three.js?

WebXR controller input and hand tracking in Three.js are handled by accessing XRInputSource data, retrieving per-frame poses for targetRaySpace and gripSpace, and integrating XRHand joints to animate models.

How do I map XRInputSource data to controller raycasting interactions?

XRInputSource data maps to controller raycasting by retrieving per-frame poses from targetRaySpace, interpreting handedness and gamepad properties, and processing input events like selectstart and selectend to trigger interactions.

Does this WebXR input Skill work with Meta Quest devices and hand tracking?

Yes, this WebXR input Skill works with Meta Quest devices, supporting both physical controllers and hand tracking by mapping XRInputSource data and managing XRHand joints for Three.js scenes.

How do I render 3D controller and hand models using WebXR input sources?

To render 3D controller and hand models, integrate Three.js XRControllerModelFactory and XRHandModelFactory with WebXR input sources, synchronizing gripSpace and hand joint pose data to animate the representations.

How do I manage select and squeeze input events for VR controllers?

VR controller select and squeeze input events are managed by listening to selectstart, selectend, squeezestart, and squeezeend events generated from XRInputSource data within the Three.js scene loop.

What is the best way to update WebXR hand joint poses per frame in Three.js?

Updating WebXR hand joint poses per frame in Three.js is best achieved by accessing the XRHand object from the XRInputSource and iterating through its joint spaces to retrieve and apply current pose matrices.