Spec-Zone.ru › Web APIs

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 Нет Нет Нет Нет Нет Нет Нет Нет

См. также

  • API WebVR

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API