Adding a tracking confidence state to XRPose

This commit is contained in:
Bastiaan Olij 2022-01-19 19:21:06 +11:00
parent f8b8d0d4b8
commit 173105596e
8 changed files with 53 additions and 5 deletions

View file

@ -181,6 +181,7 @@ void MobileVRInterface::set_position_from_sensors() {
orientation = rotate * orientation;
tracking_state = XRInterface::XR_NORMAL_TRACKING;
tracking_confidence = XRPose::XR_TRACKING_CONFIDENCE_HIGH;
};
///@TODO improve this, the magnetometer is very fidgety sometimes flipping the axis for no apparent reason (probably a bug on my part)
@ -193,6 +194,7 @@ void MobileVRInterface::set_position_from_sensors() {
orientation = Basis(transform_quat);
tracking_state = XRInterface::XR_NORMAL_TRACKING;
tracking_confidence = XRPose::XR_TRACKING_CONFIDENCE_HIGH;
} else if (has_grav) {
// use gravity vector to make sure down is down...
// transform gravity into our world space
@ -512,7 +514,7 @@ void MobileVRInterface::process() {
if (head.is_valid()) {
// Set our head position, note in real space, reference frame and world scale is applied later
head->set_pose("default", head_transform, Vector3(), Vector3());
head->set_pose("default", head_transform, Vector3(), Vector3(), tracking_confidence);
}
};
};

View file

@ -51,6 +51,7 @@ class MobileVRInterface : public XRInterface {
private:
bool initialized = false;
XRInterface::TrackingStatus tracking_state;
XRPose::TrackingConfidence tracking_confidence = XRPose::XR_TRACKING_CONFIDENCE_NONE;
// Just set some defaults for these. At some point we need to look at adding a lookup table for common device + headset combos and/or support reading cardboard QR codes
double eye_height = 1.85;