Table of Contents

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 :

alt text

Avant de commencer

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.

alt text

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.

alt text

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.

alt text

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.

alt text

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 :

alt text

Prochaines étapes

Contrôler l'exécution

Accéder aux composants et résultats

Référence des composants