From d3f90b84048fadfe054424c8012cf77297dddfc0 Mon Sep 17 00:00:00 2001 From: Erimel Date: Thu, 15 Feb 2024 19:23:54 -0500 Subject: [PATCH] show drift compensation in tracker preview (#937) --- .../java/dev/slimevr/tracking/trackers/Tracker.kt | 8 ++++---- .../tracking/trackers/TrackerResetsHandler.kt | 12 +++++------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/server/core/src/main/java/dev/slimevr/tracking/trackers/Tracker.kt b/server/core/src/main/java/dev/slimevr/tracking/trackers/Tracker.kt index 2e56843464..46bf7f27de 100644 --- a/server/core/src/main/java/dev/slimevr/tracking/trackers/Tracker.kt +++ b/server/core/src/main/java/dev/slimevr/tracking/trackers/Tracker.kt @@ -284,7 +284,7 @@ class Tracker @JvmOverloads constructor( * Gets the adjusted tracker rotation after all corrections * (filtering, reset, mounting and drift compensation). * This is the rotation that is applied on the SlimeVR skeleton bones. - * Warning: This may perform several Quaternion multiplications, so calling + * Warning: This performs several Quaternion multiplications, so calling * it too much should be avoided for performance reasons. */ fun getRotation(): Quaternion { @@ -316,8 +316,8 @@ class Tracker @JvmOverloads constructor( } /** - * Gets the identity-adjusted tracker rotation after some corrections - * (filtering, identity reset and identity mounting). + * Gets the identity-adjusted tracker rotation after corrections + * (filtering, identity reset, drift and identity mounting). * This is used for debugging/visualizing tracker data */ fun getIdentityAdjustedRotation(): Quaternion { @@ -331,7 +331,7 @@ class Tracker @JvmOverloads constructor( if (needsReset && trackerPosition != TrackerPosition.HEAD) { // Adjust to reset and mounting - rot = resetsHandler.getIdentityAdjustedRotationFrom(rot) + rot = resetsHandler.getIdentityAdjustedDriftRotationFrom(rot) } return rot diff --git a/server/core/src/main/java/dev/slimevr/tracking/trackers/TrackerResetsHandler.kt b/server/core/src/main/java/dev/slimevr/tracking/trackers/TrackerResetsHandler.kt index ea1c27952a..87cb36c50d 100644 --- a/server/core/src/main/java/dev/slimevr/tracking/trackers/TrackerResetsHandler.kt +++ b/server/core/src/main/java/dev/slimevr/tracking/trackers/TrackerResetsHandler.kt @@ -113,17 +113,15 @@ class TrackerResetsHandler(val tracker: Tracker) { * and drift compensation, with the HMD as the reference. */ fun getReferenceAdjustedDriftRotationFrom(rotation: Quaternion): Quaternion { - var rot = adjustToReference(rotation) - rot = adjustToDrift(rot) - return rot + return adjustToDrift(adjustToReference(rotation)) } /** * Takes a rotation and adjusts it to resets and mounting, * with the identity Quaternion as the reference. */ - fun getIdentityAdjustedRotationFrom(rotation: Quaternion): Quaternion { - return adjustToIdentity(rotation) + fun getIdentityAdjustedDriftRotationFrom(rotation: Quaternion): Quaternion { + return adjustToDrift(adjustToIdentity(rotation)) } /** @@ -235,8 +233,8 @@ class TrackerResetsHandler(val tracker: Tracker) { calculateDrift(rot) - // Let's just remove the status if you do yaw reset if the tracker was - // disconnected and then connected back + // Remove the status if yaw reset was performed after the tracker + // was disconnected and connected. if (this.tracker.lastResetStatus != 0u && this.tracker.statusResetRecently) { VRServer.instance.statusSystem.removeStatus(this.tracker.lastResetStatus) this.tracker.statusResetRecently = false