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

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

Используйте точку фокусировки , чтобы предоставить HoloLens указание о том, как лучше стабилизировать отображаемые в данный момент голограммы.Use the focus point to provide HoloLens with a hint about how to best stabilize the holograms currently being displayed.

Если вы хотите задать точку фокусировки в Unity, необходимо задать каждый кадр с помощью холографиксеттингс. сетфокуспоинтфорфраме ().If you want to set the Focus Point in Unity, it needs to be set every frame using HolographicSettings.SetFocusPointForFrame(). Если точка фокусировки не задана для рамки, используется плоскость стабилизации по умолчанию.When the Focus Point isn't set for a frame, the default stabilization plane is used.

Примечание

По умолчанию в новых проектах Unity установлен параметр "включить совместное использование буфера глубины".By default, new Unity projects have the "Enable Depth Buffer Sharing" option set. С помощью этого параметра приложение Unity, работающее на высококлассной гарнитуре или на HoloLens под управлением Windows 10 2018 апреля Update (RS4) или более поздней версии, будет отправлять в Windows буфер глубины, чтобы автоматически оптимизировать стабильность, без приложения, указывающего на точку фокусировки:With this option, a Unity app running on either an immersive desktop headset or a HoloLens running the Windows 10 April 2018 Update (RS4) or later will submit your depth buffer to Windows to optimize hologram stability automatically, without your app specifying a focus point:

  • На увлекательной гарнитуре настольной системы это позволит репроектировать на основе глубины на уровне точек.On an immersive desktop headset, this will enable per-pixel depth-based reprojection.
  • В HoloLens с обновлением Windows 10 от апреля 2018 или более поздней версии будет проанализирован буфер глубины, чтобы автоматически выбрать оптимальную плоскость стабилизации.On a HoloLens running the Windows 10 April 2018 Update or later, this will analyze the depth buffer to pick an optimal stabilization plane automatically.

Любой из этих подходов должен обеспечить еще более высокое качество изображения без явной работы приложения, чтобы выбрать точку фокусировки для каждого кадра.Either approach should provide even better image quality without explicit work by your app to select a focus point for each frame. Обратите внимание, что если вы предложит точку фокусировки вручную, это переопределит автоматическое поведение, описанное выше, и обычно снизит стабильность.Note that if you do provide a focus point manually, that will override the automatic behavior described above, and will usually reduce hologram stability. Как правило, при выполнении приложения на HoloLens, который еще не обновлялся до обновления Windows 10 апреля 2018, следует указывать только точку фокусировки вручную.Generally, you should only specify a manual focus point when your app is running on a HoloLens that has not yet been updated to the Windows 10 April 2018 Update.

ПримерExample

Существует множество способов задать точку фокусировки, как предлагается перегрузки, доступные в статической функции сетфокуспоинтфорфраме .There are many ways to set the Focus Point, as suggested by the overloads available on the SetFocusPointForFrame static function. Ниже приведен простой пример для установки плоскости фокусировки на предоставленный объект для каждого кадра:Presented below is a simple example to set the focus plane to the provided object for each frame:

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);
}

Примечание

Приведенный выше простой код может снизить стабильность, если объект, которым он нацелен, заканчивается за пользователем.The simple code above may reduce hologram stability if the focused object ends up behind the user. Обычно рекомендуется задать параметр включить совместное использование буфера глубины вместо того, чтобы вручную указать точку фокусировки.We generally recommend setting Enable Depth Buffer Sharing instead of manually specifying a focus point.

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

Если вы подготовились к расположению разработки Unity, мы собрались изучить возможности и API платформы смешанной реальности.If you're following the Unity development journey we've laid out, you're in the midst of exploring the Mixed Reality platform capabilities and APIs. Вы можете перейти к следующей статье:From here, you can continue to the next topic:

Или сразу перейдите к развертыванию приложения на устройстве или эмуляторе:Or jump directly to deploying your app on a device or emulator:

Вы можете в любой момент вернуться к этапам разработки для Unity.You can always go back to the Unity development checkpoints at any time.

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