Características admitidas de OpenXR de realidad mixta en UnityMixed Reality OpenXR supported features in Unity

El paquete de Complementos OpenXR de realidad mixta es una extensión del complemento OpenXR de Unity y admite un conjunto de características para los auriculares HoloLens 2 y 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. Antes de continuar, asegúrese de que ha instalado unity 2020,2 o posterior, OpenXR plugin versión 0.1.2 o posterior y el proyecto de Unity está configurado para OpenXR.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.

Lo que se admiteWhat's supported

Actualmente se admiten las siguientes características:The following features are currently supported:

  • Admite aplicaciones de UWP para HoloLens 2 y optimizar para el modelo de aplicación de HoloLens 2.Supports UWP applications for HoloLens 2, and optimize for HoloLens 2 application model.
  • Admite aplicaciones Win32 VR para auriculares con Windows Mixed Reality con los perfiles de controlador más recientes y la comunicación remota de la aplicación holográfica.Supports Win32 VR applications for Windows Mixed Reality headset with latest controller profiles and holographic app remoting.
  • Seguimiento de escala mundial con delimitadores y espacio sin enlazar.World scale tracking using Anchors and Unbounded space.
  • Delimite la API de almacenamiento para conservar los delimitadores en el almacenamiento local de HoloLens 2.Anchor storage API to persist anchors to HoloLens 2 local storage.
  • Control de movimiento y interacciones de mano, incluido el nuevo controlador de HP reverberación G2.Motion controller and hand interactions, including the new HP Reverb G2 controller.
  • Seguimiento de mano articulado mediante 26 uniones y entradas de radio uniones.Articulated hand tracking using 26 joints and joint radius inputs.
  • Interacción de ojo mirada en HoloLens 2.Eye gaze interaction on HoloLens 2.
  • Buscar la cámara de foto/vídeo (PV) en HoloLens 2.Locating photo/video (PV) camera on HoloLens 2.
  • Captura de realidad mixta mediante la representación de la tercera vista a través de la cámara PV.Mixed Reality Capture using 3rd eye rendering through PV camera.
  • Admite "Play" en HoloLens 2 con la aplicación de comunicación remota holográfica, lo que permite a los desarrolladores depurar scripts sin compilar e implementar en el dispositivo.Supports "Play" to HoloLens 2 with the Holographic Remoting app, allowing developers to debug scripts without building and deploying to the device.
  • Compatible con MRTK Unity 2.5.3 y versiones más recientes a través de la compatibilidad con el proveedor de MRTK OpenXR.Compatible with MRTK Unity 2.5.3 and newer through MRTK OpenXR provider support.
  • Compatible con Unity ARFoundation 4,0 o posteriorCompatible with Unity ARFoundation 4.0 or later

Holographic Remoting en el modo de reproducción del editor de UnityHolographic Remoting in Unity Editor play mode

Compilar un proyecto de Unity de UWP en un proyecto de Visual Studio y, luego, empaquetarlo e implementarlo en un dispositivo HoloLens 2 puede tardar algún tiempo.Building a UWP Unity project in Visual Studio project and then packaging and deploying it to a HoloLens 2 device can take some time. Una solución es habilitar la comunicación remota del editor holográfica, que le permite depurar el script de C# mediante el modo "reproducir" directamente en un dispositivo HoloLens 2 a través de la red.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. En este escenario se evita la sobrecarga de crear e implementar un paquete de UWP en un dispositivo remoto.This scenario avoids the overhead of building and deploying a UWP package to remote device.

  1. En primer lugar, debe instalar la aplicación de reproductor de comunicación remota holográfica desde la tienda en HoloLens 2.First, you need to install the Holographic Remoting Player app from Store on your HoloLens 2

  2. Ejecute la aplicación holográfica Remoting Player en HoloLens 2 y verá el número de versión y la dirección IP a la que se conectará.Run the Holographic Remoting Player app on HoloLens 2 and you'll see the version number and IP address to connect to

    • Necesitará v 2.4 o posterior para trabajar con el complemento OpenXRYou'll need v2.4 or later to work with the OpenXR plugin

    Captura de pantalla del reproductor de acceso remoto holográfica que se ejecuta en HoloLens

  3. Abra configuración del proyecto de edición >, vaya a Administración de complementos de XR y active la casilla conjunto de características de Windows Mixed Reality :Open Edit -> Project Settings, navigate to XR plug-in Management, and check the Windows Mixed Reality feature set box:

    Captura de pantalla del panel de configuración del proyecto abrir en el editor de Unity con la administración de complementos de XR resaltada

  4. Expanda la sección características en OpenXR y seleccione Mostrar todasExpand the Features section under OpenXR and select Show All

  5. Active la casilla de comunicación remota del editor holográfica y escriba la dirección IP que obtiene de la aplicación de acceso remoto holográfica:Check the Holographic Editor Remoting checkbox and input the IP address you get from the Holographic Remoting app:

    Captura de pantalla del panel de configuración del proyecto abierta en el editor de Unity con características resaltadas

Ahora puede hacer clic en el botón "reproducir" para reproducir la aplicación de Unity en la aplicación de acceso remoto holográfica en HoloLens.Now you can click the “Play” button to play your Unity app into the Holographic Remoting app on your HoloLens. También puede adjuntar Visual Studio a Unity para depurar scripts de C# en el modo de reproducción.You can also attach Visual Studio to Unity to debug C# scripts in the play mode.

Nota

A partir de la versión 0.1.0, el tiempo de ejecución de la comunicación remota holográfica no admite delimitadores y las funcionalidades de ARAnchorManager no funcionarán a través de la comunicación remota.As of version 0.1.0, the Holographic Remoting runtime doesn’t support Anchors, and ARAnchorManager functionalities will not work through remoting. Esta característica está disponible en futuras versiones.This feature is coming in future releases.

Delimitadores y persistencia del delimitadorAnchors and Anchor Persistence

El complemento OpenXR de realidad mixta proporciona la funcionalidad básica de delimitador a través de una implementación de ARFoundation ARAnchorManager de Unity.The Mixed Reality OpenXR Plugin supplies basic anchor functionality through an implementation of Unity’s ARFoundation ARAnchorManager. Para obtener información sobre los conceptos básicos de ARAnchor s en ARFoundation, visite el manual de ARFoundation para el administrador de delimitadores de ar.To learn the basics on ARAnchor s in ARFoundation, visit the ARFoundation Manual for AR Anchor Manager. A partir de la versión 0.1.0, este complemento es compatible con toda la funcionalidad de ARAnchorManager, excepto la creación de delimitadores conectados a un plano, que se publica en una versión futura.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.

Persistencia del delimitador y XRAnchorStoreAnchor Persistence and the XRAnchorStore

Una API adicional denominada XRAnchorStore permite que los delimitadores se conserven entre sesiones.An additional API called the XRAnchorStore enables anchors to be persisted between sessions. XRAnchorStore es una representación de los delimitadores guardados en el dispositivo.The XRAnchorStore is a representation of the saved anchors on your device. Los delimitadores se pueden conservar de ARAnchors en la escena de Unity, cargarse desde el almacenamiento en nuevo ARAnchors o eliminarse del almacenamiento.Anchors can be persisted from ARAnchors in the Unity scene, loaded from storage into new ARAnchors, or deleted from storage.

Nota

Estos delimitadores se guardan y se cargan en el mismo dispositivo.These anchors are to be saved and loaded on the same device. El almacenamiento de delimitadores entre dispositivos se admitirá a través de los anclajes espaciales de Azure en una versión futura.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);
}

Para cargar XRAnchorStore, el complemento proporciona un método de extensión en XRAnchorSubsystem, el subsistema de ARAnchorManager: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)

Para usar este método de extensión, acceda a él desde el subsistema de ARAnchorManager como se indica a continuación:To use this extension method, access it from an ARAnchorManager's subsystem as follows:

ARAnchorManager arAnchorManager = GetComponent<ARAnchorManager>();
XRAnchorStore anchorStore = await arAnchorManager.subsystem.LoadAnchorStoreAsync();

Para ver un ejemplo completo de los delimitadores persistentes o no persistentes, consulte el script delimitadores-> delimitadores de ejemplo GameObject y AnchorsSample.cs en la escena de ejemplo de complemento Mixed Reality OpenXR: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:

Captura de pantalla del panel de jerarquías abierto en el editor de Unity con el ejemplo de anclajes resaltado

Captura de pantalla del panel de inspectores abierta en el editor de Unity con el script de ejemplo de delimitadores resaltado

Interacciones de controlador de movimiento y manoMotion controller and hand interactions

Para conocer los aspectos básicos sobre las interacciones de la realidad mixta en Unity, visite el manual de Unity para la entrada de Unity XR.To learn the basics about mixed reality interactions in Unity, visit the Unity Manual for Unity XR Input. Esta documentación de Unity cubre las asignaciones de entradas específicas del controlador a InputFeatureUsage s más generalizadas, cómo se pueden identificar y clasificar las entradas de XR disponibles, cómo leer datos de estas entradas, etc.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.

El complemento OpenXR de realidad mixta proporciona perfiles de interacción de entrada adicionales, asignados a InputFeatureUsage s estándar, como se detalla a continuación:The Mixed Reality OpenXR Plugin provides additional input interaction profiles, mapped to standard InputFeatureUsage s as detailed below:

InputFeatureUsageInputFeatureUsage Controlador de HP reverberación G2 (OpenXR)HP Reverb G2 Controller (OpenXR) Mano de HoloLens (OpenXR)HoloLens Hand (OpenXR)
primary2DAxisprimary2DAxis JoystickJoystick
primary2DAxisClickprimary2DAxisClick Joystick: haga clicJoystick - Click
desencadenadortrigger DesencadenadorTrigger
sujetagrip SujetaGrip Puntear o comprimir el aireAir tap or squeeze
primaryButtonprimaryButton [X/A]-presionar[X/A] - Press Pulsar en el aireAir tap
secondaryButtonsecondaryButton [Y/B]-Presione[Y/B] - Press
gripButtongripButton Agarre: presionarGrip - Press
triggerButtontriggerButton Desencadenador: PresioneTrigger - Press
menuButtonmenuButton MenúMenu

Objetivos y planteamientoAim and Grip Poses

Tiene acceso a dos conjuntos de planteamientos a través de las interacciones de entrada de OpenXR:You have access to two sets of poses through OpenXR input interactions:

  • El control tiene que presentar los objetos a manoThe grip poses for rendering objects in the hand
  • El objetivo plantea la señal del mundo.The aim poses for pointing into the world.

Puede encontrar más información sobre este diseño y las diferencias entre las dos supuestos en la especificación de OpenXR: subtrazados de entrada.More information on this design and the differences between the two poses can be found in the OpenXR Specification - Input Subpaths.

Las supuestos suministradas por InputFeatureUsages DevicePosition, DeviceRotation, DeviceVelocity y DeviceAngularVelocity representan la representación del control OpenXR.Poses supplied by the InputFeatureUsages DevicePosition, DeviceRotation, DeviceVelocity, and DeviceAngularVelocity all represent the OpenXR grip pose. Los InputFeatureUsages relacionados con los planteamientos de agarre se definen en CommonUsagesde Unity.InputFeatureUsages related to grip poses are defined in Unity’s CommonUsages.

Las supuestos suministradas por InputFeatureUsages PointerPosition, PointerRotation, PointerVelocity y PointerAngularVelocity representan la representación de objetivo OpenXR.Poses supplied by the InputFeatureUsages PointerPosition, PointerRotation, PointerVelocity, and PointerAngularVelocity all represent the OpenXR aim pose. Estos InputFeatureUsages no se definen en ningún archivo de C# incluido, por lo que deberá definir su propia InputFeatureUsages como se indica a continuación: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");

HápticosHaptics

Para obtener información sobre el uso de hápticos en el sistema de entrada XR de Unity, puede encontrar documentación en el manual de Unity para entrada-hápticos de Unity.For information on using haptics in Unity’s XR Input system, documentation can be found at the Unity Manual for Unity XR Input - Haptics.

Novedades próximamenteWhat's coming soon

Los siguientes problemas y las características que faltan se conocen con la versión 0.1.0 del complemento OpenXR de realidad mixta.The following issues and missing features are known with Mixed Reality OpenXR plugin version 0.1.0. Estamos trabajando en ellos y publicará correcciones y nuevas características en las próximas versiones.We're working on these and will release fixes and new features in upcoming releases.

  • ARPlaneSubsystem todavía no se admite.ARPlaneSubsystem is not supported yet. ARPlaneManager, ARRaycastManager y API relacionada como ARAnchorManager. AttachAnchor tampoco se admiten en HoloLens 2.ARPlaneManager, ARRaycastManager, and related API like ARAnchorManager.AttachAnchor are also not supported on HoloLens 2.
  • El delimitador no es compatible aún con la comunicación remota holográfica, pero está próximamente en un futuro.Anchor isn't supported by Holographic Remoting yet, but it's coming in the near future.
  • Todavía no se admite el seguimiento de mallas de mano , los códigos QR y los XRMeshSubsystem .Hand Mesh tracking, QR Codes, and XRMeshSubsystem aren't supported yet.
  • La compatibilidad con los anclajes espaciales de Azure está disponible en una versión futura.Azure Spatial Anchors support is coming in a future release.
  • ARM64 es la única plataforma admitida para las aplicaciones de HoloLens 2.ARM64 is the only supported platform for HoloLens 2 apps. La plataforma ARM está próximamente en una versión futura.The ARM platform is coming in a future release.

Solución de problemasTroubleshooting

Al suspender y reanudar una aplicación de Unity en HoloLens 2, la aplicación no se puede reanudar correctamente, lo que conduce a 4 puntos de giro en la vista de 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.

  • Establezca el modo de envío de profundidad en ninguno en la configuración del proyecto OpenXR como solución alternativa.Set Depth submission Mode to None in the OpenXR project settings as a workaround