Рекомендуемые параметры для Unity

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

Настройка производительной среды

Параметры низкого качества

Важно изменить параметры качества Unity на Очень низкое , чтобы приложение выполнялось и хорошо работает с соответствующей частотой кадров, особенно для разработки HoloLens. Для разработки на иммерсивных гарнитурах, в зависимости от характеристик рабочего стола, питающего виртуальную реальность, можно по-прежнему достичь частоты кадров без параметров самого низкого качества.

В Unity 2019 LTS+ можно задать уровень качества проекта, перейдя в раздел Изменение>качествапараметров> проекта и установив значение По умолчанию, щелкнув стрелку вниз к уровню **Очень низкое качество.

Параметры освещения

Как и в случае с параметрами качества сцены, важно задать оптимальные параметры освещения для приложения Смешанная реальность. В Unity параметр освещения, который, как правило, оказывает наибольшее влияние на вашу сцену, — это глобальное освещение в реальном времени. Вы можете отключить глобальное освещение, выбрав Параметрыосвещенияотрисовки> окон > в >реальном времени Глобальное освещение.

Есть еще один параметр освещения, Baked Global Lighting. Этот параметр может обеспечить производительное и визуально поразительное результаты на иммерсивных гарнитурах, но неприменим для разработки HoloLens. Испеченное глобальное освещение вычисляется только для статических объектов GameObjects, которые не встречаются в сценах HoloLens из-за характера неизвестной и изменяющейся среды.

Дополнительные сведения см. в статье Глобальная подсветка от Unity .

Примечание

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

Путь отрисовки с одним проходом

В Смешанная реальность приложениях сцена отрисовывается дважды: один раз для каждого глаза. По сравнению с традиционной трехмерной разработкой это фактически удваивает объем работы, которую необходимо вычислить. Важно выбрать наиболее эффективный путь отрисовки в Unity, чтобы сэкономить время на ЦП и GPU. Однопроходно-экземплярная отрисовка оптимизирует конвейер отрисовки Unity для приложений смешанной реальности; Рекомендуется включить этот параметр по умолчанию для каждого проекта.

Включение этой функции в проекте Unity

  1. Откройте Параметры OpenXR (перейдите в раздел Изменение>параметров> проектаУправление подключаемым> модулем XROpenXR).
  2. Выберите Экземпляр с одним проходом в раскрывающемся меню Режим отрисовки .

Дополнительные сведения о таком подходе к отрисовке см. в следующих статьях Unity.

Примечание

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

Действия для решения этой проблемы описаны в документе Unity об однопроходной стереоскопической отрисовке для HoloLens.

Включение общего доступа к буферу глубины

Чтобы обеспечить лучшую стабильность голограммы от восприятия пользователем, рекомендуется включить свойство "Общий доступ к буферу глубины " в Unity. Включив этот параметр, Unity поделится картой глубины, созданной приложением, с платформой Windows Mixed Reality. Платформа может оптимизировать стабильность голограмм специально для вашей сцены для любого кадра, отображаемого приложением.

Включение этой функции в проекте Unity

  1. Откройте Параметры OpenXR (перейдите в раздел Изменение>параметров> проектаУправление подключаемым> модулем XROpenXR).
  2. Выберите Глубина 16 бит в раскрывающемся меню Режим отправки глубины .

Параметр 16-разрядного буфера глубины особенно рекомендуется для разработки HoloLens. Выбор 16-разрядного по сравнению с 24-разрядным значительно снизит требования к пропускной способности, так как потребуется переместить или обработать меньше данных. При этом оптимизация сопровождается определенными затратами. Убедитесь, что вы понимаете последствия, упомянутые в полях Важные ниже.

Чтобы платформа Windows Mixed Reality для оптимизации стабильности голограмм, она полагается на то, чтобы буфер глубины был точным и соответствовал любым отображаемым голограммам на экране. Таким образом, при совместном использовании буфера глубины важно при отрисовке цвета также отображать глубину. В Unity большинство материалов Opaque или TransparentCutout по умолчанию отрисовывает глубину, но прозрачные и текстовые объекты не будут отображать глубину, хотя это зависит от шейдеров и других факторов.

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

  1. Выберите прозрачный материал, использующий стандартный шейдер MRTK, и откройте окно редактора инспектора.
  2. Нажмите кнопку Исправить сейчас в предупреждении общего доступа к буферу глубины. Это также можно выполнить вручную, задав для параметра Режим отрисовки значение Пользовательский; затем установите для параметра Режим значение Прозрачный и, наконец, задайте для параметра Запись по глубине значение Включено.

Важно!

Разработчики должны остерегаться Z-боя при изменении этих значений вместе с параметрами ближней и дальней плоскости камеры. Z-файтинг возникает, когда два игровых объекта пытаются выполнить отрисовку в один и тот же пиксель, и из-за ограничений в точности буфера глубины (т. е. глубины z), Unity не может определить, какой объект находится перед другим. Разработчики заметят мерцание между двумя игровыми объектами, когда они борются за одно и то же значение z-глубины. Это можно решить, переключившись на 24-разрядный формат глубины, так как для каждого объекта будет больше значений, которые будут вычисляться для их Z-глубины от камеры.

Тем не менее, рекомендуется, особенно для разработки HoloLens, изменить ближней и дальней плоскости камеры на меньший диапазон и сохранить 16-разрядный формат глубины. Z-глубина нелинейно сопоставляется с диапазоном значений вдоль ближней и дальней плоскостей камеры. Это можно изменить, выбрав основную камеру в сцене и в разделе Инспектор, измените значения Near & Far Clipping Plane , чтобы уменьшить их диапазон (т. е. от 1000 м до 100 м или другое значение x и т. д.).

Важно!

Unity не создает буфер трафарета при использовании 16-разрядного формата глубины. Таким образом, некоторые эффекты пользовательского интерфейса Unity и другие эффекты, необходимые для набора элементов, не будут работать, если не будет выбран 24-разрядный формат глубины, который создаст 8-разрядный буфер трафарета.

Сборка для IL2CPP

Unity не рекомендуется поддерживать серверную часть сценариев .NET и поэтому рекомендует разработчикам использовать IL2CPP для своих сборок UWP Visual Studio. Хотя это дает различные преимущества, создание решения Visual Studio из Unity для IL2CPP может выполняться медленнее, чем старый метод .NET. Поэтому настоятельно рекомендуется следовать рекомендациям по созданию IL2CPP , чтобы сэкономить время итерации разработки.

  1. Используйте добавочное построение, каждый раз создавая проект в одном и том же каталоге, повторно используя предварительно созданные файлы.
  2. Отключение проверок программного обеспечения для защиты от вредоносных программ для проекта & папок сборки
    • Откройте антивирусную & защиту от угроз в приложении параметров Windows 10
    • Выберите Управление параметрами в разделе Параметры защиты от вирусов & угроз.
    • Выберите Добавить или удалить исключения в разделе Исключения .
    • Выберите Добавить исключение и выберите папку, содержащую код проекта Unity и выходные данные сборки.
  3. Использование SSD для сборки

Дополнительные сведения см. в статье Оптимизация времени сборки для IL2CPP .

Примечание

Кроме того, может быть полезно настроить сервер кэширования, особенно для проектов Unity с большим объемом ресурсов (за исключением файлов сценариев) либо постоянно меняющимися сценами или ресурсами. Когда открывается проект, Unity сохраняет соответствующие ресурсы в формате для внутреннего кэша на компьютере разработчика. Измененные элементы нужно повторно импортировать и еще раз обработать. Этот процесс можно выполнить один раз и сохранить на сервере кэширования, а значит, и совместно использовать с другими разработчиками для экономии времени. При этом каждому разработчику не придется обрабатывать повторно импортированные измененные элементы локально.

Свойства публикации

Голографический экран-заставка

HoloLens имеет ЦП и GPU мобильного класса, что означает, что загрузка приложений может занять немного больше времени. Пока приложение загружается, пользователи будут видеть только черный цвет, и поэтому они могут задаться вопросом, что происходит. Чтобы успокоить их во время загрузки, можно добавить голографический экран-заставку.

Чтобы переключить голографический экран-заставку, выполните следующие действия.

  1. Перейдите на страницу "Изменение>параметров> проекта" проигрывателя
  2. Перейдите на вкладку Магазина Windows и откройте раздел Образ-заставка .
  3. Примените изображение к свойству Windows Holographic Holographic > Splash Image .
    • Переключение параметра Показать экран-заставку Unity приведет к включению или отключению экрана-заставки с фирменной символией Unity. Если у вас нет лицензии Unity Pro, экран-заставка с фирменной символикой Unity будет отображаться всегда.
    • Если применяется голографическое изображение-заставка , оно всегда будет отображаться независимо от того, включен или отключен флажок Показать экран-заставку Unity. Указание пользовательского голографического образа-заставки доступно только разработчикам с лицензией Unity Pro.
Показать экран-заставку Unity Голографическое изображение-заставка Поведение
Включено Нет Показывать экран-заставку Unity по умолчанию в течение 5 секунд или до загрузки приложения, в зависимости от того, какая из них длиннее.
Включено Особые настройки Показывать пользовательский экран-заставку в течение 5 секунд или до загрузки приложения, в зависимости от того, какое значение будет длиннее.
Выключено Нет Отображение прозрачного черного цвета (ничего) до загрузки приложения.
Выключено Особые настройки Показывать пользовательский экран-заставку в течение 5 секунд или до загрузки приложения, в зависимости от того, какое значение будет длиннее.

Дополнительные сведения см. в документации по экрану-заставку Unity .

потеря слежения;

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

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

Чтобы настроить потерянное изображение для отслеживания, выполните следующие действия.

  1. Перейдите на страницу "Изменение>параметров> проекта" проигрывателя
  2. Выберите вкладку Магазина Windows и откройте раздел Образ-заставка .
  3. Примените изображение к свойству Windows Holographic > Tracking Loss Image .

Отказ от автоматической приостановки

Некоторые приложения могут не требовать отслеживания (например, приложения с ориентацией , такие как 360-градусные видеозрители) или могут потребовать непрерывной обработки во время потери отслеживания. Вы можете отказаться от поведения отслеживания по умолчанию, но вы несете ответственность за скрытие или отключение любых объектов, которые не будут отображаться должным образом в сценарии отслеживания потери. В большинстве случаев рекомендуется отображать только содержимое, заблокированное телом, в центре main камеры.

Чтобы отказаться от автоматической приостановки:

  1. Перейдите на страницу "Изменение>параметров> проекта", проигрыватель
  2. Перейдите на вкладку Магазина Windows и откройте раздел Образ-заставка .
  3. Измените флажок Windows Holographic > On Tracking Loss Pause and Show Image (Показать изображение).

Отслеживание событий потерь

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

Возможности

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

Для Смешанная реальность приложения можно включить следующие возможности:

  1. Перейдите на страницу "Изменение>параметров> проекта" проигрывателя
  2. Перейдите на вкладку Магазин Windows , откройте раздел Параметры публикации и найдите список Возможности .

Применимые возможности для включения часто используемых API для голографических приложений:

Функция ИНТЕРФЕЙСЫ API, требующие возможности
SpatialPerception; SurfaceObserver
Веб-камера PhotoCapture и VideoCapture
PicturesLibrary / VideosLibrary PhotoCapture или VideoCapture соответственно (при хранении захваченного содержимого)
микрофон VideoCapture (при записи звука), DictationRecognizer, GrammarRecognizer и KeywordRecognizer
InternetClient DictationRecognizer (и для использования профилировщика Unity)

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