From 1250e77771f5715d99f0ccf53b73556d69db4c8c Mon Sep 17 00:00:00 2001 From: Eiren Rain Date: Mon, 19 Jul 2021 18:35:08 +0300 Subject: [PATCH] More correct (but still not completely correct) tracker adjustments --- .../vr/trackers/ReferenceAdjustedTracker.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/eiren/vr/trackers/ReferenceAdjustedTracker.java b/src/main/java/io/eiren/vr/trackers/ReferenceAdjustedTracker.java index a36521ca67..2d677b3465 100644 --- a/src/main/java/io/eiren/vr/trackers/ReferenceAdjustedTracker.java +++ b/src/main/java/io/eiren/vr/trackers/ReferenceAdjustedTracker.java @@ -44,19 +44,14 @@ public void saveConfig(TrackerConfig config) { */ @Override public void resetFull(Quaternion reference) { - resetYaw(reference); - Quaternion sensorRotation = new Quaternion(); tracker.getRotation(sensorRotation); - adjustmentYaw.mult(sensorRotation, sensorRotation); - - // Use only yaw HMD rotation - Quaternion targetTrackerRotation = new Quaternion(reference); float[] angles = new float[3]; - targetTrackerRotation.toAngles(angles); - targetTrackerRotation.fromAngles(0, angles[1], 0); + sensorRotation.toAngles(angles); + sensorRotation.fromAngles(angles[0], 0, angles[2]); + adjustmentAttachment.set(sensorRotation).inverseLocal(); - adjustmentAttachment.set(sensorRotation).inverseLocal().multLocal(targetTrackerRotation); + resetYaw(reference); } /** @@ -76,6 +71,7 @@ public void resetYaw(Quaternion reference) { Quaternion sensorRotation = new Quaternion(); tracker.getRotation(sensorRotation); + sensorRotation.multLocal(adjustmentAttachment); sensorRotation.toAngles(angles); sensorRotation.fromAngles(0, angles[1], 0);