XRSession: requestHitTestSourceForTransientInput()-Methode

Limited availability

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

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.

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

Die requestHitTestSourceForTransientInput()-Methode der XRSession-Schnittstelle gibt ein Promise zurück, das mit einem XRTransientInputHitTestSource-Objekt aufgelöst wird, das an XRFrame.getHitTestResultsForTransientInput() übergeben werden kann.

Syntax

js
requestHitTestSourceForTransientInput(options)

Parameter

options

Ein Objekt mit Konfigurationsoptionen, speziell:

profile

Ein String, der den Eingabeprofilnamen der transienten Eingabequelle angibt, die zur Berechnung der Trefferergebnisse verwendet wird.

entityTypes Optional

Ein Array, das die Typen von Entitäten spezifiziert, die zur Erstellung der Trefferquelle verwendet werden sollen. Wenn kein Entitätstyp angegeben ist, standardisiert das Array auf ein einzelnes Element mit dem Typ plane. Mögliche Typen:

  • point: Berechnen Sie Trefferergebnisse basierend auf charakteristischen Punkten, die erkannt wurden.
  • plane: Berechnen Sie Trefferergebnisse basierend auf realen Ebenen, die erkannt wurden.
  • mesh: Berechnen Sie Trefferergebnisse basierend auf erkannten Netzen.
offsetRay Optional

Das XRRay-Objekt, das zur Durchführung des Treffers verwendet wird. Wenn kein XRRay-Objekt bereitgestellt wurde, wird ein neues XRRay-Objekt ohne Parameter konstruiert.

Rückgabewert

Ein Promise das mit einem XRTransientInputHitTestSource-Objekt aufgelöst wird.

Ausnahmen

Statt echte Ausnahmen zu werfen, lehnt requestHitTestSourceForTransientInput() das zurückgegebene Promise mit einem DOMException ab, insbesondere einer der folgenden:

NotSupportedError DOMException

Wird ausgelöst, wenn hit-test kein aktiviertes Feature in XRSystem.requestSession() ist.

InvalidStateError DOMException

Wird ausgelöst, wenn die Sitzung bereits beendet wurde.

NotAllowedError DOMException

Wird ausgelöst, wenn eine unangemessene Anzahl von Anfragen vorliegt. Einige Benutzeragenten könnten die Nutzung aus Datenschutzgründen einschränken.

Beispiele

Anfordern einer transienten Trefferquelle

Um eine Trefferquelle anzufordern, starten Sie eine XRSession mit dem aktivierten hit-test-Sitzungs-Feature. Konfigurieren Sie anschließend die Trefferquelle und speichern Sie sie für die spätere Verwendung in der Frameroutine und rufen Sie XRFrame.getHitTestResultsForTransientInput() auf, um das Ergebnis zu erhalten.

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

let transientHitTestSource = null;

xrSession
  .requestHitTestSourceForTransientInput({
    profile: "generic-touchscreen",
    offsetRay: new XRRay(),
  })
  .then((touchScreenHitTestSource) => {
    transientHitTestSource = touchScreenHitTestSource;
  });

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

  // do things with the transient hit test results
}

Spezifikationen

Specification
WebXR Hit Test Module
# dom-xrsession-requesthittestsourcefortransientinput

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch