Développer avec Unity pour Android XR

Appareils XR concernés
Ces conseils vous aideront à créer des expériences pour ces types d'appareils XR.
Casques XR
Lunettes XR filaires

Ce guide présente le développement avec Unity pour Android XR. Android XR fonctionne avec les outils et fonctionnalités que vous connaissez déjà dans Unity. De plus, comme la compatibilité d'Android XR avec Unity est basée sur OpenXR, de nombreuses fonctionnalités décrites dans la présentation d'OpenXR sont également compatibles avec Unity.

Suivez ce guide pour découvrir :

  • Compatibilité d'Unity avec Android XR
    • Principes de base de Unity XR
    • Développer et publier des applications pour Android XR
    • Packages Unity pour Android XR
      • Unity OpenXR : package Android XR
      • Extensions Android XR pour Unity
      • Fonctionnalités et considérations de compatibilité
  • Saisie et interaction

Compatibilité d'Unity avec Android XR

Lorsque vous créez des applications Unity pour Android XR, vous pouvez profiter des outils et des fonctionnalités de réalité mixte des dernières versions d'Unity 6. Cela inclut des modèles de réalité mixte qui utilisent le kit d'outils d'interaction XR, AR Foundation et le plug-in OpenXR pour vous aider à démarrer rapidement. Lorsque vous créez des applications avec Unity pour Android XR, nous vous recommandons d'utiliser le pipeline de rendu universel (URP, Universal Render Pipeline) comme pipeline de rendu et Vulkan comme API graphique. Ces fonctionnalités vous permettent de profiter de certaines fonctionnalités graphiques d'Unity, qui ne sont compatibles qu'avec Vulkan. Pour en savoir plus sur la configuration de ces paramètres, consultez le guide de configuration du projet.

Principes de base d'Unity XR

Si vous débutez avec Unity ou le développement XR, vous pouvez consulter le manuel XR d'Unity pour comprendre les concepts et workflows XR de base. Le manuel XR contient des informations sur :

Développer et publier des applications pour Android

Unity fournit une documentation détaillée sur le développement, la compilation et la publication pour Android, qui couvre des sujets tels que les autorisations Android dans Unity, les paramètres de compilation Android, la compilation de votre application pour Android et la diffusion sur Google Play.

Packages Unity pour Android XR

Deux packages permettent de créer des applications Unity pour Android XR. Ces deux packages sont des plug-ins de fournisseur XR, qui peuvent être activés via le package XR Plug-in Management d'Unity. Le gestionnaire de plug-ins XR ajoute des paramètres de projet pour gérer et offrir de l'aide concernant le chargement, l'initialisation, les paramètres et la compatibilité de compilation des plug-ins XR. Pour permettre à votre application d'exécuter des fonctionnalités OpenXR au moment de l'exécution, le projet doit avoir activé ces fonctionnalités via le gestionnaire de plug-ins.

Cette image montre un exemple d'activation de ces groupes de fonctionnalités dans l'éditeur Unity.

Figure 1. Exemple d'écran de gestion des plug-ins Unity XR.

Unity OpenXR Android XR

Le package Unity OpenXR Android XR est un plug-in XR permettant d'ajouter la compatibilité avec Android XR à Unity. Ce plug-in XR fournit la majeure partie de la compatibilité Android XR pour Unity et permet la compatibilité des appareils Android XR avec les projets AR Foundation. AR Foundation est conçu pour les développeurs qui souhaitent créer des expériences de RA ou de réalité mixte. Il fournit l'interface pour les fonctionnalités de RA, mais n'implémente aucune fonctionnalité lui-même. Le package Android XR Unity OpenXR fournit l'implémentation. Pour commencer à utiliser ce package, consultez le manuel du package, qui contient un guide de démarrage.

Extensions Android XR pour Unity

Les extensions Android XR pour Unity complètent le package Unity OpenXR Android XR et incluent des fonctionnalités supplémentaires pour vous aider à créer des expériences immersives. Il peut être utilisé seul ou avec le package Unity OpenXR Android XR.

Pour commencer à utiliser ce package, suivez notre guide de configuration du projet ou notre guide de démarrage rapide pour importer les extensions Android XR pour Unity.

Fonctionnalités et considérations de compatibilité

Le tableau suivant décrit les fonctionnalités compatibles avec les packages Unity OpenXR : Android XR et Android XR Extensions pour Unity. Il peut être utilisé pour déterminer quel package contient les fonctionnalités dont vous avez besoin et pour prendre en compte les éventuels problèmes de compatibilité.

Fonctionnalité

Unity OpenXR : chaîne de fonctionnalité Android XR

Chaîne de fonctionnalité des extensions Android XR pour Unity

Cas d'utilisation et comportement attendu

Session de RA

Android XR : session de RA

  • Les paramètres de fonctionnalité incluent "Optimiser les rejets de tampon (Vulkan)"

Android XR (Extensions): Session Management

  • Les paramètres de fonctionnalité incluent le sous-échantillonnage (Vulkan) et URP SpaceWarp (Vulkan)

Pour utiliser les fonctionnalités de l'un ou l'autre de ces packages, vous devez activer la fonctionnalité de session de RA pour ce package. Vous pouvez activer les deux ensembles de fonctionnalités en même temps. Les fonctionnalités individuelles gèrent les conflits en conséquence.

Suivi des appareils

N/A

N/A

Le suivi de l'appareil permet de suivre la position et la rotation de l'appareil dans l'espace physique. Le GameObject XR Origin gère automatiquement le suivi des appareils et la transformation des éléments traçables dans le système de coordonnées d'Unity à l'aide de son composant XROrigin et de la hiérarchie GameObject avec une caméra et un TrackedPoseDriver.

Appareil photo

Android XR : caméra RA

N/A

Cette fonctionnalité est compatible avec l'estimation de la lumière et le passthrough plein écran.

Détection de plans

Android XR : plan de RA

N/A

Cette fonctionnalité permet de détecter et de suivre les surfaces planes dans l'environnement physique.

Suivi des objets

N/A

Android XR (extensions) : suivi des objets

Cette fonctionnalité permet de détecter et de suivre des objets dans l'environnement physique, en combinaison avec une bibliothèque d'objets de référence.

Suivi du visage

Android XR : AR Face

  • XR_ANDROID_eye_tracking uniquement
  • Pas de suivi du visage

Android XR : suivi du visage

  • XR_ANDROID_face_tracking

La prise en charge des yeux de l'avatar est assurée par la fonctionnalité Android XR : AR Face. Accédez aux expressions faciales d'un utilisateur grâce à la fonctionnalité Android XR : Suivi du visage. Ces deux fonctionnalités peuvent être utilisées ensemble.

Ray casts

Android XR : AR Raycast

  • Ancre de plan
  • Ancre de profondeur

N/A

Cette fonctionnalité vous permet de projeter un rayon et de calculer l'intersection entre ce rayon et les éléments de suivi de plan ou de profondeur détectés dans l'environnement physique.

Ancrages

Android XR : ancrage RA

N/A

L'ancrage RA est compatible avec les ancrages spatiaux, plans et persistants via AR Foundation.

Occlusion

Android XR : occlusion en RA

  • Profondeur de l'environnement

N/A

L'occlusion permet au contenu de réalité mixte de votre application d'apparaître masqué ou partiellement obscurci derrière des objets de l'environnement physique.

Métriques de performances

Métriques de performances Android XR

N/A

Utilisez cette fonctionnalité pour accéder aux métriques de performances des appareils Android XR.

Couches de composition

Compatibilité avec les couches de composition (le plug-in OpenXR et la couche de composition XR sont requis)

Android XR : couche de composition Passthrough

  • XR_ANDROID_composition_layer_passthrough_mesh

Utilisez la compatibilité avec les couches de composition d'Unity pour créer des couches de composition de base (par exemple, quad, cylindre, projection). Android XR : la couche de composition Passthrough peut être utilisée pour créer une couche Passthrough avec un maillage personnalisé, en lisant à partir du GameObject d'Unity.

Rendu fovéal

Rendu fovéal (plug-in OpenXR requis)

  • Compatible avec le rendu fovéal avec suivi oculaire : la zone de résolution supérieure est centrée sur l'endroit où l'utilisateur regarde, ce qui la rend moins visible pour l'utilisateur.

Fovéation (ancienne version)

Le rendu fovéal permet d'accélérer le rendu en réduisant la résolution des zones de la vision périphérique de l'utilisateur. La fonctionnalité de rendu fovéal d'Unity n'est compatible qu'avec les applications utilisant URP et Vulkan. La fonctionnalité Fovéation (ancienne) des extensions Android XR pour Unity est également compatible avec le pipeline de rendu intégré et OpenGL ES. Nous vous recommandons d'utiliser la fonctionnalité de rendu fovéal d'Unity lorsque cela est possible. Notez que l'URP et Vulkan sont tous deux recommandés pour le développement sur Android XR.

Espace de référence non limité

N/A

Android XR : espace de référence non limité

Cette fonctionnalité définit le mode d'origine du suivi XRInputSubsystem sur Unbounded. "Unbounded" indique que le XRInputSubsystem suit tous les InputDevices par rapport à une ancre mondiale, qui peut changer.

Mode de fusion de l'environnement

N/A

Mode de fusion de l'environnement

Cette fonctionnalité vous permet de définir le mode de fusion de l'environnement XR, qui contrôle la façon dont les images virtuelles se fondent dans l'environnement réel lorsque le passthrough est activé.

Géospatial (VPS)

N/A

Android XR : Geospatial

Permet à XRGeospatialManager d'accéder aux fonctionnalités du système de positionnement visuel (VPS), de vérifier la disponibilité de la localisation, de calculer les poses géospatiales et de configurer le suivi des plans pour les ancres de surface et géospatiales.

Authentification Google Cloud

N/A

Android XR : Google Cloud

Fournit des stratégies de configuration de l'authentification de session (clé API, sans clé et jeton d'authentification) pour les services cloud.

Visage multimodal

N/A

Android XR (extensions) : visage multimodal

Étend Unity ARFace avec des modalités de suivi du visage multimodales et configurables (XRFaceTrackerMode).

Affichage de l'état de la batterie

N/A

Affichage de l'état de la batterie

Permet d'interroger l'état de la batterie et le niveau de charge des manettes et des chemins d'entrée connectés à l'aide de XRBatteryStateDisplayFeature.

Réduction globale de la luminosité du passthrough

Android XR : caméra RA

N/A

Permet d'interroger et de définir les niveaux d'atténuation de la transparence du monde réel à l'aide de ARCameraFeature d'Unity.

Énumération des propriétés système

N/A

Android XR : propriétés système

Énumère les propriétés d'extension d'exécution et les fonctionnalités de l'appareil à l'aide de XR_ANDROID_enumerate_system_extension_properties.

Paramètres recommandés

N/A

Android XR : paramètres recommandés

Permet d'interroger les états de prélancement de l'environnement d'exécution (y compris le mode de fusion de l'environnement, l'opacité de la transmission et les modalités d'entrée actives) à l'aide de XRRecommendedSettingsFeature.TryGetRecommendedSettings.

Détection de cadres de délimitation

Android XR : cadre de délimitation de RA

Entités spatiales (extensions) : cadre de délimitation

Fournit la compatibilité avec la détection de cadres de délimitation pour les objets 3D dans l'environnement physique à l'aide du framework OpenXR Spatial Entities (SpatialBoundingBoxSubsystem).

Ancrages partageables

N/A

Entités spatiales (extensions) : ancres partageables

Étend les fonctionnalités d'ancrage à l'aide de ARShareableAnchorManager et XRShareableAnchorSubsystem, y compris l'association d'ancrages géospatiaux (TryAttachGeospatialAnchor) et d'ancrages de surface (TryAttachSurfaceAnchorAsync) lorsqu'ils sont utilisés avec Android XR : Geospatial.

Conteneur spatial

N/A

Conteneur spatial

Permet d'afficher le contenu de l'application dans un conteneur volumétrique 3D géré par le système en mode Full Space, avec des API et des événements de rappel sur XRSpatialContainerFeature pour interroger et demander l'état, les limites et la visibilité du conteneur.

Saisie et interaction

Android XR est compatible avec les entrées naturelles multimodales.

En plus du suivi des mains et du suivi oculaire, les périphériques tels que les manettes 6DoF, la souris et le clavier physique sont également compatibles. Cela signifie que les applications pour Android XR doivent prendre en charge l'interaction manuelle, et qu'il ne faut pas supposer que tous les appareils seront équipés de manettes.

Profils d'interaction

Unity utilise un profil d'interaction pour gérer la façon dont votre application XR communique avec différents appareils et plates-formes XR. Ces profils établissent les entrées et sorties attendues pour différentes configurations matérielles, ce qui favorise la compatibilité et la cohérence des fonctionnalités sur un éventail de plates-formes. En activant les profils d'interaction, vous pouvez vous assurer que votre application XR fonctionne correctement avec différents appareils, qu'elle conserve un mappage d'entrée cohérent et qu'elle a accès à des fonctionnalités XR spécifiques. Pour définir un profil d'interaction :

  1. Ouvrez la fenêtre Project Settings (Paramètres du projet) (menu : Edit > Project Settings (Modifier > Paramètres du projet)).
  2. Cliquez sur XR Plug-in Management (Gestion des plug-ins XR) pour développer la section des plug-ins (si nécessaire).
  3. Sélectionnez OpenXR dans la liste des plug-ins XR.
  4. Dans la section Interaction Profiles (Profils d'interaction), sélectionnez le bouton + pour ajouter un profil.
  5. Sélectionnez le profil à ajouter dans la liste.

Interaction avec les mains

L'interaction manuelle (XR_EXT_hand_interaction) est fournie par le plug-in OpenXR. Vous pouvez exposer la disposition de l'appareil <HandInteraction> dans le système d'entrée Unity en activant le profil d'interaction manuelle. Utilisez ce profil d'interaction pour la saisie manuelle compatible avec les quatre poses d'action définies par OpenXR : "pincer", "pointer", "viser" et "saisir". Si vous avez besoin de fonctionnalités supplémentaires d'interaction ou de suivi des mains, consultez XR Hands sur cette page.

Interaction par suivi oculaire

L'interaction par suivi oculaire (XR_EXT_eye_gaze_interaction) est fournie par le plug-in OpenXR. Vous pouvez utiliser cette mise en page pour récupérer les données de pose des yeux (position et rotation) renvoyées par l'extension. En savoir plus sur l'interaction par suivi oculaire dans le guide des entrées OpenXR

Interaction avec la manette

Android XR est compatible avec le profil de manette Oculus Touch pour les manettes 6DoF. Ces deux profils sont fournis par le plug-in OpenXR.

Interaction avec la souris

Le profil d'interaction avec la souris Android XR (XR_ANDROID_mouse_interaction) est fourni par les extensions Android XR pour Unity. Il expose une disposition d'appareil <AndroidXRMouse> dans le système d'entrée Unity.

Interaction avec la pose de la paume

Le plug-in OpenXR est compatible avec l'interaction de pose de la paume (XR_EXT_palm_pose), qui expose la mise en page <PalmPose> dans le système d'entrée Unity. La pose de la paume n'est pas destinée à remplacer les extensions ou les packages qui effectuent le suivi des mains pour des cas d'utilisation plus complexes. Elle peut plutôt être utilisée pour placer du contenu visuel spécifique à l'application, comme des visuels d'avatar. La pose de la paume se compose de la position et de l'orientation de la paume.

Mains XR

Le package XR Hands vous permet d'accéder aux données de suivi des mains à l'aide de XR_EXT_hand_tracking et XR_FB_hand_tracking_aim. Il fournit également un wrapper pour convertir les données des articulations de la main issues du suivi des mains en poses d'entrée. Pour utiliser les fonctionnalités fournies par le package XR Hands, activez les fonctionnalités Hand Tracking Subsystem et Meta Hand Tracking Aim OpenXR.

Exemple montrant comment activer le suivi des mains Le package XR Hands peut être utile si vous avez besoin de données plus précises sur la pose ou les articulations de la main, ou si vous devez utiliser des gestes personnalisés.

Pour en savoir plus, consultez la documentation d'Unity sur la configuration de XR Hands dans votre projet.

Régions de confiance du suivi du visage

L'extension XR_ANDROID_face_tracking fournit des valeurs de confiance pour trois régions du visage : en haut à gauche, en haut à droite et en bas. Ces valeurs, comprises entre 0 (aucune confiance) et 1 (confiance maximale), indiquent la précision du suivi du visage pour chaque région.

Vous pouvez utiliser ces valeurs de confiance pour désactiver progressivement les blendshapes ou appliquer des filtres visuels (comme le floutage) à la région du visage correspondante. Pour une expression de base, désactivez les blendshapes dans la région du visage correspondante.

La zone "bas du visage" représente tout ce qui se trouve sous les yeux, y compris la bouche, le menton, la joue et le nez. Les deux régions supérieures incluent les yeux et les sourcils sur les côtés gauche et droit du visage.

L'extrait de code C# suivant montre comment accéder aux données de confiance et les utiliser dans un script Unity :

using UnityEngine;
using Google.XR.Extensions;

public class FaceTrackingConfidence : MonoBehaviour
{
    void Update()
    {
      if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.HasValue)
      {
        DebugTextTopCenter.text = "XrInstance hasn't been initialized.";
        return;
      }
      else if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.Value)
      {
        DebugTextTopCenter.text = "XR_ANDROID_face_tracking is not enabled.";
        return;
      }

      for (int x = 0; x < _faceManager.Face.ConfidenceRegions.Length; x++)
      {
        switch (x)
        {
          case (int)XRFaceConfidenceRegion.Lower:
            regionText = "Bottom";
            break;
          case (int)XRFaceConfidenceRegion.LeftUpper:
            regionText = DebugTextConfidenceLeft;
            break;
          case (int)XRFaceConfidenceRegion.RightUpper:
            regionText = DebugTextConfidenceRight;
            break;
        }
    }
}

Pour en savoir plus, consultez la documentation sur les extensions Android XR pour Unity.

Choisir une méthode d'affichage des mains

Android XR propose deux façons d'afficher les mains : un maillage de main et un visualiseur préfabriqué.

Maillage de la main

Le package Unity Android XR contient une fonctionnalité de maillage de la main qui permet d'accéder à XR_ANDROID_hand_mesh extension. La fonctionnalité de maillage de la main fournit des maillages pour les mains de l'utilisateur. Le maillage de la main contient les sommets des triangles qui représentent la géométrie d'une main. Cette fonctionnalité est destinée à fournir un maillage personnalisé représentant la géométrie réelle des mains de l'utilisateur pour la visualisation.

Prefab XR Hands

Le package XR Hands contient un exemple appelé Hands visualizer, qui contient des mains gauche et droite entièrement articulées pour afficher une représentation adaptée au contexte des mains de l'utilisateur.

Gestes système

Android XR inclut un geste système permettant d'ouvrir un menu permettant aux utilisateurs de revenir en arrière, d'ouvrir le lanceur d'applications ou d'obtenir un aperçu des applications en cours d'exécution. L'utilisateur peut activer ce menu système en pinçant avec sa main dominante.

Lorsque l'utilisateur interagit avec le menu de navigation du système, l'application ne répond qu'aux événements de suivi de la tête. Le package XR Hands peut détecter lorsqu'un utilisateur effectue des actions spécifiques, comme interagir avec ce menu de navigation du système. La vérification de AimFlags, SystemGesture et DominantHand vous permet de savoir quand cette action système est effectuée. Pour en savoir plus sur AimFlags, consultez la documentation sur l'énumération MetaAimFlags d'Unity.

XR Interaction Toolkit

Le package XR Interaction Toolkit est un système d'interaction de haut niveau basé sur des composants permettant de créer des expériences de RV et de RA. Il fournit un framework qui rend les interactions 3D et d'interface utilisateur disponibles à partir des événements d'entrée Unity. Il prend en charge les tâches d'interaction, y compris le retour haptique, le retour visuel et la locomotion.


OpenXR™ et le logo OpenXR sont des marques appartenant à The Khronos Group Inc. et sont déposées en Chine, dans l'Union européenne, au Japon et au Royaume-Uni.