Simuler l'exécution avec des fichiers EIF dans Unity
Cet article explique comment utiliser des fichiers EIF dans Unity pour la simulation, permettant ainsi de réaliser la majorité du développement sur ordinateur et de visualiser les résultats.
Avant de commencer
La simulation utilise des fichiers EIF comme entrée, il est donc nécessaire d'enregistrer un fichier EIF au préalable :
- Reportez-vous à Enregistrer un fichier EIF pour enregistrer un fichier EIF
Il est également nécessaire de comprendre :
- Les concepts de base de l'enregistrement de fichiers EIF pour la simulation
- Les concepts de base, la composition et le flux de travail d'une session AR
- Comment accéder aux composants d'enregistrement via Accéder aux composants de fonctionnalité AR dans la session
Activer le frame player de la session
ARSession.AssembleOptions offre plusieurs façons de configurer la composition des composants de la session. L'une d'elles consiste à définir AssembleOptions.FrameSource sur FramePlayer pour activer le composant frame player, permettant ainsi d'utiliser des fichiers EIF pour la simulation.
Par exemple :
Session.AssembleOptions.FrameSource = AssembleOptions.FrameSourceSelection.FramePlayer;
Vous pouvez également, dans l'éditeur, sélectionner AR Session (EasyAR) et modifier l'option correspondante dans Assemble Options dans la fenêtre Inspector :

Ainsi, au démarrage de la session, le composant frame player sera activé, et aucun autre composant frame source ne sera sélectionné.
L'effet de la lecture d'un fichier EIF avec le frame player est montré dans cette vidéo :
Cette vidéo montre l'effet de l'utilisation du frame player pour la cartographie dense de l'espace sur un ordinateur. La partie gauche est la vue
Hierarchy, au milieu la vueScene, et à droite la vueGame. Le contenu de la vueGameest identique à ce que l'utilisateur verrait dans le monde réel sur son téléphone.
Pendant la lecture du fichier EIF, tous les composants de fonctionnalité AR de la session fonctionnent normalement, le contenu de la scène et la logique d'interaction fonctionnent également, permettant ainsi de réaliser la majorité du développement sur ordinateur et de visualiser les résultats.
Astuce
L'effet vu lors de la lecture d'un fichier EIF sur ordinateur avec le frame player est fondamentalement identique à celui sur le téléphone lors de l'enregistrement.
Important
L'effet d'exécution lors de la lecture d'un EIF dans la scène dépend de l'appareil utilisé pour l'enregistrement et de la source d'images choisie sur cet appareil à ce moment-là. Par conséquent, lors de l'enregistrement d'un fichier EIF, il est recommandé d'utiliser un appareil identique ou similaire à l'appareil cible pour garantir que l'effet lors de la lecture soit cohérent avec celui sur l'appareil cible. Portez une attention particulière à l'activation de la fonction de suivi de mouvement dans la scène d'enregistrement. Si le suivi de mouvement n'était pas activé lors de l'enregistrement, il ne pourra pas être activé lors de la lecture, et les fonctionnalités AR qui en dépendent (comme la cartographie dense de l'espace, Mega, etc.) ne fonctionneront pas de manière cohérente avec l'appareil.
Lecture au démarrage de la session
Par défaut, le frame player démarre automatiquement la lecture du fichier EIF au lancement de la session. Cependant, avant la lecture, le chemin du fichier EIF doit être spécifié. Cela peut être fait via les propriétés FramePlayer.FilePathType et FramePlayer.FilePath.
Par exemple :
var player = Session.GetComponent<FramePlayer>();
player.FilePathType = WritablePathType.Absolute;
player.FilePath = path;
Vous pouvez également, dans l'éditeur, sélectionner AR Session (EasyAR) et modifier les options correspondantes dans le composant Frame Player de la fenêtre Inspector :

Si aucun fichier n'est spécifié ou si le chemin est invalide, le frame player échouera au démarrage de la session et produira un journal d'erreurs :
File not found:
Lecture manuelle
Pour contrôler manuellement le moment de la lecture, vous pouvez désactiver FramePlayer.enabled avant de démarrer la session :
Session.GetComponent<FramePlayer>().enabled = false;
Vous pouvez également, dans l'éditeur, sélectionner AR Session (EasyAR), et dans la fenêtre Inspector, décocher Enabled pour le composant Frame Player :

Lorsque vous souhaitez lire, utilisez Play() pour démarrer la lecture.
Par exemple :
if (Session.Assembly.FrameSource is FramePlayer player)
{
player.Play();
}
Chaque appel à Play() arrêtera la lecture précédente (s'il y en avait une) et recommencera depuis le début.
Attention
Lors de la lecture de nouvelles données, les données précédentes dans la scène ne sont pas effacées. L'état des composants AR n'est pas réinitialisé ; ils se comporteront comme si les données de la caméra passaient soudainement de l'endroit où les données précédentes se sont arrêtées au début des nouvelles données.
Bien que cela n'ait pas d'impact significatif sur certaines fonctionnalités, pour les fonctionnalités dépendant du suivi de mouvement (comme la cartographie dense de l'espace, Mega, etc.), cela peut entraîner un état fonctionnel anormal, affectant ainsi l'exécution. Par conséquent, il est recommandé de redémarrer la session avant de lire de nouvelles données pour réinitialiser l'état de tous les composants AR.
Mettre en pause et reprendre
Utilisez FramePlayer.enabled pour contrôler la pause et la reprise de la lecture.
Par exemple, définissez FramePlayer.enabled = false pour mettre en pause la lecture :
player.enabled = false;
Une fois la lecture en pause, tous les composants de fonctionnalité AR cessent de fonctionner. Le contenu de la scène et la logique d'interaction ne s'arrêtent pas nécessairement, cela dépend du contenu lui-même. Lorsque la lecture reprend, les composants de fonctionnalité AR recommencent à fonctionner à partir du point de pause.
Arrêter la lecture
Utilisez Stop() pour arrêter la lecture.
player.Stop();
Une fois la lecture arrêtée, tous les composants de fonctionnalité AR cessent de fonctionner. Le contenu de la scène et la logique d'interaction ne s'arrêtent pas nécessairement, cela dépend du contenu lui-même.
Lecture à partir d'un point temporel spécifique (seek)
Utilisez Seek(double) pour démarrer la lecture à partir d'un point temporel spécifique.
Par exemple, pour sauter 5 secondes plus tard :
player.Seek(player.Time + 5);
Note
Après le saut, la lecture peut ne pas commencer exactement au point temporel spécifié, en fonction du codage du fichier EIF et de l'intervalle des images clés.
Tous les fichiers EIF ne prennent pas en charge la lecture par saut. Vous pouvez utiliser la propriété IsSeekable pour vérifier si le fichier EIF en cours de lecture prend en charge cette fonctionnalité.
Note
Seuls les fichiers EIF enregistrés au format H264 avec un arrêt normal de l'enregistrement prennent en charge la lecture par saut. Si le fichier EIF ne prend pas en charge le saut, l'appel à Seek(double) n'aura aucun effet.
Contrôle de la vitesse de lecture
Utilisez la propriété Speed pour contrôler la vitesse de lecture.
Par exemple, pour augmenter la vitesse de lecture de 0,1 fois :
player.Speed += 0.1;
Tous les fichiers EIF ne prennent pas en charge le contrôle de vitesse. Vous pouvez utiliser la propriété IsSpeedChangeable pour vérifier si le fichier EIF en cours de lecture prend en charge cette fonctionnalité.
Note
Seuls les fichiers EIF enregistrés au format H264 avec un arrêt normal de l'enregistrement prennent en charge le contrôle de vitesse. Si le fichier EIF ne prend pas en charge le contrôle de vitesse, définir Speed n'aura aucun effet.
Sujets connexes
- Essayez Utiliser l'outil de validation de session, cet outil inclut un lecteur EIF simple permettant une utilisation plus rapide des fichiers EIF pour la simulation