PositionSensorVRDevice: getImmediateState() Methode
Deprecated
Avoid using this feature in new projects. Development of the WebVR API halted in favor of WebXR. This feature may be a candidate for removal from web standards or browsers.>
Consider using the following features instead: WebXR.>
Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.
Die getImmediateState() Methode des VRDisplay Schnittstelle gibt den aktuellen momentanen Zustand des Positionssensors zurück. Diese ist nur selten zu verwenden, für spezielle Anwendungsfälle, zum Beispiel um die unmittelbare Position eines Handorientierungssensors zu erfassen – oder zumindest wird sie das in Zukunft sein.
Für die meisten Standardanwendungen möchten Sie stattdessen wahrscheinlich PositionSensorVRDevice.getState verwenden.
Syntax
getImmediateState()
Parameter
Keine.
Rückgabewert
Ein VRPose Objekt.
Beispiele
Das folgende Demo verwendet die WebVR API, um die Ansicht einer einfachen CanvasRenderingContext2D Szene in jedem Frame einer requestAnimationFrame Schleife zu aktualisieren. Die Hauptfunktion, die die Ansichts-Daten aktualisiert, ist wie folgt:
function setView() {
const posState = gPositionSensor.getImmediateState();
if (posState.hasPosition) {
posPara.textContent = `Position: x${roundToTwo(
posState.position.x,
)} y${roundToTwo(posState.position.y)} z${roundToTwo(posState.position.z)}`;
xPos = -posState.position.x * WIDTH * 2;
yPos = posState.position.y * HEIGHT * 2;
zPos = -posState.position.z > 0.01 ? -posState.position.z : 0.01;
}
if (posState.hasOrientation) {
orientPara.textContent = `Orientation: x${roundToTwo(
posState.orientation.x,
)} y${roundToTwo(posState.orientation.y)} z${roundToTwo(
posState.orientation.z,
)}`;
xOrient = posState.orientation.x * WIDTH;
yOrient = -posState.orientation.y * HEIGHT * 2;
zOrient = posState.orientation.z * 180;
}
}
Hier holen wir ein VRPose Objekt mit getImmediateState() und speichern es in posState (das eigentliche Live-Demo verwendet getState(), aber beide scheinen derzeit dasselbe zu tun.) Wir überprüfen dann, ob Positions- und Orientierungsinformationen im aktuellen Frame vorhanden sind, indem wir VRPose.position und VRPose.orientation nutzen (diese geben null zurück, wenn, zum Beispiel, das Head-Mounted-Display ausgeschaltet ist oder nicht auf den Positionssensor zeigt, was zu einem Fehler führen würde).
Wir geben dann die x-, y- und z-Position und Orientierungswerte zu Informationszwecken aus und verwenden diese Werte, um die Variablen xPos, yPos, zPos, xOrient, yOrient und zOrient zu aktualisieren, die verwendet werden, um das Szenen-Rendering in jedem Frame zu aktualisieren.