Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

XRSession: requestHitTestSourceForTransientInput() Methode

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

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

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, das Konfigurationsoptionen enthält, insbesondere:

profile

Ein String, der den Eingabeprofilsnamen der transienten Eingabequelle angibt, die zur Berechnung der Hit-Test-Ergebnisse verwendet wird.

entityTypes Optional

Ein Array, das die Typen von Entitäten spezifiziert, die zur Erstellung der Hit-Test-Quelle verwendet werden sollen. Wenn kein Entitätstyp angegeben ist, wird das Array standardmäßig als ein einziges Element mit dem Typ plane festgelegt. Mögliche Typen:

  • point: Berechnet Hit-Test-Ergebnisse basierend auf erkannten charakteristischen Punkten.
  • plane: Berechnet Hit-Test-Ergebnisse basierend auf erkannten realen Ebenen.
  • mesh: Berechnet Hit-Test-Ergebnisse basierend auf erkannten Meshes.
offsetRay Optional

Das XRRay Objekt, das verwendet wird, um den Hit-Test durchzuführen. 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

Anstatt echte Ausnahmen zu werfen, weist requestHitTestSourceForTransientInput() das zurückgegebene Promise mit einem DOMException zurück, insbesondere mit 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 ist.

NotAllowedError DOMException

Wird ausgelöst, wenn es eine unzumutbare Anzahl von Anfragen gibt. Einige User Agents könnten die Nutzung aus Datenschutzgründen einschränken.

Beispiele

Anfordern einer transienten Hit-Test-Quelle

Um eine Hit-Test-Quelle anzufordern, starten Sie eine XRSession mit dem hit-test Sitzungsmerkmal aktiviert. Konfigurieren Sie anschließend die Hit-Test-Quelle und speichern Sie sie zur späteren Verwendung in der Frame-Schleife 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

Spezifikation
WebXR Hit Test Module
# dom-xrsession-requesthittestsourcefortransientinput

Browser-Kompatibilität

Siehe auch