WebXR Hand Input Module: Difference between revisions

From WebXR Wiki
Jump to navigation Jump to search
(Create empty page with category)
 
(Add WebIDL)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Standards]]
{{Infobox specification
|title = WebXR Hand Input Module
|status = WD
|last_updated = 19 April 2022
|editors = [[Manish Goregaokar]]
|group = WG
}}
 
The WebXR Hand Input module expands the [[WebXR Device API]] with the functionality to track articulated hand poses.
 
==WebIDL==
<syntaxhighlight lang="idl">
partial interface XRInputSource {
  [SameObject] readonly attribute XRHand? hand;
};
 
enum XRHandJoint {
  "wrist",
 
  "thumb-metacarpal",
  "thumb-phalanx-proximal",
  "thumb-phalanx-distal",
  "thumb-tip",
 
  "index-finger-metacarpal",
  "index-finger-phalanx-proximal",
  "index-finger-phalanx-intermediate",
  "index-finger-phalanx-distal",
  "index-finger-tip",
 
  "middle-finger-metacarpal",
  "middle-finger-phalanx-proximal",
  "middle-finger-phalanx-intermediate",
  "middle-finger-phalanx-distal",
  "middle-finger-tip",
 
  "ring-finger-metacarpal",
  "ring-finger-phalanx-proximal",
  "ring-finger-phalanx-intermediate",
  "ring-finger-phalanx-distal",
  "ring-finger-tip",
 
  "pinky-finger-metacarpal",
  "pinky-finger-phalanx-proximal",
  "pinky-finger-phalanx-intermediate",
  "pinky-finger-phalanx-distal",
  "pinky-finger-tip"
};
 
[Exposed=Window]
interface XRHand {
    iterable<XRHandJoint, XRJointSpace>;
 
    readonly attribute unsigned long size;
    XRJointSpace get(XRHandJoint key);
};
 
[Exposed=Window]
interface XRJointSpace: XRSpace {
  readonly attribute XRHandJoint jointName;
};
 
partial interface XRFrame {
    XRJointPose? getJointPose(XRJointSpace joint, XRSpace baseSpace);
    boolean fillJointRadii(sequence<XRJointSpace> jointSpaces, Float32Array radii);
 
    boolean fillPoses(sequence<XRSpace> spaces, XRSpace baseSpace, Float32Array transforms);
};
 
[Exposed=Window]
interface XRJointPose: XRPose {
    readonly attribute float radius;
};
</syntaxhighlight>
 
== External Links ==
* [https://www.w3.org/TR/webxr-hand-input-1/ Specification]
* [https://github.com/immersive-web/webxr-hand-input GitHub]
 
{{Navbox specifications}}
 
[[Category:Specifications]]

Latest revision as of 00:25, 1 March 2023

WebXR Hand Input Module
StatusWD
Last Updated19 April 2022
Editor(s)Manish Goregaokar
CG or WG?WG

The WebXR Hand Input module expands the WebXR Device API with the functionality to track articulated hand poses.

WebIDL[edit]

partial interface XRInputSource {
   [SameObject] readonly attribute XRHand? hand;
};

enum XRHandJoint {
  "wrist",

  "thumb-metacarpal",
  "thumb-phalanx-proximal",
  "thumb-phalanx-distal",
  "thumb-tip",

  "index-finger-metacarpal",
  "index-finger-phalanx-proximal",
  "index-finger-phalanx-intermediate",
  "index-finger-phalanx-distal",
  "index-finger-tip",

  "middle-finger-metacarpal",
  "middle-finger-phalanx-proximal",
  "middle-finger-phalanx-intermediate",
  "middle-finger-phalanx-distal",
  "middle-finger-tip",

  "ring-finger-metacarpal",
  "ring-finger-phalanx-proximal",
  "ring-finger-phalanx-intermediate",
  "ring-finger-phalanx-distal",
  "ring-finger-tip",

  "pinky-finger-metacarpal",
  "pinky-finger-phalanx-proximal",
  "pinky-finger-phalanx-intermediate",
  "pinky-finger-phalanx-distal",
  "pinky-finger-tip"
};

[Exposed=Window]
interface XRHand {
    iterable<XRHandJoint, XRJointSpace>;

    readonly attribute unsigned long size;
    XRJointSpace get(XRHandJoint key);
};

[Exposed=Window]
interface XRJointSpace: XRSpace {
  readonly attribute XRHandJoint jointName;
};

partial interface XRFrame {
    XRJointPose? getJointPose(XRJointSpace joint, XRSpace baseSpace);
    boolean fillJointRadii(sequence<XRJointSpace> jointSpaces, Float32Array radii);

    boolean fillPoses(sequence<XRSpace> spaces, XRSpace baseSpace, Float32Array transforms);
};

[Exposed=Window]
interface XRJointPose: XRPose {
    readonly attribute float radius;
};

External Links[edit]