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

Пространство имен:UnityEngine. XR. WSA
Тип: холографиксеттингс

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

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

Примечание

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

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

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

Пример

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

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.

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