XRInputSource: targetRaySpace-Eigenschaft
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.
Die schreibgeschützte XRInputSource
-Eigenschaft targetRaySpace
gibt ein XRSpace
(typischerweise ein XRReferenceSpace
) zurück, das die Position und Orientierung des Zielstrahls im virtuellen Raum darstellt. Sein nativer Ursprung verfolgt die Position des Ursprungspunktes des Zielstrahls, und seine Orientierung zeigt die Ausrichtung des Controllers an. Diese Werte, interpretiert im Kontext des targetRayMode
der Eingabequelle, können verwendet werden, um das Gerät vollständig als Eingabequelle zu interpretieren.
Um ein XRSpace
zu erhalten, das die Position und Orientierung des Eingabegeräts im virtuellen Raum repräsentiert, verwenden Sie die gripSpace
-Eigenschaft.
Wert
Ein XRSpace
-Objekt – typischerweise ein XRReferenceSpace
oder XRBoundedReferenceSpace
– welches die Position und Orientierung des Zielstrahls des Eingabegeräts im virtuellen Raum darstellt.
Der native Ursprung des zurückgegebenen XRSpace
befindet sich an dem Punkt, von dem der Zielstrahl ausgesendet wird, und die Orientierung des Raums gibt die Richtung an, in die der Zielstrahl zeigt.
Verwendungshinweise
Alle Eingabequellen – unabhängig von ihrem targetRayMode
– haben einen gültigen targetRaySpace
. Die genaue Bedeutung dieses Raumes variiert jedoch je nach Modus:
- Bei jedem Blick-Eingabegerät (
targetRayMode
-Wert vongaze
) wird derselbeXRSpace
-Objekt als ihr Zielstrahlraum geteilt, da der Blick-Eingang vom Kopf des Betrachters kommt. Dieser gemeinsame Raum repräsentiert denselben Ort wie der Raum, der von derXRSession
-MethoderequestReferenceSpace()
zurückgegeben wird, wird jedoch als separates Objekt beibehalten, um zukünftige Erweiterungen der API zu ermöglichen. - Der von verfolgten Zeigereingaben (
targetRayMode
vontracked-pointer
) gemeldete Zielstrahlraum basiert tatsächlich auf der tatsächlichen räumlichen Position und Orientierung des Eingabegeräts.
Um die Position und Orientierung des Zielstrahls beim Rendern eines Frames zu bestimmen, übergeben Sie ihn an die XRFrame
-Methode getPose()
, und verwenden Sie dann das zurückgegebene XRPose
-Objekt und dessen transform
, um die räumlichen Informationen zu sammeln, die Sie benötigen.
Beispiele
Dieser Codeausschnitt zeigt einen Teil einer Funktion, die einmal pro Frame aufgerufen wird. Er sucht nach Eingaben, die einen nicht-null
targetRaySpace
haben. Eingaben, die einen Wert für diese Eigenschaft haben, repräsentieren Eingaben, die einen Zielstrahl vom Benutzer aus nach außen projizieren.
Für jede solche Eingabe sucht dieses Beispiel nach Eingaben, deren targetRayMode
tracked-pointer
ist, was anzeigt, dass die Eingabe tatsächlich ein Zielgerät darstellen soll und nicht ein Betrachtungsgerät, Bildschirmtipp oder Mausklick. Für verfolgte Zeigegeräte wird eine Funktion myRenderTargetRayAsBeam()
aufgerufen, um einen Strahl von der virtuellen Position des Eingabegeräts in die Richtung zu rendern, in die es zeigt.
Der Code sollte weiterhin Aufgaben wie das Zeichnen von Controllern oder von Objekten, die die Position der Hände des Benutzers im virtuellen Raum repräsentieren, sowie alle anderen eingabebezogenen Aufgaben ausführen.
function updateInputSources(session, frame, refSpace) {
for (const source of session.getInputSources()) {
const targetRayPose = frame.getPose(inputSource.targetRaySpace, refSpace);
if (targetRayPose) {
if (source.targetRayMode === "tracked-pointer") {
myRenderTargetRayAsBeam(targetRayPose);
}
}
// …
}
}
Spezifikationen
Specification |
---|
WebXR Device API # dom-xrinputsource-targetrayspace |
Browser-Kompatibilität
BCD tables only load in the browser