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, bevor Sie diese produktiv verwenden.

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

BCD tables only load in the browser

Siehe auch