XRInputSource: gripSpace-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 gripSpace
gibt ein XRSpace
zurück, dessen nativer Ursprung die Pose verfolgt, die zum Rendern virtueller Objekte verwendet wird, sodass diese so erscheinen, als ob sie in der Hand des Nutzers gehalten werden. Wenn ein Benutzer beispielsweise eine virtuelle gerade Stange hält, würde sich der native Ursprung dieses XRSpace
im ungefähren Schwerpunkt der Faust des Benutzers befinden.
Wert
Ein XRSpace
-Objekt, das die Position und Ausrichtung des Eingabegeräts im virtuellen Raum darstellt und zum Rendern eines Bildes des Gerätes in die Szene geeignet ist. gripSpace
ist null
, wenn die Eingabequelle nicht von Natur aus verfolgbar ist. Zum Beispiel bieten nur Eingänge, deren targetRayMode
tracked-pointer
ist, ein gripSpace
.
Stellen Sie sich vor, der Controller ist wie eine gerade Stange geformt, die in der Faust des Nutzers gehalten wird. Der native Ursprung des Griffraums befindet sich im Schwerpunkt—dem Schwerpunkt—der Faust des Nutzers und verfolgt die Position der Hand des Nutzers.
Das Koordinatensystem für den Griffraum der linken Hand.
Das Koordinatensystem für den Griffraum der rechten Hand.
Wie im obigen Diagramm gezeigt, ist das Koordinatensystem wie folgt ausgerichtet:
- Die x-Achse steht senkrecht zur Handfläche des Benutzers, wobei die Richtung, die vom Handrücken aus nach außen zeigt, +X ist, wenn sich der Controller in der rechten Hand des Benutzers befindet, oder -X, wenn der Controller in der linken Hand ist.
- Die z-Achse verläuft entlang der Länge der Stange, parallel zur Handfläche des Benutzers und entlang der Länge ihres Griffs. -Z ist in Richtung des Daumens des Benutzers, und +Z ist in die entgegengesetzte Richtung.
- Die y-Achse ergibt sich aus der Beziehung zwischen den anderen beiden Achsen; wie immer ist sie das Kreuzprodukt der anderen beiden Achsen (liegt 90° von sowohl der X- als auch der Z-Achse entfernt).
Beispiele
In diesem Beispiel, das aus dem Frame-Rendering-Callback stammt, wird das gripSpace
verwendet,
um ein Mesh zu rendern, das die Position und Ausrichtung des Controllers in der
virtuellen Umgebung darstellt.
for (const source in xrSession.inputSources) {
if (source.gripSpace) {
const gripPose = frame.getPose(source.gripSpace, xrRefSpace);
if (gripPose) {
myDrawMeshUsingTransform(controllerMesh, gripPose.transform.matrix);
}
}
}
Für jede Eingabequelle, die einen Wert für gripSpace
hat, erhält diese Schleife
die XRPose
, die die Position und Ausrichtung beschreibt,
die durch gripSpace
definiert wird. Wenn eine gültige Pose zurückgegeben wird, wird eine Methode
myDrawMeshUsingTransform()
aufgerufen, um das Mesh des Controllers zu zeichnen,
transformiert mit der Transformationsmatrix der Griffpose.
Spezifikationen
Specification |
---|
WebXR Device API # dom-xrinputsource-gripspace |
Browser-Kompatibilität
BCD tables only load in the browser