OpenXR en réalité mixte fonctionnalités prises en charge dans UnityMixed Reality OpenXR supported features in Unity

Le package de plug-in OpenXR de réalité mixte est une extension du plug-in OpenXR d’Unity et prend en charge une suite de fonctionnalités pour les casques HoloLens 2 et 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. Avant de continuer, vérifiez que vous avez installé unity 2020,2 ou une version ultérieure, le plug-in OpenXR version 0.1.2 ou ultérieure et votre projet Unity est configuré pour 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.

Opérations prises en chargeWhat's supported

Les fonctionnalités suivantes sont actuellement prises en charge :The following features are currently supported:

Communication à distance holographique en mode de lecture de l’éditeur UnityHolographic Remoting in Unity Editor play mode

La création d’un projet Unity UWP dans Visual Studio Project et son empaquetage et son déploiement sur un appareil HoloLens 2 peuvent prendre un certain temps.Building a UWP Unity project in Visual Studio project and then packaging and deploying it to a HoloLens 2 device can take some time. Une solution consiste à activer la communication à distance de l’éditeur holographique, qui vous permet de déboguer votre script C# en mode « lecture » directement sur un appareil HoloLens 2 sur votre réseau.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. Ce scénario évite la surcharge liée à la création et au déploiement d’un package UWP sur un appareil distant.This scenario avoids the overhead of building and deploying a UWP package to remote device.

  1. Tout d’abord, vous devez installer l’application de lecteur de communication à distance holographique à partir du Store sur votre HoloLens 2First, you need to install the Holographic Remoting Player app from Store on your HoloLens 2

  2. Exécutez l’application de lecteur de communication à distance holographique sur HoloLens 2 et vous verrez le numéro de version et l’adresse IP à laquelle se connecter.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 ou version ultérieure est nécessaire pour fonctionner avec le plug-in OpenXRYou'll need v2.4 or later to work with the OpenXR plugin

    Capture d’écran du lecteur de communication à distance holographique s’exécutant dans HoloLens

  3. Ouvrez les paramètres du projet de modification >, accédez à gestion du plug-in XR, puis cochez la case Windows Mixed Reality Feature Set :Open Edit -> Project Settings, navigate to XR plug-in Management, and check the Windows Mixed Reality feature set box:

    Capture d’écran du panneau Paramètres du projet ouvert dans l’éditeur Unity avec la gestion du plug-in XR mise en surbrillance

  4. Développez la section fonctionnalités sous OpenXR et sélectionnez Afficher tout .Expand the Features section under OpenXR and select Show All

  5. Cochez la case accès distant de l’éditeur holographique et entrez l’adresse IP obtenue à partir de l’application de communication à distance holographique :Check the Holographic Editor Remoting checkbox and input the IP address you get from the Holographic Remoting app:

    Capture d’écran du panneau Paramètres du projet ouvert dans l’éditeur Unity avec les fonctionnalités mises en surbrillance

Vous pouvez maintenant cliquer sur le bouton « lecture » pour lire votre application Unity dans l’application de communication à distance holographique sur votre HoloLens.Now you can click the “Play” button to play your Unity app into the Holographic Remoting app on your HoloLens. Vous pouvez également attacher Visual Studio à Unity pour déboguer des scripts C# en mode lecture.You can also attach Visual Studio to Unity to debug C# scripts in the play mode.

Notes

À partir de la version 0.1.0, le runtime de communication à distance holographique ne prend pas en charge les ancres, et les fonctionnalités ARAnchorManager ne fonctionnent pas via la communication à distance.As of version 0.1.0, the Holographic Remoting runtime doesn’t support Anchors, and ARAnchorManager functionalities will not work through remoting. Cette fonctionnalité est disponible dans les versions ultérieures.This feature is coming in future releases.

Ancres et persistance d’ancrageAnchors and Anchor Persistence

Le plug-in OpenXR de réalité mixte fournit des fonctionnalités d’ancre de base via une implémentation du ARAnchorManager ARFoundation d’Unity.The Mixed Reality OpenXR Plugin supplies basic anchor functionality through an implementation of Unity’s ARFoundation ARAnchorManager. Pour en savoir plus sur les principes de base de ARAnchor dans ARFoundation, consultez le Manuel ARFoundation du gestionnaire d’ancrage AR.To learn the basics on ARAnchor s in ARFoundation, visit the ARFoundation Manual for AR Anchor Manager. À partir de la version 0.1.0, ce plug-in prend en charge toutes les fonctionnalités ARAnchorManager, à l’exception de la création d’ancres attachées à un plan, qui est disponible dans une version ultérieure.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.

Persistance d’ancrage et XRAnchorStoreAnchor Persistence and the XRAnchorStore

Une API supplémentaire appelée XRAnchorStore permet aux ancres d’être rendues persistantes entre les sessions.An additional API called the XRAnchorStore enables anchors to be persisted between sessions. Le XRAnchorStore est une représentation des ancres enregistrées sur votre appareil.The XRAnchorStore is a representation of the saved anchors on your device. Les ancres peuvent être rendues persistantes à partir de ARAnchors dans la scène Unity, chargées à partir du stockage dans un nouveau ARAnchors, ou supprimées du stockage.Anchors can be persisted from ARAnchors in the Unity scene, loaded from storage into new ARAnchors, or deleted from storage.

Notes

Ces ancres doivent être enregistrées et chargées sur le même appareil.These anchors are to be saved and loaded on the same device. Le stockage d’ancrage entre appareils sera pris en charge via les ancres spatiales Azure dans une version ultérieure.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);
}

Pour charger XRAnchorStore, le plug-in fournit une méthode d’extension sur XRAnchorSubsystem, le sous-système d’un 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)

Pour utiliser cette méthode d’extension, accédez à celle-ci à partir du sous-système d’un ARAnchorManager, comme suit :To use this extension method, access it from an ARAnchorManager's subsystem as follows:

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

Pour voir un exemple complet d’ancres persistantes/non persistantes, consultez l’exemple d’ancres-> ancrages GameObject et AnchorsSample.cs script dans l' exemple de scène de plug-in de réalité mixte 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:

Capture d’écran de l’ouverture du panneau de la hiérarchie dans l’éditeur Unity avec l’exemple ancres mis en surbrillance

Capture d’écran du panneau Inspecteur ouvert dans l’éditeur Unity avec l’exemple de script Anchors mis en surbrillance

Interactions entre le contrôleur de mouvement et la mainMotion controller and hand interactions

Pour connaître les principes de base des interactions de réalité mixte dans Unity, visitez le Manuel Unity pour l’entrée Unity XR.To learn the basics about mixed reality interactions in Unity, visit the Unity Manual for Unity XR Input. Cette documentation Unity couvre les mappages entre les entrées spécifiques au contrôleur et les InputFeatureUsages plus généralisables, la manière dont les entrées XR disponibles peuvent être identifiées et catégorisées, comment lire les données à partir de ces entrées, et bien plus encore.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.

Le plug-in OpenXR de réalité mixte fournit des profils d’interaction d’entrée supplémentaires, mappés à des InputFeatureUsage standard, comme indiqué ci-dessous :The Mixed Reality OpenXR Plugin provides additional input interaction profiles, mapped to standard InputFeatureUsage s as detailed below:

InputFeatureUsageInputFeatureUsage Contrôleur de réverbération HP G2 (OpenXR)HP Reverb G2 Controller (OpenXR) Manuel HoloLens (OpenXR)HoloLens Hand (OpenXR)
primary2DAxisprimary2DAxis CroixJoystick
primary2DAxisClickprimary2DAxisClick Manette de jeu-clicJoystick - Click
déclencheurtrigger DéclencheurTrigger
délicatgrip DélicatGrip Appuyez ou appuyez sur l’airAir tap or squeeze
primaryButtonprimaryButton [X/A]-Appuyez sur[X/A] - Press Clic aérienAir tap
secondaryButtonsecondaryButton [Y/B]-Appuyez sur[Y/B] - Press
gripButtongripButton Appuyez sur la poignéeGrip - Press
triggerButtontriggerButton Déclencher-appuyer surTrigger - Press
menuButtonmenuButton MenuMenu

Poses de la AIM et de la poignéeAim and Grip Poses

Vous avez accès à deux ensembles de poses via des interactions d’entrée OpenXR :You have access to two sets of poses through OpenXR input interactions:

  • La poignée pose le rendu des objets de la mainThe grip poses for rendering objects in the hand
  • L’objectif est de pointer dans le monde.The aim poses for pointing into the world.

Pour plus d’informations sur cette conception et les différences entre les deux poses, consultez la spécification OpenXR-sous-chemins d’entrée.More information on this design and the differences between the two poses can be found in the OpenXR Specification - Input Subpaths.

Les poses fournies par les InputFeatureUsages DevicePosition, DeviceRotation, DeviceVelocity et DeviceAngularVelocity représentent toutes la pose de la poignée OpenXR.Poses supplied by the InputFeatureUsages DevicePosition, DeviceRotation, DeviceVelocity, and DeviceAngularVelocity all represent the OpenXR grip pose. Les InputFeatureUsages relatives aux poses de poignée sont définis dans les CommonUsagesd’Unity.InputFeatureUsages related to grip poses are defined in Unity’s CommonUsages.

Les poses fournies par les InputFeatureUsages PointerPosition, PointerRotation, PointerVelocity et PointerAngularVelocity représentent toutes la pose du OpenXR.Poses supplied by the InputFeatureUsages PointerPosition, PointerRotation, PointerVelocity, and PointerAngularVelocity all represent the OpenXR aim pose. Ces InputFeatureUsages ne sont pas définis dans les fichiers C# inclus. vous devez donc définir votre propre InputFeatureUsages comme suit :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");

HaptiqueHaptics

Pour plus d’informations sur l’utilisation des haptique dans le système d’entrée XR Unity, consultez le Manuel Unity pour Unity XR Input-haptiques.For information on using haptics in Unity’s XR Input system, documentation can be found at the Unity Manual for Unity XR Input - Haptics.

Bientôt disponibleWhat's coming soon

Les problèmes suivants et les fonctionnalités manquantes sont connus avec le plug-in OpenXR de réalité mixte version 0.1.0.The following issues and missing features are known with Mixed Reality OpenXR plugin version 0.1.0. Nous travaillons sur ces versions et publierons des correctifs et de nouvelles fonctionnalités dans les versions à venir.We're working on these and will release fixes and new features in upcoming releases.

  • ARPlaneSubsystem n’est pas encore pris en charge.ARPlaneSubsystem is not supported yet. ARPlaneManager, ARRAYCASTMANAGER et l’API associée comme ARAnchorManager. AttachAnchor ne sont pas non plus prises en charge sur HoloLens 2.ARPlaneManager, ARRaycastManager, and related API like ARAnchorManager.AttachAnchor are also not supported on HoloLens 2.
  • Le point d’ancrage n’est pas encore pris en charge par la communication à distance holographique, mais dans un avenir proche.Anchor isn't supported by Holographic Remoting yet, but it's coming in the near future.
  • Le suivi du maillage de la main , les codes QR et les XRMeshSubsystem ne sont pas encore pris en charge.Hand Mesh tracking, QR Codes, and XRMeshSubsystem aren't supported yet.
  • La prise en charge des ancres spatiales Azure est disponible dans une version ultérieure.Azure Spatial Anchors support is coming in a future release.
  • ARM64 est la seule plateforme prise en charge pour les applications HoloLens 2.ARM64 is the only supported platform for HoloLens 2 apps. La plateforme ARM est disponible dans une version ultérieure.The ARM platform is coming in a future release.

DépannageTroubleshooting

Lorsque vous suspendez et reprenez une application Unity sur HoloLens 2, l’application ne peut pas reprendre correctement, ce qui a pour conséquence 4 points de rotation dans la vue 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.

  • Définir le mode d’envoi de profondeur sur aucun dans les paramètres du projet OpenXR comme solution de contournementSet Depth submission Mode to None in the OpenXR project settings as a workaround