Spec-Zone.ru › Web APIs

XRViewerPose

Ограниченная доступность

Эта функция не является базовой, так как не работает в некоторых из наиболее широко используемых браузеров.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Защищённый контекст: Эта функция доступна только в защищённых контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Интерфейс API устройства WebXR XRViewerPose представляет собой позу (положение и ориентацию) точки зрения пользователя в сцене. Каждый XRViewerPose может иметь несколько представлений, например, для отображения небольшого разделения между левым и правым глазом.

Это представление может представлять всё — от точки зрения шлема XR пользователя до точки зрения, представленной движением аватара игрока с помощью мыши и клавиатуры, отображённой на экране, до виртуальной камеры, которая захватывает сцену для зрителя.

XRPose XRViewerPose

Свойства экземпляра

В дополнение к свойствам, унаследованным от XRPose, XRViewerPose включает в себя следующие:

views Только для чтения

Массив объектов XRView, по одному для каждой точки зрения в сцене, которая необходима для представления сцены пользователю. Типичный шлем предоставляет позу зрителя с двумя представлениями, чьё свойство eye равно либо left, либо right, указывая, какой глаз представляет это представление. В совокупности эти представления могут воспроизвести 3D-эффект при отображении на устройстве XR.

Примечания по использованию

Объект XRViewerPose используется для описания состояния зрителя веб-сцены XR, отслеживаемой оборудованием XR пользователя. Зритель может быть виртуальным представлением пользователя, или он может представлять другое устройство или интерфейс, который может служить источником позиции и ориентации, составляющих представление сцены. Например, каждый игрок в MMORPG может иметь экземпляр XRViewerPose для вычисления того, что он видит; если игра предоставляет механизм, который сообщает игроку, видит ли его другой игрок или он видит другого игрока, эта информация становится важной.

Экземпляр XRViewerPose всегда получается и ссылается на существующий XRReferenceSpace. Это гарантирует, что позиции и ориентации сообщаются с использованием ожидаемой относительной системы координат.

Для отрисовки сцены с помощью XRViewerPose, представляющего голову пользователя, необходимо перебрать представления в массиве views, рисуя их по одному. Вызывая viewport() в контексте WebGL, указав XRView в качестве входных данных, вы можете получить область видимости для использования при отрисовке, чтобы нарисовать кадр для этого глаза в соответствующей части поверхности рисования.

Кроме того, при отрисовке сцены для зрителей или других игроков в многопользовательской игре преобразование transform объекта XRViewerPose может использоваться для определения расположения и направления взгляда других игроков в игре, чтобы они отображались в правильном месте с правильным направлением.

Позу зрителя для кадра анимации, представленного XRFrame, можно получить, вызвав метод кадра getViewerPose(), указав пространство ссылок, в котором должна быть вычислена позиция начала координат. Возвращённый XRViewerPose сообщает о том, где находится зритель и в каком направлении он смотрит в момент выполнения кадра.

Примеры

В этом примере — части кода для отрисовки XRFrame, getViewerPose() вызывается для получения XRViewerPose с использованием того же пространства ссылок, которое используется кодом в качестве базового пространства ссылок. Если возвращается допустимая поза, кадр отрисовывается путём очистки буфера заднего плана и последующей отрисовкой каждого представления в позе; скорее всего, это представления для левого и правого глаза.

const pose = frame.getViewerPose(xrReferenceSpace);

if (pose) {
  const glLayer = xrSession.renderState.baseLayer;

  gl.bindFrameBuffer(gl.FRAMEBUFFER, glLayer.framebuffer);
  gl.clearColor(0, 0, 0, 1);
  gl.clearDepth(1);
  gl.clear(gl.COLOR_BUFFER_BIT, gl.DEPTH_BUFFER_BIT);

  for (const view of pose.views) {
    const viewport = glLayer.getViewport(view);
    gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);

    /* render the scene for the eye view.eye */
  }
}

Передача каждого view в getViewport() возвращает область видимости WebGL для применения, чтобы выходные данные отрисовки были правильно расположены в буфере для отрисовки соответствующего глаза на выводе устройства.

Этот код взят из Отрисовка кадра в нашем примере WebXR «Движение и движение». Вы можете получить больше контекста и узнать гораздо больше на этой странице.

Спецификации

Спецификация
API устройства WebXR
# xrviewerpose-interface

Совместимость с браузерами

Рабочий стол Мобильное устройство
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
XRViewerPose 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
views 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет

См. также

  • API устройства WebXR
  • Движение, ориентация и движение
  • XRPose и XRView

© 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/XRViewerPose

Spec-Zone.ru

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