Настройка камеры в Unity

Когда вы носите гарнитуру смешанной реальности, она становится центром вашего голографического мира. Компонент Unity Camera будет автоматически обрабатывать стереоскопическую отрисовку и следить за движением и поворотом головы. Однако для полной оптимизации визуального качества и стабильности голограмм необходимо задать параметры камеры, описанные ниже.

Иммерсивные гарнитуры HoloLens vs VR

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

  • При выполнении на иммерсивной гарнитуре вы отрисовываете все, что видит пользователь, поэтому вам, скорее всего, потребуется сохранить skybox.
  • Однако при работе на голографической гарнитуре , такой как HoloLens, реальный мир должен отображаться за всем, что отрисовывает камера. Задайте для фона камеры прозрачный (в HoloLens черный цвет отображается как прозрачный) вместо текстуры Skybox:
    1. Выбор основной камеры на панели Иерархия
    2. На панели Инспектор найдите компонент "Камера" и измените раскрывающийся список "Очистить флаги" с "Skybox" на "Сплошной цвет".
    3. Выберите средство выбора цвета фона и измените значения RGBA на (0, 0, 0, 0).
      1. При настройке из кода можно использовать Unity Color.clear

MRTK будет обрабатывать определенные параметры камеры автоматически на основе конфигурации в профиле системы камеры.

Пространство имен:Microsoft.MixedReality.Toolkit.CameraSystem
Тип:MixedRealityCameraSystem

Чтобы проверить непрозрачность камеры, система MixedRealityCamera имеет IsOpaque свойство .

CoreServices.CameraSystem.IsOpaque;

Настройка камеры

Независимо от того, какой вид опыта вы разрабатываете, основная камера всегда является основным компонентом стерео отрисовки, подключенным к монитору вашего устройства. Будет проще разместить приложение, если представить себе начальную позицию пользователя как (X: 0, Y: 0, Z: 0). Так как основная камера отслеживает движение головы пользователя, начальную позицию пользователя можно задать, задав начальную позицию основной камеры.

Основной выбор заключается в том, что вы разрабатываете для HoloLens или виртуальной реальности иммерсивные гарнитуры. Как только вы получите это, перейдите к разделу настройки.

Настройка камеры HoloLens

Для приложений HoloLens необходимо использовать привязки для любых объектов, которые нужно заблокировать в среде сцены. Мы рекомендуем использовать неограниченное пространство, чтобы обеспечить максимальную стабильность и создать привязки в нескольких помещениях.

Следуйте инструкциям из этого пошагового руководства, чтобы добавить и автоматически настроить Смешанная реальность Toolkit в проекте Unity. Кроме того, можно работать непосредственно с классом MixedRealityPlayspace из MRTK для Unity и задать для целевого масштабазначение World:

Окно параметров MRTK

MRTK должен автоматически обрабатывать положение игрового пространства и камеры, но это хорошо для двойной проверки:

Пространство воспроизведения MRTK

  1. На панели Иерархия разверните GameObject MixedRealityPlayspace и найдите дочерний объект Main Camera .
  2. На панели Инспектор найдите компонент Преобразование и измените положение на (X: 0, Y: 0, Z: 0)

Настройка виртуальной камеры

Windows Mixed Reality поддерживает приложения в широком диапазоне возможностей, от приложений с ориентацией и с размещением до приложений для масштабирования помещений. В HoloLens вы можете идти дальше и создавать приложения мирового масштаба, которые позволяют пользователям ходить за пределы 5 метров, исследуя весь этаж здания и за его пределами.

Первым шагом в создании смешанной реальности в Unity является определение масштабируемости приложения:

Масштабирование комнаты или стоячие интерфейсы

Примечание

Если вы создаете для HL2, мы рекомендуем создать интерфейс на уровне глаз или рассмотреть возможность использования распознавания сцены , чтобы обдумать пол сцены.

Используйте класс MixedRealityPlayspace из MRTK для Unity и присвойте целевому масштабузначение Room или Standing:

Окно параметров MRTK

MRTK должен автоматически обрабатывать положение игрового пространства и камеры, но это хорошо для двойной проверки:

Пространство воспроизведения MRTK

  1. На панели Иерархия разверните GameObject MixedRealityPlayspace и найдите дочерний объект Main Camera .
  2. На панели Инспектор найдите компонент Преобразование и измените положение на (X: 0, Y: 0, Z: 0)

Сидячие возможности

Используйте класс MixedRealityPlayspace из MRTK для Unity и присвойте целевому масштабу значение Seated:

Окно параметров MRTK

MRTK должен автоматически обрабатывать положение игрового пространства и камеры, но это хорошо для двойной проверки:

Пространство воспроизведения MRTK

  1. На панели Иерархия разверните GameObject MixedRealityPlayspace и найдите дочерний объект Main Camera .
  2. На панели Инспектор найдите компонент Преобразование и измените положение на (X: 0, Y: 0, Z: 0)

Настройка фона камеры

Если вы используете MRTK, фон камеры автоматически настраивается и управляется. Для пакетов SDK XR или устаревших проектов WSA рекомендуется настроить фон камеры на сплошной черный цвет на HoloLens и сохранить skybox для виртуальной реальности.

Использование нескольких камер

Если в сцене есть несколько компонентов камеры, Unity знает, какую камеру использовать для стереоскопической отрисовки на основе того, какой GameObject имеет тег MainCamera. В устаревшей версии XR этот тег также используется для синхронизации отслеживания головы. В пакете SDK для XR отслеживание головы осуществляется с помощью скрипта TrackedPoseDriver, подключенного к камере.

Общий доступ к буферам глубины

Совместное использование буфера глубины приложения в Windows с каждым кадром обеспечит одно из двух повышений стабильности голограммы в зависимости от типа гарнитуры, для которых выполняется отрисовка:

  • Иммерсивные гарнитуры виртуальной реальности могут выполнять позиционные перепроецирования при предоставлении буфера глубины, корректируя голограммы для неправильного прогнозирования как положения, так и ориентации.
  • Гарнитуры HoloLens имеют несколько различных методов. HoloLens 1 автоматически выбирает точку фокусировки при предоставлении буфера глубины, оптимизируя стабильность голограммы вдоль плоскости, которая пересекает больше всего содержимого. HoloLens 2 стабилизирует содержимое с помощью LSR глубины (см. примечания).

Диалоговое окно конфигурации MRTK попытается задать параметры буфера глубины как для пакета SDK XR, так и для устаревшей версии WSA, но рекомендуется проверить эти вкладки и проверить параметры в Unity.

Использование обрезки плоскостей

Отображение содержимого, слишком близкого к пользователю, может быть неудобным в смешанной реальности. Вы можете настроить ближней и дальней плоскости клипа на компоненте Камера.

  1. Выбор основной камеры на панели Иерархия
  2. На панели Инспектор найдите компонент КамерыОбрезание плоскостей и измените текстовое поле Рядом с 0,3 на 0,85. Содержимое, отрисованное еще ближе, может привести к дискомфорту пользователя, и его следует избегать в соответствии с рекомендациями по расстоянию отрисовки.

У последней версии камеры

Если вы создаете интерфейс с сидячим масштабированием, вы можете изменить источник мира Unity в текущей позиции головы пользователя, вызвав XR. Метод InputTracking.Recenter в устаревшей версии XR или метод XRInputSubsystem.TryRecenter в пакете SDK для XR.

Телепортация

Эта функция обычно зарезервирована для виртуальной реальности:

MRTK предоставляет встроенную систему телепорта , которая автоматически работает между шарнирными руками и контроллерами.

Режимы повторного проецирования

HoloLens и иммерсивные гарнитуры будут повторно проектировать каждый кадр, отображаемый приложением, чтобы настроить любое неправильное представление о фактическом положении головы пользователя при создании фотонов.

По умолчанию:

  • Иммерсивные гарнитуры виртуальной реальности будут выполнять позиционные перепроецирования, если приложение предоставляет буфер глубины для заданного кадра. Иммерсивные гарнитуры также корректируют голограммы для неправильного прогнозирования положения и ориентации. Если буфер глубины не указан, система исправит только неправильные представления в ориентации.
  • Голографические гарнитуры, такие как HoloLens 2, будут выполнять позиционный перепроецирование независимо от того, предоставляет ли приложение буфер глубины или нет. Позиционный перепроецирование возможно без буферов глубины на HoloLens, так как отрисовка часто разрежена со стабильным фоном, предоставляемым реальным миром.

В настоящее время в MRTK нет вспомогательных элементов для режима повторного проецирования. Дополнительные сведения см. на одной из других вкладок.

Следующий этап разработки

Если вы выполняете описанный нами путь разработки Unity, вы находитесь в разгар изучения основных стандартных блоков MRTK. Отсюда вы можете перейти к следующему стандартному блоку:

Или перейдите к возможностям и API платформы смешанной реальности:

Вы можете в любой момент вернуться к этапам разработки для Unity.

См. также раздел