Développer avec Unity pour Android XR

Ce guide présente le développement avec Unity pour Android XR. Android XR fonctionne avec les outils et fonctionnalités familiers que vous attendez d'Unity. Étant donné que la compatibilité d'Unity avec Android XR est basée sur OpenXR, de nombreuses fonctionnalités décrites dans la présentation d'OpenXR sont également compatibles avec Unity.

Consultez ce guide pour en savoir plus sur les points suivants:

  • Compatibilité d'Unity avec Android XR
    • Principes de base d'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 d'Unity 6. Cela inclut des modèles de réalité mixte qui utilisent le XR Interaction Toolkit, la AR Foundation et le plug-in OpenXR pour vous aider à vous lancer rapidement. Lorsque vous créez des applications avec Unity pour Android XR, nous vous recommandons d'utiliser le pipeline de rendu universel (URP) comme pipeline de rendu et Vulkan comme API graphique. Ces fonctionnalités vous permettent de profiter de certaines des nouvelles fonctionnalités graphiques d'Unity, qui ne sont compatibles qu'avec Vulkan. Consultez le guide de configuration du projet pour en savoir plus sur la configuration de ces paramètres.

Principes de base d'Unity XR

Si vous débutez avec le développement Unity ou XR, vous pouvez consulter le manuel XR d'Unity pour comprendre les concepts et les 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, couvrant des sujets tels que les autorisations Android dans Unity, les paramètres de compilation Android, la compilation de votre application pour Android et la publication 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 de gestion des plug-ins XR d'Unity. Le gestionnaire de plug-ins XR ajoute des paramètres de projet pour gérer et aider à charger, initialiser, configurer et compiler les plug-ins XR. Pour permettre à votre application d'exécuter des fonctionnalités OpenXR au moment de l'exécution, ces fonctionnalités doivent être activées dans le gestionnaire de plug-ins.

Cette image montre un exemple d'emplacement où vous pouvez activer ces groupes de fonctionnalités via l'éditeur d'Unity.

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

Unity OpenXR Android XR

Le package Android XR Unity OpenXR est un plug-in XR permettant d'ajouter la prise en charge d'Android XR à Unity. Ce plug-in XR fournit la majeure partie de la compatibilité Android XR avec 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 OpenXR d'Unity 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 Android XR Unity OpenXR 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 des extensions Android XR pour Unity.

Fonctionnalités et considérations de compatibilité

Le tableau suivant décrit les fonctionnalités compatibles avec le package Unity OpenXR : Android XR et le package Android XR Extensions for Unity. Il peut être utilisé pour déterminer quel package contient les fonctionnalités dont vous avez besoin et toute considération de compatibilité.

Fonctionnalité

Unity OpenXR: chaîne de fonctionnalités Android XR

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

Cas d'utilisation et comportement attendu

Session RA

Android XR: session AR

  • Les paramètres de fonctionnalité incluent "Optimiser l'abandon des tampons" (Vulkan)

Android XR (extensions): gestion des sessions

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

Pour utiliser les fonctionnalités de l'un de ces packages, vous devez activer la fonctionnalité de session AR pour ce package. Vous pouvez activer les deux ensembles d'éléments géographiques en même temps. Les éléments géographiques individuels géreront les conflits en conséquence.

Suivi des appareils

n/a

n/a

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

Appareil photo

Android XR: caméra AR

n/a

Cette fonctionnalité est compatible avec l'estimation de la luminosité et le passthrough en plein écran.

Détection d'avion

Android XR: plan de réalité augmentée

Android XR (Extensions): plan

Ces deux fonctionnalités sont identiques. Utilisez l'une ou l'autre. Android XR (Extensions): Plane est inclus pour que les développeurs puissent utiliser les fonctionnalités Android XR (Extensions): Object Tracking et les ancres persistantes sans avoir à dépendre du package Android XR Unity OpenXR. À l'avenir, Android XR (Extensions): Plan sera supprimé au profit d'Android XR: Ancre AR.

Suivi des objets

n/a

Android XR (Extensions): suivi des objets

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

Suivi du visage

Android XR: visage en RA

  • XR_ANDROID_avatar_eyes only
  • Aucun suivi du visage

Android XR: Suivi du visage

  • XR_ANDROID_face_tracking

La prise en charge des yeux d'avatar est assurée par la fonctionnalité Android XR: visage AR. Accédez aux expressions faciales d'un utilisateur via la fonctionnalité Android XR: Suivi facial. Si vous le souhaitez, vous pouvez utiliser ces deux fonctionnalités ensemble.

Projections de rayons

Android XR: Raycast RA

  • Ancrage d'avion
  • Ancre de profondeur

n/a

Cette fonctionnalité vous permet de lancer 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 AR

Android XR (Extensions): ancrage

  • Les paramètres de la fonctionnalité incluent la persistance.

Les deux fonctionnalités sont compatibles avec les ancrages spatiaux et les ancrages d'avion. Utilisez l'une ou l'autre. Pour les ancres persistantes, utilisez Android XR (Extensions): Anchor. À l'avenir, Android XR (Extensions): Anchor sera supprimé et toutes les fonctionnalités d'ancrage seront disponibles dans Android XR: Anchor AR.

Occlusion

Android XR: occlusion de RA

  • Profondeur de l'environnement

n/a

L'occlusion permet de masquer ou d'obscurcir partiellement le contenu de réalité mixte de votre application 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.

Calques de composition

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

Android XR: couche de composition en passthrough

  • XR_ANDROID_composition_layer_passthrough_mesh

Utilisez la prise en charge des calques de composition d'Unity pour créer des calques de composition de base (par exemple, un quadrilatère, un cylindre ou une projection). Android XR: la couche de composition de passthrough peut être utilisée pour créer une couche de passthrough avec un maillage personnalisé, en lisant à partir du GameObject d'Unity.

Rendu foveolaire

Rendu foveolaire (plug-in OpenXR requis)

  • Compatible avec le rendu foveated tracking: la zone de résolution plus élevée est centrée sur l'endroit où l'utilisateur regarde actuellement, ce qui la rend moins visible pour l'utilisateur

Foveation (ancienne)

Le rendu foveal permet d'accélérer le rendu en réduisant la résolution des zones situées dans la vision périphérique de l'utilisateur. La fonctionnalité de rendu foveated d'Unity n'est compatible qu'avec les applications utilisant URP et Vulkan. La fonctionnalité Foveation (ancienne) des extensions Android XR pour Unity est également compatible avec BiRP et GLES. Nous vous recommandons d'utiliser la fonctionnalité de rendu foveated d'Unity dans la mesure du possible. Notez que URP et Vulkan sont tous deux recommandés lors de la compilation pour Android XR.

Espace de référence illimité

n/a

Android XR: espace de référence illimité

Cette fonctionnalité définit le mode d'origine de suivi XRInputSubsystem sur Unbounded (Sans limite). "Sans limite" indique que le XRInputSubsystem suit tous les InputDevices par rapport à un ancrage mondial, qui peut changer.

Mode Mélange d'environnement

n/a

Mode de fusion de l'environnement

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

Saisie et interaction

Android XR est compatible avec l'entrée naturelle multimodale.

En plus du suivi des mains et des yeux, les périphériques tels que les contrôleurs 6DoF, la souris et le clavier physique sont également compatibles. Cela signifie que les applications pour Android XR doivent prendre en charge les interactions avec les mains, et on ne peut pas supposer que tous les appareils seront fournis avec des contrôleurs.

Profils d'interaction

Unity utilise le profil d'interaction pour gérer la manière dont votre application XR communique avec différents appareils et plates-formes XR. Ces profils établissent les entrées et les sorties attendues pour différentes configurations matérielles, garantissant la compatibilité et la fonctionnalité cohérente sur un large é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 maintient une mise en correspondance des entrées cohérente 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 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 Profils d'interaction, sélectionnez le bouton + pour ajouter un profil.
  5. Sélectionnez le profil à ajouter dans la liste.

Interaction avec la main

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

Interaction par regard

L'interaction par regard (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 position et de rotation des yeux renvoyées par l'extension. En savoir plus sur l'interaction par regard dans le guide d'entrée 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 mise en page d'appareil <AndroidXRMouse> dans le système d'entrée Unity.

Interaction avec la position de la paume de la main

Le plug-in OpenXR est compatible avec l'interaction de position de la paume de la main (XR_EXT_palm_pose), qui expose la mise en page <PalmPose> dans le système d'entrée Unity. La position de la paume de la main 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 être utilisée pour placer du contenu visuel spécifique à l'application, comme des visuels d'avatar. La position de la paume de la main comprend à la fois la position et l'orientation de la paume.

XR Hands

Le package XR Hands vous permet d'accéder aux données de suivi des mains (XR_EXT_hand_tracking et XR_FB_hand_tracking_aim) et fournit un wrapper pour convertir les données des articulations des mains du suivi des mains en poses d'entrée. Pour utiliser les fonctionnalités fournies par le package XR Hands, activez les fonctionnalités Sous-système de suivi des mains 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 position des mains ou sur les articulations des mains, ou si vous devez travailler avec des gestes personnalisés.

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

Choisir une méthode de rendu des mains

Android XR propose deux façons de représenter les mains: un maillage de la main et un visualiseur préfabriqué.

Maille manuelle

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 des mains fournit des maillages pour les mains de l'utilisateur. Le maillage de la main contient des sommets de 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 à des fins de visualisation.

Préfabriqué XR Hands

Le package XR Hands contient un exemple appelé Visualiseur de mains, qui contient des mains gauche et droite entièrement équipé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 ou d'obtenir un aperçu des applications en cours d'exécution. L'utilisateur peut activer ce menu système en effectuant un pincement avec la 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 quand un utilisateur effectue des actions spécifiques, comme interagir avec ce menu de navigation système. Vérifier AimFlags SystemGesture et DominantHand vous indiquera quand cette action système est effectuée. Pour en savoir plus sur AimFlags, consultez la documentation sur l'énumération MetaAimFlags d'Unity.

Boîte à outils d'interaction XR

Le package Interaction Toolkit pour la réalité étendue est un système d'interaction basé sur des composants et de haut niveau qui permet de créer des expériences de RV et de RA. Il fournit un framework qui rend les interactions 3D et les interactions de l'UI 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.