Spec-Zone.ru › Web APIs

XRView: свойство eye

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

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

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

Экспериментально: Это экспериментальная технология
Перед использованием в продакшене тщательно проверьте таблицу совместимости браузеров в разделе Совместимость с браузерами.

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

Чтение только eye свойство интерфейса XRView — это строка, указывающая, на взгляд какого глаза указывает XRView: left или right. Для представлений, которые не отображают ни один глаз, таких как моноскопические представления, значение этого свойства равно none.

Значение

Строка, которая может иметь одно из следующих значений:

left

XRView представляет точку обзора левого глаза зрителя.

right

Представление отображает правый глаз зрителя.

none

XRView описывает моноскопическое представление или представление не отображает точку зрения конкретного глаза.

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

Основное назначение этого свойства — обеспечить правильное отображение области любого предварительно рендерного стереоконтента для соответствующего глаза. Для динамически рендерного 3D-контента, как правило, можно игнорировать это свойство и рендерить каждый из представлений зрителя один за другим.

Примеры

Этот код из рендерера позы зрителя итерируется по представлениям позы и рендерит их. Однако, у нас есть флаги, которые, если true, указывают на то, что определённый глаз был повреждён во время игры. При рендеринге этого глаза, если флаг true, это представление пропускается вместо рендеринга.

glLayer = xrSession.renderState.baseLayer;
gl.bindFramebuffer(gl.FRAMEBUFFER, glLayer.framebuffer);
gl.clearColor(0, 0, 0, 1.0);
gl.clearDepth(1.0);
gl.clear(gl.COLOR_BUFFER_BIT, gl.DEPTH_BUFFER_BIT);

for (const view of xrPose.views) {
  let skipView = false;

  if (view.eye === "left" && body.leftEye.injured) {
    skipView = updateInjury(body.leftEye);
  } else if (view.eye === "right" && body.rightEye.injured) {
    skipView = updateInjury(body.rightEye);
  }

  if (!skipView) {
    let viewport = glLayer.getViewport(view);
    gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);
    renderScene(gl, view);
  }
}

Для каждого из представлений проверяется значение eye, и если оно равно left или right, проверяется, является ли body.leftEye.injured или body.rightEye.injured свойство true; в этом случае вызывается функция updateInjury() для этого глаза, чтобы выполнить действия, такие как, например, позволить некоторое исцеление, отслеживать прогресс действия яда и т. п., в соответствии с потребностями игры.

updateInjury() возвращает true, если глаз всё ещё повреждён, или false, если глаз восстановлен функцией. Если результат false, что означает, что глаз теперь здоров, мы рендерим сцену для этого глаза. В противном случае мы этого не делаем.

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

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

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

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

© 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/XRView/eye

Spec-Zone.ru

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