Table of Contents

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

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 :

alt text

La capture d'écran suivante montre une hiérarchie de scène contenant plusieurs composants de source de trame :

alt text

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 :

  1. La session parcourt ses nœuds enfants, collectant toutes les composantes actives de source de trames selon l'ordre de transformation.
  2. 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.
  3. 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).
  4. (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.
  5. 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.
  6. 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 :

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

Sujets connexes


  1. La prise en charge des appareils peut être consultée dans prise en charge des casques par easyar.