WebXR Hit Test Module: Difference between revisions
Jump to navigation
Jump to search
(Standards -> Specifications) |
(Add short summary and WebIDL) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
{{Infobox specification | |||
|title = WebXR Hit Test Module | |||
|status = WD | |||
|last_updated = 19 April 2022 | |||
|editors = [[Piotr Bialecki]] | |||
|group = WG | |||
}} | |||
The WebXR Hit Test module describes a method for performing hit tests against real world geometry to be used with the [[WebXR Device API]]. | |||
==WebIDL== | |||
<syntaxhighlight lang="idl"> | |||
enum XRHitTestTrackableType { | |||
"point", | |||
"plane", | |||
"mesh" | |||
}; | |||
dictionary XRHitTestOptionsInit { | |||
required XRSpace space; | |||
FrozenArray<XRHitTestTrackableType> entityTypes; | |||
XRRay offsetRay; | |||
}; | |||
dictionary XRTransientInputHitTestOptionsInit { | |||
required DOMString profile; | |||
FrozenArray<XRHitTestTrackableType> entityTypes; | |||
XRRay offsetRay; | |||
}; | |||
[SecureContext, Exposed=Window] | |||
interface XRHitTestSource { | |||
undefined cancel(); | |||
}; | |||
[SecureContext, Exposed=Window] | |||
interface XRTransientInputHitTestSource { | |||
undefined cancel(); | |||
}; | |||
[SecureContext, Exposed=Window] | |||
interface XRHitTestResult { | |||
XRPose? getPose(XRSpace baseSpace); | |||
}; | |||
[SecureContext, Exposed=Window] | |||
interface XRTransientInputHitTestResult { | |||
[SameObject] readonly attribute XRInputSource inputSource; | |||
readonly attribute FrozenArray<XRHitTestResult> results; | |||
}; | |||
partial interface XRSession { | |||
Promise<XRHitTestSource> requestHitTestSource(XRHitTestOptionsInit options); | |||
Promise<XRTransientInputHitTestSource> requestHitTestSourceForTransientInput(XRTransientInputHitTestOptionsInit options); | |||
}; | |||
partial interface XRFrame { | |||
FrozenArray<XRHitTestResult> getHitTestResults(XRHitTestSource hitTestSource); | |||
FrozenArray<XRTransientInputHitTestResult> getHitTestResultsForTransientInput(XRTransientInputHitTestSource hitTestSource); | |||
}; | |||
dictionary XRRayDirectionInit { | |||
double x = 0; | |||
double y = 0; | |||
double z = -1; | |||
double w = 0; | |||
}; | |||
[SecureContext, Exposed=Window] | |||
interface XRRay { | |||
constructor(optional DOMPointInit origin = {}, optional XRRayDirectionInit direction = {}); | |||
constructor(XRRigidTransform transform); | |||
[SameObject] readonly attribute DOMPointReadOnly origin; | |||
[SameObject] readonly attribute DOMPointReadOnly direction; | |||
[SameObject] readonly attribute Float32Array matrix; | |||
}; | |||
</syntaxhighlight> | |||
== External Links == | |||
* [https://www.w3.org/TR/webxr-hit-test-1/ Specification] | |||
* [https://github.com/immersive-web/hit-test GitHub] | |||
{{Navbox specifications}} | |||
[[Category:Specifications]] | [[Category:Specifications]] |
Latest revision as of 00:29, 1 March 2023
Status | WD |
---|---|
Last Updated | 19 April 2022 |
Editor(s) | Piotr Bialecki |
CG or WG? | WG |
The WebXR Hit Test module describes a method for performing hit tests against real world geometry to be used with the WebXR Device API.
WebIDL[edit]
enum XRHitTestTrackableType {
"point",
"plane",
"mesh"
};
dictionary XRHitTestOptionsInit {
required XRSpace space;
FrozenArray<XRHitTestTrackableType> entityTypes;
XRRay offsetRay;
};
dictionary XRTransientInputHitTestOptionsInit {
required DOMString profile;
FrozenArray<XRHitTestTrackableType> entityTypes;
XRRay offsetRay;
};
[SecureContext, Exposed=Window]
interface XRHitTestSource {
undefined cancel();
};
[SecureContext, Exposed=Window]
interface XRTransientInputHitTestSource {
undefined cancel();
};
[SecureContext, Exposed=Window]
interface XRHitTestResult {
XRPose? getPose(XRSpace baseSpace);
};
[SecureContext, Exposed=Window]
interface XRTransientInputHitTestResult {
[SameObject] readonly attribute XRInputSource inputSource;
readonly attribute FrozenArray<XRHitTestResult> results;
};
partial interface XRSession {
Promise<XRHitTestSource> requestHitTestSource(XRHitTestOptionsInit options);
Promise<XRTransientInputHitTestSource> requestHitTestSourceForTransientInput(XRTransientInputHitTestOptionsInit options);
};
partial interface XRFrame {
FrozenArray<XRHitTestResult> getHitTestResults(XRHitTestSource hitTestSource);
FrozenArray<XRTransientInputHitTestResult> getHitTestResultsForTransientInput(XRTransientInputHitTestSource hitTestSource);
};
dictionary XRRayDirectionInit {
double x = 0;
double y = 0;
double z = -1;
double w = 0;
};
[SecureContext, Exposed=Window]
interface XRRay {
constructor(optional DOMPointInit origin = {}, optional XRRayDirectionInit direction = {});
constructor(XRRigidTransform transform);
[SameObject] readonly attribute DOMPointReadOnly origin;
[SameObject] readonly attribute DOMPointReadOnly direction;
[SameObject] readonly attribute Float32Array matrix;
};