Créer et configurer une session AR
Pour utiliser la RA dans Unity, vous devez d'abord créer et configurer une session AR dans la scène. Cet article présente plusieurs méthodes principales pour créer et configurer une session AR. Généralement, après avoir créé une session avec succès, vous pouvez voir la structure suivante dans la vue Hierarchy :

Avant de commencer
- Comprenez les concepts de base, la composition et le flux de travail d'une session via Introduction à ARSession.
Créer une session avec configuration par défaut
Dans la vue Hierarchy, cliquez avec le bouton droit dans un espace vide, puis via le menu EasyAR Sense > [ Fonction AR ] > AR Session ([ Fonction ] Preset), vous pouvez créer une session prédéfinie. La session est préconfigurée avec des composants frame source et frame filter adaptés à cette fonction.
Dans les scripts, vous pouvez utiliser ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset, ARSessionFactory.Resources) pour créer une session.
Par exemple, via le menu EasyAR Sense > Image Tracking > AR Session (Image Tracking Preset), vous pouvez créer une session pour le suivi d'images.

Le code de script correspondant est :
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.ImageTracking);
Notez que lors de l'utilisation des présélections ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder et ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder, vous devez également transmettre des paramètres de ressources. Par exemple, le code suivant crée une session pour la construction d'espace sparse et spécifie le matériau du nuage de points :
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial });
Si le script s'exécute uniquement dans l'éditeur, vous pouvez également utiliser les ressources d'éditeur par défaut :
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, ARSessionFactory.Resources.EditorDefault());
Le menu EasyAR Sense > AR Session (Preset) > ** répertorie toutes les sessions prédéfinies utilisables, que vous pouvez consulter.

Note
Plusieurs sessions exécutées simultanément dans la même scène entreront en conflit, donc vous ne devez conserver qu'une seule session activée (GameObject.activeInHierarchy == true) dans la scène.
Ajouter des composants
Les composants frame source et frame filter de la session peuvent être ajoutés et supprimés selon les besoins après la création de la session.
Dans la vue Hierarchy, sélectionnez AR Session (EasyAR), cliquez avec le bouton droit, puis via le menu EasyAR Sense > [ Fonction AR ] > **, vous pouvez ajouter des composants frame source et frame filter adaptés à cette fonction.
Dans les scripts, vous pouvez utiliser ARSessionFactory.AddFrameSource<Source>(GameObject, bool) pour ajouter un composant frame source, ou ARSessionFactory.AddFrameFilter<Filter>(GameObject, ARSessionFactory.Resources) pour ajouter un composant frame filter.
Par exemple, via le menu EasyAR Sense > Image Tracking > Frame Filter : Image Tracker, vous pouvez ajouter un nouveau tracker d'images à la session actuellement sélectionnée.

Le code de script correspondant est :
ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
Attention
L'ajout de composants doit être effectué avant l'assemblage. Une fois que la session commence l'assemblage ou l'a terminé, toute augmentation ou suppression de composants entraînera l'entrée de la session dans l'état Broken et cessera de fonctionner.
Notez que lors de l'ajout de SparseSpatialMapBuilderFrameFilter et DenseSpatialMapBuilderFrameFilter, vous devez également transmettre des paramètres de ressources. Par exemple, le code suivant crée un SparseSpatialMapBuilderFrameFilter pour la construction d'espace sparse et spécifie le matériau du nuage de points :
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial })
Si le script s'exécute uniquement dans l'éditeur, vous pouvez également utiliser les ressources d'éditeur par défaut :
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, ARSessionFactory.Resources.EditorDefault());
Après avoir créé un frame filter, vous pouvez utiliser ARSessionFactory.SetupFrameFilters(List<GameObject>, ARSessionFactory.ARSessionPreset) pour ajuster les paramètres du frame filter selon la présélection.
Par exemple, le code suivant ajoute un nouveau tracker d'images à la session et le configure avec les paramètres prédéfinis de ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion.
var filter = ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
ARSessionFactory.SetupFrameFilters(new() { filter }, ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion);
Lorsque vous utilisez le menu pour créer, vous ne pouvez pas ajuster les paramètres selon la présélection ; vous devez les configurer après la création en fonction des instructions spécifiques du composant.
Supprimer des composants
Pour supprimer un composant d'une session, vous pouvez sélectionner le composant correspondant dans la vue Hierarchy et appuyer sur la touche Delete, ou détruire (Destroy) l'objet correspondant dans un script.
Note
Désactiver (SetActive(false)) le GameObject d'un composant a le même effet que de le supprimer.
Par exemple, pour supprimer un tracker d'images d'une session, sélectionnez Image Tracker et appuyez sur Delete.

Attention
La suppression de composants doit être effectuée avant l'assemblage. Une fois que la session commence l'assemblage ou l'a terminé, toute augmentation ou suppression de composants entraînera l'entrée de la session dans l'état Broken et cessera de fonctionner.
Impact de l'ordre des composants
L'ordre des nœuds enfants frame filter de la session n'a aucun impact sur l'exécution de la session.
L'ordre des nœuds enfants frame source de la session affecte l'ordre de sélection des frame source lors du processus d'assemblage. Seul le premier frame source utilisable dans l'ordre de transformation sera sélectionné comme frame source réel de la session.
Note
L'ordre des nœuds frame source n'est efficace que s'il est modifié avant l'assemblage. Après l'assemblage, ajuster l'ordre n'affectera pas le résultat de l'exécution.
[Optionnel] Créer librement une session
Si la session configurée par défaut ne répond pas à vos besoins, vous pouvez également créer et configurer librement une session selon vos besoins.
Vous pouvez utiliser le menu EasyAR Sense > AR Session (Preset) > AR Session (Empty) pour créer une session vide sans aucun composant frame source ou frame filter.
Dans les scripts, vous pouvez utiliser ARSessionFactory.CreateSession() pour cela.
ARSessionFactory.CreateSession();
Ensuite, ajoutez les composants frame source et frame filter appropriés selon vos besoins.
Par exemple, si vous avez besoin de créer une session avec des fonctionnalités de construction d'espace sparse et dense, vous pouvez utiliser le code suivant :
var session = ARSessionFactory.CreateSession();
var group = new GameObject("Frame Source Group");
group.transform.SetParent(session.transform, false);
ARSessionFactory.AddFrameSource<XREALFrameSource>(session);
ARSessionFactory.AddFrameSource<AREngineFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<VisionOSARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<MotionTrackerFrameSource>(session);
List<GameObject> filters = new();
filters.Add(ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, resources));
filters.Add(ARSessionFactory.AddFrameFilter<DenseSpatialMapBuilderFrameFilter>(session, resources));
ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder);
ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder);
Il créera une structure de session comme celle-ci :

Prochaines étapes
- Utiliser une session dans l'application
- Ordre et utilisation des frame source
- Meilleures pratiques pour les sessions
Contrôler l'exécution
- Comprendre les méthodes et le rôle de l'initialisation
- Comprendre comment déterminer la disponibilité et la prise en charge des appareils
- Comprendre les méthodes de contrôle de l'exécution de la session
Accéder aux composants et résultats
- Essayer d'accéder aux composants de fonctionnalité AR
- Comprendre comment obtenir les résultats d'exécution de la session
Référence des composants
- Référence du composant ARSession