Камера в UnityCamera in Unity

При износе гарнитуры смешанной реальности он станет центром в holographic-мире.When you wear a mixed reality headset, it becomes the center of your holographic world. Компонент камеры Unity автоматически обрабатывает стереоскопикную визуализацию и поддерживайте свое головное перемещение и вращение.The Unity Camera component will automatically handle stereoscopic rendering and follow your head movement and rotation. Однако, чтобы полностью оптимизировать качество визуальных элементов и стабильность, необходимо задать параметры камеры, описанные ниже.However, to fully optimize visual quality and hologram stability, you should set the camera settings described below.

НастройкаSetup

  1. В разделе " другие параметры " окна " Параметры проигрывателя магазина Windows "Go to Other Settings section of the Windows Store Player Settings
  2. Выберите Windows Mixed Reality в качестве устройства, которое может быть указано как Windows holographic в более ранних версиях Unity.Choose Windows Mixed Reality as the device, which may be listed as Windows Holographic in older versions of Unity
  3. Выбрать поддерживаемую виртуальную реальностьSelect Virtual Reality Supported

Примечание

Эти параметры должны применяться к камере в каждой сцене приложения.These settings need to be applied to the Camera in each scene of your app.

По умолчанию при создании новой сцены в Unity она будет содержать главную GameObject камеры в иерархии, которая включает компонент камеры, но не имеет правильно примененных параметров.By default, when you create a new scene in Unity, it will contain a Main Camera GameObject in the Hierarchy which includes the Camera component, but does not have the settings below properly applied.

Более holographic и впечатляющие гарнитурыHolographic vs. immersive headsets

Параметры по умолчанию для компонента камеры Unity предназначены для традиционных трехмерных приложений, которым требуется скибокс фон, так как у них нет реального мира.The default settings on the Unity Camera component are for traditional 3D applications, which need a skybox-like background as they don't have a real world.

  • При работе на иммерсивного гарнитуре вы получаете все, что видит пользователь, и поэтому вам, скорее всего, потребуется скибокс.When running on an immersive headset, you're rendering everything the user sees, and so you'll likely want to keep the skybox.
  • Однако при работе на гарнитуре holographic , такой как HoloLens, реальный мир должен отображаться позади всей визуализации камеры.However, when running on a holographic headset like HoloLens, the real world should appear behind everything the camera renders. Установите прозрачный фон камеры (в HoloLens, черный отображается как прозрачный) вместо текстуры Скибокс:Set the camera background to be transparent (in HoloLens, black renders as transparent) instead of a Skybox texture:
    1. Выбор основной камеры на панели ИерархияSelect the Main Camera in the Hierarchy panel
    2. На панели инспектора найдите компонент Камера и измените раскрывающийся список нечетких флагов с Скибокс на сплошной цвет.In the Inspector panel, find the Camera component and change the Clear Flags dropdown from Skybox to Solid Color
    3. Выберите средство выбора цвета фона и измените значения RGBA на (0, 0, 0, 0).Select the Background color picker and change the RGBA values to (0, 0, 0, 0)

Вы можете использовать код скрипта, чтобы определить во время выполнения, является ли гарнитура увлекательной или holographic, проверив холографиксеттингс. исдисплайопакуе.You can use script code to determine at runtime whether the headset is immersive or holographic by checking HolographicSettings.IsDisplayOpaque.

Размещение камерыPositioning the Camera

Если вы представиме начальную точку пользователя как (X: 0, Y: 0, Z: 0), будет проще размещать приложение.It will be easier to lay out your app if you imagine the starting position of the user as (X: 0, Y: 0, Z: 0). Так как основная камера отслеживает перемещение заголовка пользователя, начальное расположение пользователя можно задать, установив начальную точку основной камеры.Since the Main Camera is tracking movement of the user's head, the starting position of the user can be set by setting the starting position of the Main Camera.

  1. На панели Иерархия выберите Главная камера.Select Main Camera in the Hierarchy panel

  2. На панели инспектора найдите компонент преобразование и измените его расположение с (X: 0, Y: 1, Z:-10) на (X: 0, Y: 0, Z: 0).In the Inspector panel, find the Transform component and change the Position from (X: 0, Y: 1, Z: -10) to (X: 0, Y: 0, Z: 0)

    Камера на панели инспектора в UnityCamera in the Inspector pane in Unity
    Камера на панели инспектора в UnityCamera in the Inspector pane in Unity

Резкие плоскостиClip planes

Визуализация содержимого слишком близко к пользователю может быть неудобно в смешанной реальности.Rendering content too close to the user can be uncomfortable in mixed reality. В компоненте камеры можно настроить близкие и более далекое плоскости .You can adjust the near and far clip planes on the Camera component.

  1. Выбор основной камеры на панели ИерархияSelect the Main Camera in the Hierarchy panel
  2. На панели инспектора найдите компонент камеры обтравочные плоскости и измените значение поля NEAR TextBox с 0,3 на 0,85.In the Inspector panel, find the Camera component Clipping Planes and change the Near textbox from 0.3 to 0.85. Содержимое, отображаемое еще ближе, может привести к дискомфорт пользователя, и его следует избегать в соответствии с рекомендациями по расстоянию при визуализации.Content rendered even closer can lead to user discomfort and should be avoided per the render distance guidelines.

Несколько камерMultiple Cameras

Если в сцене имеется несколько компонентов камеры, Unity знает, какая камера будет использоваться для отрисовки стереоскопик и отслеживания головок в зависимости от того, какой GameObject имеет тег Маинкамера.When there are multiple Camera components in the scene, Unity knows which camera to use for stereoscopic rendering and head tracking based on which GameObject has the MainCamera tag.

Перецентрирование опыта работыRecentering a seated experience

Если вы создаете опытв области, вы можете изменить центр по всему миру в текущей позиции головного пользователя, вызвав XR. Метод Инпуттраккинг. recenter .If you're building a seated-scale experience, you can recenter Unity's world origin at the user's current head position by calling the XR.InputTracking.Recenter method.

Режимы РЕПРОЕКЦИИReprojection modes

Как HoloLens, так и иммерсивное гарнитуры будут перестраивать каждый кадр, отображаемый приложением, для коррекции неверного предсказания фактического расположения пользователя при выдаче фотоны.Both HoloLens and immersive headsets will reproject each frame your app renders to adjust for any misprediction of the user's actual head position when photons are emitted.

По умолчанию:By default:

  • Если приложение предоставляет буфер глубины для данного кадра , то позаботится о позиционированном перепроецировании.Immersive headsets will take care of positional reprojection if the app provides a depth buffer for a given frame. Иммерсивное гарнитура также настраивают голограммы для неверного предсказания как в положении, так и на ориентации.Immersive headsets will also adjust your holograms for misprediction in both position and orientation. Если буфер глубины не указан, система будет исправлять только неправильные прогнозы по ориентации.If a depth buffer isn't provided, the system will only correct mispredictions in orientation.
  • Holographic , например HoloLens, позаботится о том, предоставляет ли приложение свой буфер глубины.Holographic headsets like HoloLens will take care of positional reprojection whether the app provides its depth buffer or not. Позиционированное перестановка возможно без буферов глубины в HoloLens, так как отрисовка часто является разреженной с стабильным фоном, обеспечиваемым реальным миром.Positional reprojection is possible without depth buffers on HoloLens as rendering is often sparse with a stable background provided by the real world.

Если вы знаете, что вы создаете интерфейс только для ориентации с содержимым, защищенным телом (например, с содержимым видео 360-градуса), можно явно задать для режима РЕПРОЕКЦИИ ориентацию только путем установки холографиксеттингс. репрожектионмоде в холографикрепрожектионмоде. ориентатиононли.If you know that you're building an orientation-only experience with rigidly body-locked content (for example, 360-degree video content), you can explicitly set the reprojection mode to orientation only by setting HolographicSettings.ReprojectionMode to HolographicReprojectionMode.OrientationOnly.

Совместное использование буферов глубины с WindowsSharing your depth buffers with Windows

Предоставление общего доступа к буферу глубины приложения в Windows. Каждый кадр обеспечит ваше приложение одним из двух усовершенствований в голограммах, в зависимости от типа гарнитуры, для которой выполняется подготовка.Sharing your app's depth buffer to Windows each frame will give your app one of two boosts in hologram stability, based on the type of headset you're rendering for:

  • Захватывающие головные телефоны могут позаботиться о позиционированном перепроецировании при наличии буфера глубины, настраивая голограммы для неверного предсказания как на позиции, так и на ориентации.Immersive headsets can take care of positional reprojection when a depth buffer is provided, adjusting your holograms for misprediction in both position and orientation.
  • У более holographic гарнитур есть несколько различных методов.Holographic headsets have a few different methods. HoloLens 1 автоматически выберет точку фокусировки при указании буфера глубины, оптимизируя голограмму на уровне, пересекающую наибольшее содержимое.HoloLens 1 will automatically select a focus point when a depth buffer is provided, optimizing hologram stability along the plane that intersects the most content. HoloLens 2 будет стабилизировать содержимое, используя глубину ЛСР (см. примечания).HoloLens 2 will stabilize content using Depth LSR (see Remarks).

Чтобы задать, будет ли приложение Unity предоставлять буфер глубины для Windows:To set whether your Unity app will provide a depth buffer to Windows:

  1. Выберите изменить > Параметры проекта > проигрыватель > универсальная платформа Windows параметры табуляции > XR.Go to Edit > Project Settings > Player > Universal Windows Platform tab > XR Settings.
  2. Разверните элемент пакет SDK для Windows Mixed Reality .Expand the Windows Mixed Reality SDK item.
  3. Установите или снимите флажок включить общий доступ к буферу глубины .Check or uncheck the Enable Depth Buffer Sharing check box. Включить совместное использование буфера глубины по умолчанию проверяется в новых проектах, так как эта функция была добавлена в Unity и будет снята по умолчанию для старых проектов, которые были обновлены.Enable Depth Buffer Sharing is checked by default in new projects, since this feature was added to Unity and will be unchecked by default for older projects that were upgraded.

Буфер глубины может улучшить качество визуального элемента до тех пор, пока Windows может точно сопоставлять нормализованные значения глубины в буфере глубины с расстояниями на расстоянии в метрах с помощью ближайших и дальнеих плоскостей, заданных в Unity на основной камере.A depth buffer can improve visual quality so long as Windows can accurately map the normalized per-pixel depth values in your depth buffer back to distances in meters, using the near and far planes you've set in Unity on the main camera. Если отрисовка передает значения глубины обычным способом, то, как правило, следует полагаться на этот случай, хотя прозрачная прорисовка передает данные в буфер глубины, а затем с помощью существующих цветовых пикселов может привести к путанице при перепроецировании.If your render passes handle depth values in typical ways, you should generally be fine here, though translucent render passes that write to the depth buffer while showing through to existing color pixels can confuse the reprojection. Если известно, что в ходе отрисовки будут выходить большое количество пикселов с неточной глубиной, скорее всего, вы получите лучшее визуальное качество, отменив флажок "включить совместное использование буфера глубины".If you know that your render passes will leave many of your final depth pixels with inaccurate depth values, you are likely to get better visual quality by unchecking "Enable Depth Buffer Sharing".

Автоматическая настройка сцены и камеры с помощью набора средств Mixed RealityAutomatic Scene and Camera Setup with Mixed Reality Toolkit

Следуйте пошаговому руководству, чтобы добавить набор средств Mixed Reality в проект Unity, и он автоматически настроит проект.Follow the step-by-step guide to add Mixed Reality Toolkit to your Unity project and it will configure your project automatically. Можно также вручную настроить проект, не МРТК с руководством в разделе ниже.You can also manually configure the project without MRTK with the guide in the section below.

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

Если вы пойдете из пути разработки Unity, мы собрались, что вы в состоянии изучить стандартные блоки МРТК Core.If you're following the Unity development journey we've laid out, you're in the midst of exploring the MRTK core building blocks. Отсюда вы можете перейти к следующему стандартному блоку:From here, you can continue to the next building block:

Или перейдите к возможностям и API платформы смешанной реальности:Or jump to Mixed Reality platform capabilities and APIs:

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

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