01Spatial Documentation

Machine-readable: manifest · index · English Markdown

Draft translation: this English page is available for review and is not yet the production default.

Coordinate and pose conventions

01Spatial returns the camera pose in map coordinates. Let T_A_B transform points from frame B to frame A: M is Map, A is the current AR session, and C is Camera. API camera_to_world is T_M_C.

matrix_column_major is a complete 4 × 4 column-major matrix. Three.js Matrix4.fromArray() reads it directly; do not transpose it again.

The API camera axes are CV-style: +X right, +Y down, +Z forward. WebXR/OpenGL-style cameras use +X right, +Y up, -Z forward, so:

D_cv_to_graphics = diag(1, -1, -1, 1)
T_A_M = T_A_C_graphics × D_cv_to_graphics × inverse(T_M_C)

Apply T_A_M to a shared map root, never to the AR camera. For an object T_M_O, use T_A_O = T_A_M × T_M_O. Image rotation requires the corresponding inverse axis rotation. Rig.v2 must use the saved AR transform for poses[0].image. Metric maps use metres for translation; each map's saved Origin is authoritative.