Функции, поддерживаемые Опенкср Mixed Reality в UnityMixed Reality OpenXR supported features in Unity
Пакет подключаемого модуля опенкср для смешанной реальности является расширением подключаемого модуля опенкср Unity и поддерживает набор функций для головных телефонов HoloLens 2 и Windows Mixed Reality.The Mixed Reality OpenXR Plugin package is an extension of Unity's OpenXR Plugin and supports a suite of features for HoloLens 2 and Windows Mixed Reality headsets. Прежде чем продолжить, убедитесь, что установлено приложение unity 2020,2 или более поздней версии, Опенкср подключаемый модуль, версия 0.1.2 или более поздней, а проект Unity настроен для опенкср.Before continuing, make sure that you've installed Unity 2020.2 or later, OpenXR Plugin version 0.1.2 or later, and your Unity project is configured for OpenXR.
Поддерживаемые функцииWhat's supported
В настоящее время поддерживаются следующие функции:The following features are currently supported:
- Поддерживает приложения UWP для HoloLens 2 и оптимизированы для модели приложений HoloLens 2.Supports UWP applications for HoloLens 2, and optimize for HoloLens 2 application model.
- Поддерживает приложения Win32 версий для гарнитуры Windows Mixed Reality с последними профилями контроллеров и удаленным взаимодействием с holographic приложениями.Supports Win32 VR applications for Windows Mixed Reality headset with latest controller profiles and holographic app remoting.
- Отслеживание масштаба мира с использованием привязок и неограниченного пространства.World scale tracking using Anchors and Unbounded space.
- API-интерфейс хранилища привязки для сохранения привязок в локальном хранилище HoloLens 2.Anchor storage API to persist anchors to HoloLens 2 local storage.
- Взаимодействие контроллера движения и руки, включая новый контроллер HP REVERB G2.Motion controller and hand interactions, including the new HP Reverb G2 controller.
- Отслеживание с обобразованием с использованием 26 соединений и совместного входа RADIUS.Articulated hand tracking using 26 joints and joint radius inputs.
- Взаимодействие взгляда на HoloLens 2.Eye gaze interaction on HoloLens 2.
- Поиск камеры фото/Video (ПС) в HoloLens 2.Locating photo/video (PV) camera on HoloLens 2.
- Запись смешанной реальности с помощью визуализации с третьим глазом через камеру ПС.Mixed Reality Capture using 3rd eye rendering through PV camera.
- Поддерживает "Play" в HoloLens 2 с помощью приложения holographic, поддерживающего удаленное взаимодействие, что позволяет разработчикам выполнять отладку сценариев без создания и развертывания на устройстве.Supports "Play" to HoloLens 2 with the Holographic Remoting app, allowing developers to debug scripts without building and deploying to the device.
- Совместимо с МРТК Unity 2.5.3 и более поздней версии через поддержку поставщика Мртк опенкср.Compatible with MRTK Unity 2.5.3 and newer through MRTK OpenXR provider support.
- Совместимо с Unity арфаундатион 4,0 или более поздней версииCompatible with Unity ARFoundation 4.0 or later
Holographic удаленное взаимодействие в режиме воспроизведения редактора UnityHolographic Remoting in Unity Editor play mode
Создание проекта Unity для UWP в проекте Visual Studio, а затем упаковка и развертывание на устройстве HoloLens 2 может занять некоторое время.Building a UWP Unity project in Visual Studio project and then packaging and deploying it to a HoloLens 2 device can take some time. Одно из решений — включить удаленное взаимодействие с помощью редактора, которое позволяет выполнять отладку сценария C#, используя режим "Воспроизведение" непосредственно на устройстве HoloLens 2 по сети.One solution is to enable the Holographic Editor Remoting, which lets you debug your C# script using “Play” mode directly to a HoloLens 2 device over your network. Этот сценарий позволяет избежать издержек при создании и развертывании пакета UWP на удаленном устройстве.This scenario avoids the overhead of building and deploying a UWP package to remote device.
Сначала необходимо установить приложение с удаленным проигрывателем holographic из магазина в HoloLens 2.First, you need to install the Holographic Remoting Player app from Store on your HoloLens 2
Запустите приложение удаленного проигрывателя holographic в HoloLens 2, и вы увидите номер версии и IP-адрес для подключения.Run the Holographic Remoting Player app on HoloLens 2 and you'll see the version number and IP address to connect to
- Для работы с подключаемым модулем Опенкср потребуется v версии 2.4 или более поздней.You'll need v2.4 or later to work with the OpenXR plugin
Откройте Параметры проекта Edit->, перейдите в раздел Управление подключаемыми модулями XR и установите флажок набор функций Windows Mixed Reality :Open Edit -> Project Settings, navigate to XR plug-in Management, and check the Windows Mixed Reality feature set box:
Разверните раздел " компоненты " в разделе опенкср и выберите команду " отобразить все ".Expand the Features section under OpenXR and select Show All
Установите флажок удаленное взаимодействие с помощью редактора holographic и введите IP-адрес, полученный из приложения holographic Remoting:Check the Holographic Editor Remoting checkbox and input the IP address you get from the Holographic Remoting app:
Теперь можно нажать кнопку "Воспроизвести", чтобы воспроизвести приложение Unity в удаленном приложении holographic на HoloLens.Now you can click the “Play” button to play your Unity app into the Holographic Remoting app on your HoloLens. Вы также можете присоединить Visual Studio к Unity для отладки скриптов C# в режиме воспроизведения.You can also attach Visual Studio to Unity to debug C# scripts in the play mode.
Примечание
Начиная с версии 0.1.0, среда выполнения holographic Remoting не поддерживает привязки, а функции Аранчорманажер не будут работать через удаленное взаимодействие.As of version 0.1.0, the Holographic Remoting runtime doesn’t support Anchors, and ARAnchorManager functionalities will not work through remoting. Эта функция появилась в будущих выпусках.This feature is coming in future releases.
Привязки и сохранение привязкиAnchors and Anchor Persistence
Подключаемый модуль Mixed Reality Опенкср предоставляет базовые функции привязки с помощью реализации Арфаундатион Аранчорманажер Unity.The Mixed Reality OpenXR Plugin supplies basic anchor functionality through an implementation of Unity’s ARFoundation ARAnchorManager. Основные сведения о аранчор s в арфаундатион см. в руководстве по Арфаундатион для AR Anchor Manager.To learn the basics on ARAnchor s in ARFoundation, visit the ARFoundation Manual for AR Anchor Manager. Начиная с версии 0.1.0 этот подключаемый модуль поддерживает все функциональные возможности Аранчорманажер, за исключением создания привязок, присоединенных к плоскости, которая ожидается в будущем выпуске.As of version 0.1.0, this plugin supports all ARAnchorManager functionality except creating anchors attached to a plane, which is coming in a future release.
Сохранение привязки и КсранчорстореAnchor Persistence and the XRAnchorStore
Дополнительный API, называемый ксранчорсторе , позволяет сохранять привязки между сеансами.An additional API called the XRAnchorStore enables anchors to be persisted between sessions. Ксранчорсторе — это представление сохраненных привязок на устройстве.The XRAnchorStore is a representation of the saved anchors on your device. Привязки можно сохранять из аранчорс в сцене Unity, загружать из хранилища в новый аранчорс или удалять из хранилища.Anchors can be persisted from ARAnchors in the Unity scene, loaded from storage into new ARAnchors, or deleted from storage.
Примечание
Эти привязки должны быть сохранены и загружены на одном устройстве.These anchors are to be saved and loaded on the same device. Хранилище с привязкой между устройствами будет поддерживаться с помощью пространственных привязок Azure в следующем выпуске.Cross-device anchor storage will be supported through Azure Spatial Anchors in a future release.
public class Microsoft.MixedReality.ARSubsystems.XRAnchorStore
{
// A list of all persisted anchors, which can be loaded.
public IReadOnlyList<string> PersistedAnchorNames { get; }
// Clear all persisted anchors
public void Clear();
// Load a single persisted anchor by name. The ARAnchorManager will create this new anchor and report it in
// the ARAnchorManager.anchorsChanged event. The TrackableId returned here is the same TrackableId the
// ARAnchor will have when it is instantiated.
public TrackableId LoadAnchor(string name);
// Attempts to persist an existing ARAnchor with the given TrackableId to the local store. Returns true if
// the storage is successful, false otherwise.
public bool TryPersistAnchor(string name, TrackableId trackableId);
// Removes a single persisted anchor from the anchor store. This will not affect any ARAnchors in the Unity
// scene, only the anchors in storage.
public void UnpersistAnchor(string name);
}
Чтобы загрузить Ксранчорсторе, подключаемый модуль предоставляет метод расширения для Ксранчорсубсистем, подсистему Аранчорманажер:To load the XRAnchorStore, the plugin provides an extension method on the XRAnchorSubsystem, the subsystem of an ARAnchorManager:
public static Task<XRAnchorStore> LoadAnchorStoreAsync(this XRAnchorSubsystem anchorSubsystem)
Чтобы использовать этот метод расширения, необходимо получить доступ к нему из подсистемы Аранчорманажер следующим образом:To use this extension method, access it from an ARAnchorManager's subsystem as follows:
ARAnchorManager arAnchorManager = GetComponent<ARAnchorManager>();
XRAnchorStore anchorStore = await arAnchorManager.subsystem.LoadAnchorStoreAsync();
Полный пример сохранения и несохраненных привязок см. в разделе привязки-> примеры привязок в образце сцены подключаемого модуля Mixed Reality опенкср:To see a full example of persisting / unpersisting anchors, check out the Anchors -> Anchors Sample GameObject and AnchorsSample.cs script in the Mixed Reality OpenXR Plugin Sample Scene:
Взаимодействие контроллера движения и рукиMotion controller and hand interactions
Основные сведения о взаимодействии смешанной реальности в Unity см. в руководстве по Unity для XR данных Unity.To learn the basics about mixed reality interactions in Unity, visit the Unity Manual for Unity XR Input. Эта документация по Unity охватывает сопоставления от входных данных, относящихся к конкретному контроллеру, с более обобщенными инпутфеатуреусажеами, как можно идентифицировать и классифицировать доступные входные данные XR, как считывать их из этих входных данных и многое другое.This Unity documentation covers the mappings from controller-specific inputs to more generalizable InputFeatureUsage s, how available XR inputs can be identified and categorized, how to read data from these inputs, and more.
Подключаемый модуль Mixed Reality Опенкср предоставляет дополнительные профили взаимодействия ввода, сопоставленные со стандартным инпутфеатуреусаже, как описано ниже.The Mixed Reality OpenXR Plugin provides additional input interaction profiles, mapped to standard InputFeatureUsage s as detailed below:
инпутфеатуреусажеInputFeatureUsage | HP reverbы G2 Controller (Опенкср)HP Reverb G2 Controller (OpenXR) | HoloLens (Опенкср)HoloLens Hand (OpenXR) |
---|---|---|
primary2DAxisprimary2DAxis | ДжойстикJoystick | |
primary2DAxisClickprimary2DAxisClick | Джойстик — щелчокJoystick - Click | |
триггерtrigger | ТриггерTrigger | |
регулировкиgrip | РегулировкиGrip | Воздушный нажим или сжатиеAir tap or squeeze |
примарибуттонprimaryButton | [X/A] — нажмите клавишу[X/A] - Press | Жест касанияAir tap |
секондарибуттонsecondaryButton | [Y/B] — нажмите клавишу[Y/B] - Press | |
грипбуттонgripButton | Захват и нажатие клавишиGrip - Press | |
тригжербуттонtriggerButton | Триггер-нажатиеTrigger - Press | |
менубуттонmenuButton | МенюMenu |
AIM и захватAim and Grip Poses
У вас есть доступ к двум наборам экземпляров через входные взаимодействия Опенкср:You have access to two sets of poses through OpenXR input interactions:
- Захват для отрисовки объектов в рукиThe grip poses for rendering objects in the hand
- Цель, указывающая на мир.The aim poses for pointing into the world.
Дополнительные сведения об этой структуре и различиях между ними можно найти в подкаталогах Опенкср Specification-input.More information on this design and the differences between the two poses can be found in the OpenXR Specification - Input Subpaths.
Представления, предоставляемые Инпутфеатуреусажес девицепоситион, девицеротатион, девицевелоЦити и девицеангуларвелоЦити , представляют собой OpenXR захват .Poses supplied by the InputFeatureUsages DevicePosition, DeviceRotation, DeviceVelocity, and DeviceAngularVelocity all represent the OpenXR grip pose. Инпутфеатуреусажес, связанные с захватом, определяются в КоммонусажесUnity.InputFeatureUsages related to grip poses are defined in Unity’s CommonUsages.
Представления, предоставляемые Инпутфеатуреусажес поинтерпоситион, поинтерротатион, поинтервелоЦити и поинтерангуларвелоЦити , представляют собой OpenXR Цель .Poses supplied by the InputFeatureUsages PointerPosition, PointerRotation, PointerVelocity, and PointerAngularVelocity all represent the OpenXR aim pose. Эти Инпутфеатуреусажес не определены во вложенных файлах C#, поэтому необходимо определить собственный Инпутфеатуреусажес следующим образом:These InputFeatureUsages aren't defined in any included C# files, so you'll need to define your own InputFeatureUsages as follows:
public static readonly InputFeatureUsage<Vector3> PointerPosition = new InputFeatureUsage<Vector3>("PointerPosition");
хаптиксHaptics
Сведения об использовании хаптикс в системе ввода XR в Unity можно найти в руководстве по Unity для Unity XR input-хаптикс.For information on using haptics in Unity’s XR Input system, documentation can be found at the Unity Manual for Unity XR Input - Haptics.
Что ожидается в ближайшее времяWhat's coming soon
Следующие проблемы и отсутствующие функции известны с помощью Опенкср подключаемого модуля Mixed Reality версии 0.1.0.The following issues and missing features are known with Mixed Reality OpenXR plugin version 0.1.0. Мы работаем над этим и выпустили исправления и новые функции в будущих выпусках.We're working on these and will release fixes and new features in upcoming releases.
- Арпланесубсистем еще не поддерживается.ARPlaneSubsystem is not supported yet. Арпланеманажер, АРРАЙКАСТМАНАЖЕР и связанный API, такие как аранчорманажер. аттачанчор , также не поддерживаются в HoloLens 2.ARPlaneManager, ARRaycastManager, and related API like ARAnchorManager.AttachAnchor are also not supported on HoloLens 2.
- Привязка еще не поддерживается с помощью удаленного взаимодействия holographic, но в ближайшем будущем.Anchor isn't supported by Holographic Remoting yet, but it's coming in the near future.
- Отслеживание сетки вручную , QR-коды и ксрмешсубсистем пока не поддерживаются.Hand Mesh tracking, QR Codes, and XRMeshSubsystem aren't supported yet.
- Поддержка пространственных привязок Azure появилась в следующем выпуске.Azure Spatial Anchors support is coming in a future release.
- ARM64 — единственная поддерживаемая платформа для приложений HoloLens 2.ARM64 is the only supported platform for HoloLens 2 apps. Платформа ARM поступает в будущем выпуске.The ARM platform is coming in a future release.
Устранение неполадокTroubleshooting
При приостановке и возобновлении работы приложения Unity в HoloLens 2 приложение не может корректно возобновить работу, что приводит к 4 вращающимся точкам в представлении HoloLens.When you suspend and resume a Unity app on HoloLens 2, the app can't correctly resume, which leads to 4 spinning dots in the HoloLens view.
- Установка для режима отправки глубины значения " нет " в параметрах проекта опенкср в качестве обходного путиSet Depth submission Mode to None in the OpenXR project settings as a workaround