Точка фокусировки в Unity

Пространство имен:UnityEngine.XR.WSA
Тип: HolographicSettings

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

Если вы хотите задать точку фокусировки в Unity, ее необходимо задать для каждого кадра с помощью HolographicSettings.SetFocusPointForFrame(). Если точка фокусировки не задана для кадра, используется плоскость стабилизации по умолчанию.

Примечание

По умолчанию для новых проектов Unity установлен параметр "Включить общий доступ к буферу глубины". При использовании этого параметра приложение Unity, работающее на иммерсивной настольной гарнитуре или HoloLens с обновлением Windows 10 за апрель 2018 г. (RS4) или более поздней версии, отправляет буфер глубины в Windows для автоматической оптимизации стабильности голограммы без указания точки фокуса:

  • На иммерсивной классической гарнитуре это позволит выполнять перепроецирование на основе глубины каждого пикселя.
  • На Устройстве HoloLens с обновлением Windows 10 за апрель 2018 г. или более поздней версии будет анализироваться буфер глубины для автоматического выбора оптимальной плоскости стабилизации.

Любой подход должен обеспечить еще лучшее качество изображения без явной работы приложения по выбору точки фокуса для каждого кадра. Обратите внимание, что если вы предоставите точку фокуса вручную, это переопределит описанное выше автоматическое поведение и, как правило, снизит стабильность голограммы. Как правило, следует указывать точку фокуса вручную только в том случае, если приложение работает на Устройстве HoloLens, которое еще не было обновлено до обновления Windows 10 за апрель 2018 г.

Пример

Существует множество способов задать точку фокусировки, как это предлагается перегрузками, доступными в статической функции SetFocusPointForFrame . Ниже приведен простой пример задания плоскости фокуса на предоставленный объект для каждого кадра:

public GameObject focusedObject;
void Update()
{
    // Normally the normal is best set to be the opposite of the main camera's
    // forward vector.
    // If the content is actually all on a plane (like text), set the normal to
    // the normal of the plane and ensure the user does not pass through the
    // plane.
    var normal = -Camera.main.transform.forward;     
    var position = focusedObject.transform.position;
    UnityEngine.XR.WSA.HolographicSettings.SetFocusPointForFrame(position, normal);
}

Примечание

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

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

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

Или сразу перейдите к развертыванию приложения на устройстве или эмуляторе:

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

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