Caméras dans unity et sources de données d'entrée de trame — source de trame (frame source)
La source de trame est le fournisseur de données de caméra et de trame d'entrée dans unity. Ce document présente le concept de base, les types et la méthode de sélection au moment de l'exécution de la source de trame.
Avant de commencer
- Comprendre les concepts de base, la composition et le flux de travail de session ar.
- Comprendre les concepts de base tels que caméras, trame d'entrée.
Qu'est-ce qu'une source de trame
La source de trame (FrameSource) est le fournisseur de trames d'entrée (InputFrame), qui abstrait les caméras et autres appareils ou fonctions fournissant des données de trame d'entrée.
Le diagramme suivant montre la position de la source de trame dans la session :
flowchart LR
F[Frame Source]
A((Input Frame))
B[Session]
C([Camera])
O([Origin])
T([Target])
F --> A
A --> B
B -. transform .-> C
B -. transform .-> O
B -. transform .-> T
style F fill:#6e6ce6,stroke:#333,color:#fff
La source de trame peut simplement fournir des données aux fonctionnalités ar en aval, ou elle-même implémenter certaines fonctionnalités ar, comme le suivi de mouvement. Certaines sources de trame fournissent des interfaces de contrôle de l'appareil photo, permettant à l'utilisateur de sélectionner des paramètres de caméra, tels que la résolution, le mode de mise au point, etc.
Types de sources de trame
Classés par package unity fournissant la source de trame, les sources de trame peuvent être divisées en deux catégories principales :
- Sources de trame intégrées : fournies par le package plugin unity easyar sense, prenant généralement en charge la plupart des scénarios d'utilisation courants et certains casques.
- Sources de trame externes : fournies par les packages d'extension plugin unity easyar sense, généralement utilisées pour prendre en charge des appareils casques spécifiques. Souvent, les sources de trame externes sont fournies par des fabricants de casques ou des développeurs tiers.
Distinguées des sources de trame externes, la caméra personnalisée n'est pas nécessairement fournie de l'extérieur ; certaines sources de trame intégrées sont également des caméras personnalisées.
La source de trame peut fournir des données de mouvement avec différents degrés de liberté : 0dof, 3dof, 5dof et 6dof. La même source de trame peut fournir des données de mouvement avec différents degrés de liberté dans différents états de fonctionnement.
Le tableau suivant répertorie les sources de trame fournies par easyar :
| Nom | Intégré | Caméra personnalisée | Données de mouvement | Description |
|---|---|---|---|---|
| CameraDeviceFrameSource | Oui | Non | Aucun (0dof) | Caméra standard, prend en charge l'avant, l'arrière et pc |
| EditorCameraDeviceFrameSource | Oui | Non | Aucun (0dof) | Caméra standard, uniquement pour le débogage dans l'éditeur |
| FramePlayer | Oui | Non | Déterminé par le fichier | Lecture de fichiers eif, simulation d'exécution |
| ThreeDofCameraDeviceFrameSource | Oui | Non | 3dof | Fournit des capacités de suivi 3dof |
| InertialCameraDeviceFrameSource | Oui | Non | 5dof | Fournit des capacités de navigation inertielle |
| MotionTrackerFrameSource | Oui | Non | 6dof | Fournit le suivi de mouvement implémenté par easyar |
| ARCoreFrameSource | Oui | Non | 6dof | Fournit le suivi de mouvement d'arcore |
| ARKitFrameSource | Oui | Non | 6dof | Fournit le suivi de mouvement d'arkit |
| AREngineFrameSource | Oui | Oui | 6dof | Fournit le suivi de mouvement d'ar engine |
| VisionOSARKitFrameSource | Oui | Oui | 6dof | Fournit le suivi de mouvement d'arkit visionos 1 |
| XREALFrameSource | Oui | Oui | 6dof | Fournit le suivi de mouvement des appareils xreal 1 |
| ARCoreARFoundationFrameSource | Oui | Oui | 6dof | Fournit le suivi de mouvement arfoundation correspondant à arcore |
| ARKitARFoundationFrameSource | Oui | Oui | 6dof | Fournit le suivi de mouvement arfoundation correspondant à arkit |
| PicoFrameSource | Non | Oui | 6dof | Fournit le suivi de mouvement des appareils pico 1 |
| RokidFrameSource | Non | Oui | 6dof | Fournit le suivi de mouvement des appareils rokid 1 |
Sélection de la source de trame au moment de l'exécution
La hiérarchie de scène de la session contient un ou plusieurs composants de source de trame. Au moment de l'exécution de la session, tous les composants de source de trame ne sont pas utilisés.
La capture d'écran suivante montre une hiérarchie de scène avec un seul composant de source de trame :
![]()
La capture d'écran suivante montre une hiérarchie de scène contenant plusieurs composants de source de trame :

Chaque source de trames a des fonctionnalités différentes, ce qui détermine également leurs scénarios d'utilisation et appareils adaptés. Lors de l'assemblage de la session, une et une seule de ces composantes est sélectionnée comme source de trames de la session.
La propriété AssembleOptions.FrameSourceSelection définit la méthode de sélection de la source de trames lors de l'exécution de la session :
| Nom | Méthode |
|---|---|
| Auto (par défaut) | Sélection automatique, choisit le premier nœud enfant disponible et actif selon l'ordre de transformation. |
| <xref:u:e:easyar.AssembleOptions.FrameSourceSelection.Manual> | Spécification manuelle. Ne peut spécifier que des nœuds enfants de la session. |
| <xref:u:e:easyar.AssembleOptions.FrameSourceSelection.FramePlayer> | Utilise FramePlayer. |
Astuce
L'ordre de transformation des objets Unity peut être vérifié avec Transform.GetSiblingIndex(), ou en observant l'ordre des objets dans la vue Hierarchy, mais l'option suivante doit être désactivée (elle l'est par défaut) : Edit > Preferences > General > Enable Alphanumeric Sorting.
Lors du processus d'assemblage de la session, la source de trames est sélectionnée après les étapes suivantes :
- La session parcourt ses nœuds enfants, collectant toutes les composantes actives de source de trames selon l'ordre de transformation.
- Filtrage de la liste des candidats selon la stratégie de sélection de source (AssembleOptions.FrameSource) dans AssembleOptions :
- Auto (par défaut) : Conserve tous les candidats.
- Manual : Conserve uniquement la source de trames spécifiée manuellement.
- FramePlayer : Remplace la liste des candidats par FramePlayer.
- Filtrage supplémentaire de la liste des candidats, retirant les composantes suivantes :
- Celles désactivées par leur propre logique.
- Toutes les composantes de caméra personnalisée lorsque la caméra personnalisée est désactivée (AssembleOptions.EnableCustomCamera est false).
- (Plate-forme Android) Si le paramètre de délai d'attente de AssembleOptions.DeviceList est supérieur à 0, et que la liste des candidats contient MotionTrackerFrameSource, ARCoreFrameSource ou AREngineFrameSource, une tentative est faite pour télécharger les dernières listes de support d'appareil correspondantes. Après la mise à jour, la disponibilité de ces sources de trames peut changer. Après le téléchargement ou le délai d'attente, les étapes suivantes continuent.
- Vérification séquentielle de la disponibilité des composantes candidates restantes (en appelant FrameSource.CheckAvailability() et en accédant à FrameSource.IsAvailable), selon l'ordre de la liste.
- Sélection de la première source de trames dont la vérification indique la disponibilité.
Les conditions de désactivation propres aux composantes sont définies en interne, voici des cas courants :
- Exécution dans un système non pris en charge, par exemple AREngineFrameSource est désactivé sur un système non Android.
- SDK tiers requis non installé, par exemple XREALFrameSource est désactivé si le SDK XREAL est absent.
- Conditions de configuration non satisfaites, par exemple MotionTrackerFrameSource est désactivé si le MotionTrackerCameraDeviceQualityLevel de l'appareil est inférieur à MotionTrackerFrameSource.DeviceQualityLevel.
Si aucune source de trames n'est finalement sélectionnée, la session passe à l'état Broken, et le champ BrokenReason dans le rapport de session aura la valeur NoAvailabileFrameSource.
Note
Après la mise à jour de la liste des appareils, si celle-ci change, la disponibilité des sources de trames peut également changer. Reportez-vous à Support d'appareil et rapport de session pour comprendre le comportement de la session dans ce cas.
Étapes suivantes
- Essayez d'ajouter un groupe de sources de trame dans la scène
Sujets connexes
- Prise en charge des appareils et rapport de session
- Prise en charge des casques par easyar
- Créer une source de trame externe pour utiliser une caméra personnalisée
-
La prise en charge des appareils peut être consultée dans prise en charge des casques par easyar.↩↩↩↩