XRHitTestResult

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die XRHitTestResult-Schnittstelle der WebXR Device API enthält ein einzelnes Ergebnis eines Treffer-Tests. Sie können ein Array von XRHitTestResult-Objekten für einen Frame erhalten, indem Sie XRFrame.getHitTestResults() aufrufen.

Instanz-Eigenschaften

Keine.

Instanz-Methoden

XRHitTestResult.createAnchor() Experimentell

Gibt ein Promise zurück, das mit einem XRAnchor aufgelöst wird, der aus dem Treffer-Test-Ergebnis erstellt wurde.

XRHitTestResult.getPose() Experimentell

Gibt die XRPose des Treffer-Test-Ergebnisses relativ zum angegebenen Basisraum zurück.

Beispiele

Erhalten von XRHitTestResult-Objekten innerhalb der Frame-Schleife

Neben dem Anzeigen von XRHitTestResult innerhalb einer Frame-Schleife demonstriert dieses Beispiel einige Dinge, die Sie tun müssen, bevor Sie dieses Objekt anfordern. Während der Sitzungseinrichtung geben Sie "hit-test" als eines der requiredFeatures an. Rufen Sie als Nächstes XRSession.requestHitTestSource() mit den gewünschten Referenzen auf. (Erhalten Sie dies, indem Sie XRSession.requestReferenceSpace() aufrufen.) Dies gibt eine XRHitTestSource zurück. Diese verwenden Sie in der Frame-Schleife, um XRHitTestResult-Objekte zu erhalten.

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
}

Erhalten der Pose des Treffer-Test-Ergebnisses

Verwenden Sie getPose(), um die Pose des Ergebnisses abzufragen.

js
let hitTestResults = xrFrame.getHitTestResults(hitTestSource);

if (hitTestResults.length > 0) {
  let pose = hitTestResults[0].getPose(referenceSpace);
}

Erstellen eines Ankers von einem Treffer-Test-Ergebnis

Sobald Sie durch Treffer-Testen Schnittpunkte auf realen Oberflächen gefunden haben, können Sie einen XRAnchor erstellen, um ein virtuelles Objekt an diesem Ort zu befestigen.

js
hitTestResult.createAnchor().then(
  (anchor) => {
    // add anchored objects to the scene
  },
  (error) => {
    console.error(`Could not create anchor: ${error}`);
  },
);

Spezifikationen

Specification
WebXR Hit Test Module
# xr-hit-test-result-interface

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
XRHitTestResult
Experimental
createAnchor
Experimental
getPose
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.

Siehe auch