Sistema de coordenadas do EasyAR
Em programas 3D, a definição do sistema de coordenadas é crucial. Sem indicação em contrário, adotam-se as seguintes convenções.
- Vetores são vetores coluna.
- Matrizes seguem a ordem row-major. (OpenGL usa column-major)
- Sistemas de coordenadas seguem a regra da mão direita. (coincidente com OpenGL)
- Se houver escala física, a unidade é o metro.
- No sistema de coordenadas mundial, o eixo Y aponta na direção oposta à gravidade.
- iOS tem orientação retrato como padrão. (Coincidente com as definições de IMU do Android e iOS)
Pose de rastreamento de objetos
A pose do objeto para rastreamento de imagem plana (ImageTracker) e rastreamento 3D de objetos (ObjectTracker) está armazenada em pose. Ela representa a pose do target atualmente rastreado em relação à câmera. Os sistemas de coordenadas da câmera e do target são sistemas de mão direita. A origem do sistema da câmera está no centro óptico, com o eixo X positivo para a direita, Y positivo para cima e Z positivo na direção da luz entrando na câmera (saindo da tela). (Direita e cima referem-se à imagem da câmera, podendo diferir da orientação natural do dispositivo.) Os dados são organizados em row-major, oposto ao column-major do OpenGL.
A pose pode ser expressa como:
Se um motor 3D usar outra definição de eixos, é necessário considerar isso ao configurar a matriz de transformação. Por exemplo, se ambos os sistemas (câmera e target) tiverem a direção Z invertida, a matriz de transformação do nó do target no motor 3D deve ser:
Transform de rastreamento de movimento
O transform do rastreamento de superfície (SurfaceTracker) e o cameraTransform do rastreamento de movimento (MotionTrackerCameraDevice), ARKit (ARKitCameraDevice), ARCore (ARCoreCameraDevice) representam a transformação da câmera em relação ao sistema de coordenadas mundial. Os sistemas de coordenadas da câmera e mundial são sistemas de mão direita. A origem do sistema da câmera está no centro óptico, com X positivo para a direita, Y positivo para cima e Z positivo na direção da luz entrando na câmera (saindo da tela). (Direita e cima referem-se à orientação natural do dispositivo em dispositivos móveis.) O sistema mundial tem o eixo Y para cima (oposto à gravidade), com origem definida pelo sistema de rastreamento de movimento. Os dados são organizados em row-major, oposto ao column-major do OpenGL.
Pose em mapas espaciais esparsos e Mega
A getMapPose de mapas espaciais esparsos (SparseSpatialMap) e a pose no Mega representam a posição e orientação de um bloco do mapa no sistema de coordenadas da câmera. Os sistemas de coordenadas da câmera e do bloco do mapa são sistemas de mão direita. A origem do sistema da câmera está no centro óptico, com X positivo para a direita, Y positivo para cima e Z positivo na direção da luz entrando na câmera (saindo da tela). (Direita e cima referem-se à orientação natural do dispositivo em dispositivos móveis.) O sistema do bloco do mapa tem o eixo Y para cima (oposto à gravidade), com origem definida pelos dados do bloco. Os dados são organizados em row-major, oposto ao column-major do OpenGL.