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 einemXRAnchor
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.
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.
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.
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