Back to Content

XRHitTestSource

files/en-us/web/api/xrhittestsource/index.md

latest1.8 KB
Original Source

{{APIRef("WebXR Device API")}}{{SecureContext_Header}}{{SeeCompatTable}}

The XRHitTestSource interface of the WebXR Device API handles hit test subscriptions. You can get an XRHitTestSource object by using the {{domxref("XRSession.requestHitTestSource()")}} method.

This object doesn't itself contain hit test results, but it is used to compute hit tests for each {{domxref("XRFrame")}} by calling {{domxref("XRFrame.getHitTestResults()")}}, which returns {{domxref("XRHitTestResult")}} objects.

Instance properties

None.

Instance methods

  • {{domxref("XRHitTestSource.cancel()")}} {{Experimental_Inline}}
    • : Unsubscribes from the hit test.

Examples

Getting an XRHitTestSource object for a session

Call {{domxref("XRSession.requestHitTestSource()")}} to get a hit test source.

js
const xrSession = navigator.xr.requestSession("immersive-ar", {
  requiredFeatures: ["local", "hit-test"],
});

let hitTestSource = null;

xrSession
  .requestHitTestSource({
    space: viewerSpace, // obtained from xrSession.requestReferenceSpace("viewer");
    offsetRay: new XRRay({ y: 0.5 }),
  })
  .then((viewerHitTestSource) => {
    hitTestSource = viewerHitTestSource;
  });

// frame loop
function onXRFrame(time, xrFrame) {
  let hitTestResults = xrFrame.getHitTestResults(hitTestSource);

  // do things with the hit test results
}

Unsubscribe from hit test

To unsubscribe from a hit test source, call {{domxref("XRHitTestSource.cancel()")}}. Since the object will no longer be usable, you can clean up and set the XRHitTestSource object to null.

js
hitTestSource.cancel();
hitTestSource = null;

Specifications

{{Specifications}}

Browser compatibility

{{Compat}}

See also

  • {{domxref("XRTransientInputHitTestSource")}}