This page describes the frame of references (FOR) and coordinate systems (CS) used by Vuforia Engine. Use this information to orient your targets and content with respect to your device and the world coordinate system as the starting origin.
There are 3 major frames of reference defined in the Vuforia Engine:
- World: defined as the start position of the device. This is your reference origin for the AR interaction. Its CS is right-handed, Y-Up, and gravity aligned.
- Camera/Device: origin on the physical device (or more precisely the camera position on the device). Camera/Device pose are reported in the World CS. Its CS is right-handed and Y-up.
- Target: used for tracking physical objects or environment locations. Target poses are reported in the World CS. Their CS is right-handed, but the Up convention varies on the type of trackable (Anchor Y-up, ImageTarget Z-up, ModelTarget varies in function of model, etc.).
Frames of Reference: World, Camera and Targets.
The CS used (world, camera, targets) and the right-handed, Y-up convention, follows the conventional “GL” frame of reference (right-handed, Y-Up), which is familiar to that 3D and graphics developers apply.
The transformation between CS and Poses are available from the TrackableResult class:
virtual const Matrix34F& getPose() const = 0;
This pose is reported as a row major matrix and can be converted for rendering to a column major matrix by using
modelMatrix = Tool.convertPose2GLMatrix(state.getDeviceTrackableResult().getPose()); // We transpose here because Matrix44FInverse returns a transposed matrix devicePoseMatrix = SampleMath.Matrix44FTranspose(SampleMath.Matrix44FInverse(modelMatrix));
The relation between poses delivery by Vuforia and the transformation you will use in your rendering engine can be interpreted as:
|Device Pose||Inversing pose for View Matrix|