Общие сведения о голографической отрисовке
Голографическая отрисовка позволяет приложению рисовать голограмму в точном расположении пользователя, независимо от того, находится ли она точно в физическом мире или в виртуальной области, которую вы создали. Голограммы — это объекты, состоящие из звука и света. Отрисовка позволяет приложению добавить свет.
Поддержка устройств
Компонент | HoloLens (1-го поколения) | HoloLens 2 | Иммерсивные гарнитуры |
Отрисовка | ✔️ | ✔️ | ✔️ |
Голографическая отрисовка
Ключом к голографической отрисовке является знание типа используемого устройства. Устройства с мониторами, такими как HoloLens, добавляют свет на мир. Черные пиксели полностью прозрачны, а более яркие пиксели становятся все более непрозрачными. Так как свет от дисплеев добавляется к свету из реального мира, белые пиксели являются полупрозрачными.
Хотя стереоскопическая отрисовка обеспечивает один сигнал глубины для голограмм, добавление эффектов заземления поможет пользователям легче увидеть, к какой поверхности находится голограмма. Одним из способов заземления является добавление свечения вокруг голограммы на близлежащей поверхности, а затем отрисовка тени на фоне этого свечения. Таким образом, ваша тень, как представляется, вычитает свет из среды. Пространственный звук — еще один важный сигнал глубины, позволяющий пользователям обдумать расстояние и относительное расположение голограммы.
Устройства с непрозрачными дисплеями, такими как Windows Mixed Reality иммерсивные гарнитуры, блокируют мир. Черные пиксели являются сплошными черными, и любой другой цвет отображается в качестве этого цвета для пользователя. Приложение отвечает за отрисовку всего, что видит пользователь. Это делает еще более важным поддерживать постоянную частоту обновления, чтобы пользователи имели удобный интерфейс.
Прогнозируемые параметры отрисовки
Гарнитуры смешанной реальности (как HoloLens, так и иммерсивные гарнитуры) постоянно отслеживают положение и ориентацию головы пользователя относительно его окружения. Когда приложение начинает подготовку следующего кадра, система прогнозирует, где в будущем будет находиться голова пользователя в тот момент, когда кадр отображается на дисплеях. На основе этого прогноза система вычисляет представление и преобразования проекции, которые будут использоваться для этого кадра. Приложение должно использовать эти преобразования для получения правильных результатов. Если системные преобразования не используются, результирующий образ не будет соответствовать реальному миру, что приведет к дискомфорту пользователя.
Примечание
Чтобы точно предсказать, когда новый кадр достигнет дисплеев, система постоянно измеряет эффективную сквозную задержку конвейера отрисовки приложения. Хотя система настраивается в соответствии с длиной конвейера отрисовки, вы можете повысить стабильность голограммы, сохраняя этот конвейер как можно более коротким.
Приложения, использующие расширенные методы для расширения системного прогнозирования, могут переопределять преобразования системного представления и проекции. Эти приложения по-прежнему должны использовать предоставляемые системой преобразования в качестве основы для пользовательских преобразований для получения значимых результатов.
Другие параметры отрисовки
При отрисовке кадра система указывает окно просмотра обратного буфера, в котором должно быть отрисовывается приложение. Это окно просмотра часто меньше полного размера буфера кадров. Независимо от размера окна просмотра, после отрисовки кадра приложением система масштабирует изображение, чтобы заполнить все дисплеи.
Для приложений, которые не могут выполнять отрисовку с требуемой частотой обновления, можно настроить параметры отрисовки системы , чтобы снизить нагрузку на память и затраты на отрисовку за счет увеличения псевдонима пикселей. Формат обратного буфера также можно изменить, что для некоторых приложений может помочь улучшить пропускную способность памяти и пропускную способность пикселей.
Отрисовка, разрешение и частота кадров, в которых приложение запрашивает отрисовку, также может меняться от кадра к кадру и может отличаться в левом и правом глазах. Например, если режим захвата смешанной реальности (MRC) активен, а конфигурация представления фото/видеокамеры не включена, один глаз может быть отрисован с большим FOV или разрешением.
Для любого заданного кадра приложение должно отрисовывать с помощью преобразования представления, преобразования проекции и разрешения окна просмотра, предоставляемых системой. Кроме того, приложение никогда не должно предполагать, что какой-либо параметр отрисовки или представления остается фиксированным от фрейма к кадру. Такие механизмы, как Unity, обрабатывают все эти преобразования в собственных объектах камеры, чтобы всегда учитывались физическое перемещение пользователей и состояние системы. Если приложение позволяет виртуально перемещать пользователя по всему миру (например, с помощью стик на геймпаде), можно добавить родительский объект буровой установки над камерой, которая перемещает его вокруг. Это приводит к тому, что камера отражает как виртуальное, так и физическое движение пользователя. Если приложение изменяет преобразование представления, преобразование проекции или измерение окна просмотра, предоставляемое системой, оно должно сообщить системе, вызвав соответствующий API переопределения.
Чтобы повысить стабильность голографической отрисовки, приложение должно предоставлять в Windows каждый кадр буфер глубины, используемый для отрисовки. Если приложение предоставляет буфер глубины, оно должно иметь согласованные значения глубины с глубиной, выраженной в метрах от камеры. Это позволяет системе использовать данные о глубине в пикселях, чтобы лучше стабилизировать содержимое, если голова пользователя немного смещается от прогнозируемого расположения. Если вы не можете предоставить буфер глубины, вы можете указать точку фокуса и обычный режим, определив плоскость, которая прорезает большую часть содержимого. Если указаны буфер глубины и плоскость фокуса, система может использовать и то, и другое. В частности, полезно предоставить буфер глубины и точку фокуса, которая включает в себя вектор скорости, когда приложение отображает голограммы, которые находятся в движении.
Подробные сведения об этой теме см. в статье о отрисовке в DirectX .
Голографические камеры
Windows Mixed Reality вводит концепцию голографической камеры. Голографические камеры похожи на традиционные камеры, найденные в трехмерных графических текстах; они определяют внешние свойства (положение и ориентация) и встроенные свойства камеры. (Например, поле обзора используется для просмотра виртуальной трехмерной сцены.) В отличие от традиционных трехмерных камер, приложение не контролирует положение, ориентацию и внутренние свойства камеры. Положение и ориентация голографической камеры неявно контролируются движением пользователя. Перемещение пользователя ретранслируется в приложение по кадрам с помощью преобразования представления. Аналогичным образом, внутренние свойства камеры определяются калиброванной оптикой устройства и ретранслятором кадр за кадром через преобразование проекции.
Как правило, приложение отрисовывается для одной стереокамеры. Надежный цикл отрисовки будет поддерживать несколько камер, а также моно- и стереокамеры. Например, система может попросить приложение выполнить отрисовку с альтернативной точки зрения, когда пользователь активирует функцию смешанной реальности (MRC), в зависимости от формы гарнитуры. Приложения, которые могут поддерживать несколько камер, получают их, соглашаясь на тип камер, которые они могут поддерживать.
Объемная отрисовка
При отрисовке медицинских МРТ или инженерных томов в 3D часто используются методы отрисовки томов . Эти методы могут быть интересны в смешанной реальности, где пользователи могут естественным образом просматривать такой объем под ключевыми углами, просто двигая головой.
Поддерживаемые разрешения в HoloLens (первого поколения)
- Максимальный размер окна просмотра является свойством Объекта HolographicDisplay. По умолчанию для HoloLens задан максимальный размер окна просмотра, равный 720p (1268x720).
- Размер окна просмотра можно изменить, задав ViewportScaleFactor в HolographicCamera. Этот коэффициент масштабирования находится в диапазоне от 0 до 1.
- Самый низкий поддерживаемый размер окна просмотра в HoloLens (первого поколения) составляет 50 % от 720p, то есть 360p (634 x 360). Это ViewportScaleFactor 0,5.
- Все, что ниже 540p, не рекомендуется из-за ухудшения визуального состояния, но может использоваться для выявления узких мест в частоте заполнения пикселей.
Поддерживаемые решения для HoloLens 2
- Текущий и максимальный поддерживаемые целевые размеры отрисовки являются свойствами конфигурации представления. HoloLens 2 по умолчанию устанавливается максимальный размер целевого объекта отрисовки( 1440 x 936).
- Приложения могут изменять размер целевых буферов отрисовки, вызывая метод RequestRenderTargetSize, чтобы запросить новый размер целевого объекта отрисовки. Будет выбран новый размер целевого объекта отрисовки, который соответствует или превышает запрошенный размер целевого объекта отрисовки. Этот API изменяет размер целевого буфера отрисовки, что требует перераспределения памяти на GPU. К последствиям этого относится: размер целевого объекта отрисовки можно уменьшить, чтобы уменьшить нагрузку на память на GPU, и этот метод не следует вызывать с высокой частотой.
- Приложения по-прежнему могут изменять размер окна просмотра так же, как и для HoloLens 1. Дополнительное перераспределение памяти на GPU отсутствует, поэтому его можно изменять с высокой частотой, но его нельзя использовать для снижения нагрузки на память на GPU.
- Самый низкий поддерживаемый размер окна просмотра на HoloLens 2 — 634x412, а viewportScaleFactor — приблизительно 0,44, если используется размер целевого объекта отрисовки по умолчанию.
- Если указан размер целевого объекта отрисовки, который меньше, чем самый низкий поддерживаемый размер окна просмотра, коэффициент масштабирования окна просмотра будет игнорироваться.
- Все, что ниже 540p, не рекомендуется из-за ухудшения визуального состояния, но может использоваться для выявления узких мест в частоте заполнения пикселей.