Table of Contents

Système de coordonnées easyar

Dans les programmes 3D, la définition du système de coordonnées est très importante. En l'absence d'indication contraire, les conventions suivantes s'appliquent.

  • Les vecteurs sont tous des vecteurs colonnes.
  • Les matrices sont toutes au format row-major. (OpenGL utilise le format column-major)
  • Les systèmes de coordonnées utilisent tous un système de coordonnées droitier. (identique à OpenGL)
  • Si une échelle physique existe pour un système de coordonnées, l'unité utilisée est le mètre.
  • L'axe Y négatif du système de coordonnées mondial correspond à la direction de la gravité.
  • Dans le système de coordonnées de l'appareil, l'axe X pointe vers la droite, l'axe Y vers le haut et l'axe Z sort de l'écran ; pour les appareils dont l'écran peut pivoter, la droite et le haut sont définis par rapport à leur orientation par défaut. Plus précisément, l'orientation par défaut d'Android suit la définition du système. (Les lunettes et certaines tablettes ont une orientation paysage comme orientation par défaut, les téléphones et certaines tablettes ont une orientation portrait comme orientation par défaut). L'orientation par défaut d'iOS est l'orientation portrait. (cohérent avec les définitions des spécifications IMU d'Android et iOS)

Pose des objets suivis

La pose des objets pour le suivi d'images planes (ImageTracker) et le suivi d'objets 3D (ObjectTracker) est stockée dans pose. Elle représente la position et l'orientation du target suivi par rapport à la caméra. Les systèmes de coordonnées de la caméra et de la cible sont tous deux des systèmes droitiers. L'origine du système de coordonnées de la caméra est le centre optique de celle-ci. L'axe X positif pointe vers la droite, l'axe Y positif vers le haut et l'axe Z positif est la direction de la lumière entrant dans la caméra (sortant de l'écran). (La droite et le haut font référence à la droite et au haut dans l'image de la caméra, qui peuvent différer de l'orientation naturelle de l'appareil.) Les données sont arrangées en row-major, à l'inverse du column-major d'OpenGL.

La pose peut s'écrire :

\[ P = \left( \begin{array}{cccc} p_{11} & p_{12} & p_{13} & p_{14} \\ p_{21} & p_{22} & p_{23} & p_{24} \\ p_{31} & p_{32} & p_{33} & p_{34} \\ 0 & 0 & 0 & 1 \\ \end{array} \right) \]

Si le moteur 3D utilise une définition différente des axes, cela doit être pris en compte lors de la définition de la matrice de transformation dans le moteur 3D. Par exemple, si les axes Z des systèmes de coordonnées de la caméra et de la cible sont tous deux inversés, la matrice de transformation du nœud cible dans le moteur 3D doit être définie comme :

\[ \left( \begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & -1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{array} \right)\left( \begin{array}{cccc} p_{11} & p_{12} & p_{13} & p_{14} \\ p_{21} & p_{22} & p_{23} & p_{24} \\ p_{31} & p_{32} & p_{33} & p_{34} \\ 0 & 0 & 0 & 1 \\ \end{array} \right)\left( \begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & -1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{array} \right)=\left( \begin{array}{cccc} p_{11} & p_{12} & -p_{13} & p_{14} \\ p_{21} & p_{22} & -p_{23} & p_{24} \\ -p_{31} & -p_{32} & p_{33} & -p_{34} \\ 0 & 0 & 0 & 1 \\ \end{array} \right) \]

Transform du suivi de mouvement

La transform du suivi de surface (SurfaceTracker) et la cameraTransform du suivi de mouvement (MotionTrackerCameraDevice), d'ARKit (ARKitCameraDevice) et d'ARCore (ARCoreCameraDevice) représentent la transformation de la caméra par rapport au système de coordonnées mondial. Les systèmes de coordonnées de la caméra et du monde sont tous deux des systèmes droitiers. L'origine du système de coordonnées de la caméra est son centre optique. L'axe X positif pointe vers la droite, l'axe Y positif vers le haut et l'axe Z positif est la direction de la lumière entrant dans la caméra (sortant de l'écran). (La droite et le haut, sur les appareils mobiles, font référence à la droite et au haut dans l'orientation naturelle de l'appareil.) L'axe Y positif du système de coordonnées mondial pointe vers le haut (opposé à la direction de la gravité), et son origine est déterminée par le système de suivi de mouvement. Les données sont arrangées en row-major, à l'inverse du column-major d'OpenGL.

Pose dans la carte spatiale éparse et mega

La getMapPose de la carte spatiale éparse SparseSpatialMap et la pose de Mega représentent la position et l'orientation d'un block de la carte dans le système de coordonnées de la caméra. Les systèmes de coordonnées de la caméra et du block de carte sont tous deux des systèmes droitiers. L'origine du système de coordonnées de la caméra est son centre optique. L'axe X positif pointe vers la droite, l'axe Y positif vers le haut et l'axe Z positif est la direction de la lumière entrant dans la caméra (sortant de l'écran). (La droite et le haut, sur les appareils mobiles, font référence à la droite et au haut dans l'orientation naturelle de l'appareil.) L'axe Y positif du système de coordonnées du block de carte pointe vers le haut (opposé à la direction de la gravité), et son origine est déterminée par les données du block de carte. Les données sont arrangées en row-major, à l'inverse du column-major d'OpenGL.