-
Notifications
You must be signed in to change notification settings - Fork 137
Coordinate System
-
We are using the right-hand rule.
-
All "poses" should be handled as a SurvivePose, which is effectively a FLT[7], with xyz, wxyz. The first is a positional offset, and the second is the rotation. These poses are effectively transforms from the object local space to the global coordinate space.
-
Though this is not universal, consider using SurvivePose* for all situations where a true pose used instead of passing around a FLT* or FLT[7].
-
All posers should; given a lighthouse:
- at 0, 0, 0
- laying on its back
- pointed upward
- receiving a "up" vector from the accelerometer of (0,0,-127)
Given an HMD:
-
pointed FACE DOWN at the lighthouse
-
1M above the lighthouse
Will produce a pose of [[0, 0, -1] [0, 1, 0, 0] ]. NOTE: The quaternion is inverted, so rotation axis is arbitrary, point is w is 0. This is the pose of the OBJECT in WORLD space. For our example, the lighthouse is at 0,0,0 in world space. In practicality, the lighthouse will be at some other place in the scene.
The idea is you should be able to take a coordinate local to the HMD and then use
ApplyPoseToPoint
to transform that point into world space, by applying the output of the poser.
-
Defining the value of
pose
inBaseStationData
: This pose will convert something in lighthouse-local space into a position in world space. When calibrating, if you have an object you want to define as 0,0,0... You will need to take its pose and invert it. -
Posers will take into account the
pose
of various lighthouses, if NOT in calibration and return poses of objects in world space assuming the lighthouses are set up. -
Objects internally are tracked in IMU space. They are then transformed into 'Head' space, as defined in their config.
General information for LH pose: