PositionSensorVRDevice: метод getImmediateState()
Устаревшее: Эта функция больше не рекомендуется. Хотя некоторые браузеры могут её поддерживать, она, возможно, уже удалена из соответствующих веб-стандартов, может быть в процессе удаления или поддерживается только для совместимости. Избегайте её использования и, если возможно, обновите существующий код; обратитесь к таблице совместимости внизу этой страницы, чтобы принять решение. Имейте в виду, что эта функция может перестать работать в любой момент.
Нестандартная: Эта функция нестандартна и не находится на пути к стандартизации. Не используйте её на производственных сайтах, ориентированных на веб: она не будет работать для каждого пользователя. Также могут существовать значительные несовместимости между реализациями, и поведение может измениться в будущем.
Метод getImmediateState() интерфейса VRDisplay возвращает текущее мгновенное состояние датчика положения. Он предназначен для использования только в редких случаях, для определённых специальных задач, например, для выборки мгновенного положения датчика ориентации руки — или, по крайней мере, так будет в будущем.
Для большинства стандартных случаев, вы, вероятно, захотите использовать PositionSensorVRDevice.getState вместо этого.
Синтаксис
getImmediateState()
Параметры
Нет.
Возвращаемое значение
Объект VRPose.
Примеры
В следующем примере демонстрируется использование API WebVR для обновления отображения простой сцены CanvasRenderingContext2D в каждом кадре цикла requestAnimationFrame. Основная функция, обновляющая данные отображения, выглядит следующим образом:
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;
}
}
Здесь мы получаем объект VRPose с помощью getImmediateState() и сохраняем его в posState (в реальной демонстрации используется getState(), но, похоже, оба делают одно и то же на данный момент). Затем мы проверяем, присутствует ли информация о положении и ориентации в текущем кадре, используя VRPose.position и VRPose.orientation (они возвращают null если, например, гарнитура виртуальной реальности выключена или не направлена на датчик положения, что вызовет ошибку).
Затем мы выводим значения x, y и z для позиции и ориентации для информационных целей и используем эти значения для обновления переменных xPos, yPos, zPos, xOrient, yOrient, и zOrient, которые используются для обновления рендеринга сцены в каждом кадре.
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
getImmediateState |
Нет | Нет | 39 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PositionSensorVRDevice/getImmediateState