Table of Contents

Sistem koordinat EasyAR

Dalam program 3D, definisi sistem koordinat sangat penting. Jika tidak dinyatakan secara khusus, konvensi berikut digunakan.

  • Vektor semuanya adalah vektor kolom.

  • Matriks semuanya menggunakan row-major. (OpenGL menggunakan column-major)

  • Sistem koordinat semuanya menggunakan sistem koordinat tangan kanan. (Konsisten dengan OpenGL)

  • Jika sistem koordinat memiliki skala fisik, satuannya menggunakan meter.

  • Arah negatif sumbu Y pada sistem koordinat dunia adalah arah gravitasi.

  • Pada sistem koordinat perangkat, sumbu X mengarah ke kanan, sumbu Y mengarah ke atas, dan sumbu Z mengarah keluar dari layar. Untuk perangkat yang layarnya dapat berotasi, definisi kanan dan atas didasarkan pada orientasi default-nya. Secara khusus, orientasi default Android mengikuti definisi sistem. (Penempatan landscape adalah orientasi default untuk kacamata dan sebagian tablet, sedangkan penempatan portrait adalah orientasi default untuk ponsel dan sebagian tablet.) Orientasi default iOS adalah portrait. (Konsisten dengan definisi dalam dokumentasi IMU Android dan iOS)

Pose untuk object tracking

Pose objek dari planar image tracking (ImageTracker) dan 3D object tracking (ObjectTracker) disimpan di pose, dan menyatakan pose target yang sedang dilacak relatif terhadap camera. Sistem koordinat camera dan sistem koordinat target sama-sama sistem koordinat tangan kanan. Origin sistem koordinat camera adalah pusat optik camera, arah positif sumbu x ke kanan, arah positif sumbu y ke atas, dan arah positif sumbu z adalah arah cahaya masuk ke camera (keluar dari layar). (Kanan dan atas di sini mengacu pada kanan dan atas dalam gambar camera, yang mungkin berbeda dari orientasi alami perangkat.) Susunan data adalah row-major, berlawanan dengan column-major OpenGL.

Pose dapat ditulis sebagai:

\[ 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) \]

Jika 3D engine menggunakan definisi sumbu koordinat lain, hal ini perlu dipertimbangkan saat mengatur matriks transform di 3D engine. Misalnya, ketika arah z dari sistem koordinat camera dan sistem koordinat target sama-sama berlawanan, nilai matriks transform node target pada 3D engine harus diatur menjadi:

\[ \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 untuk motion tracking

transform dari surface tracking (SurfaceTracker), serta cameraTransform dari motion tracking (MotionTrackerCameraDevice), ARKit (ARKitCameraDevice), dan ARCore (ARCoreCameraDevice), menyatakan transform camera relatif terhadap sistem koordinat dunia. Sistem koordinat camera dan sistem koordinat dunia sama-sama sistem koordinat tangan kanan. Origin sistem koordinat camera adalah pusat optik camera, arah positif sumbu x ke kanan, arah positif sumbu y ke atas, dan arah positif sumbu z adalah arah cahaya masuk ke camera (keluar dari layar). (Kanan dan atas di sini pada perangkat mobile mengacu pada kanan dan atas dalam orientasi alami perangkat.) Sumbu y sistem koordinat dunia mengarah ke atas (berlawanan dengan arah gravitasi), dan origin ditentukan oleh sistem motion tracking. Susunan data adalah row-major, berlawanan dengan column-major OpenGL.

Pose dalam sparse spatial map dan Mega

getMapPose dari sparse spatial map SparseSpatialMap dan pose di Mega menyatakan posisi dan orientasi map block dalam sistem koordinat camera. Sistem koordinat camera dan sistem koordinat map block sama-sama sistem koordinat tangan kanan. Origin sistem koordinat camera adalah pusat optik camera, arah positif sumbu x ke kanan, arah positif sumbu y ke atas, dan arah positif sumbu z adalah arah cahaya masuk ke camera (keluar dari layar). (Kanan dan atas di sini pada perangkat mobile mengacu pada kanan dan atas dalam orientasi alami perangkat.) Sumbu y sistem koordinat map block mengarah ke atas (berlawanan dengan arah gravitasi), dan origin ditentukan oleh data map block. Susunan data adalah row-major, berlawanan dengan column-major OpenGL.