Skip to content

Commit

Permalink
Fix OSCTrackers yawAlign (#818)
Browse files Browse the repository at this point in the history
  • Loading branch information
Erimelowo committed Aug 13, 2023
1 parent 25da871 commit 2d35456
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 26 deletions.
40 changes: 18 additions & 22 deletions server/core/src/main/java/dev/slimevr/osc/VRCOSCHandler.kt
Original file line number Diff line number Diff line change
Expand Up @@ -428,29 +428,25 @@ class VRCOSCHandler(
/**
* Sends the expected HMD rotation upon reset to align the trackers in VRC
*/
fun yawAlign() {
fun yawAlign(headRot: Quaternion) {
if (oscSender != null && oscSender!!.isConnected) {
for (shareableTracker in computedTrackers) {
if (shareableTracker.trackerPosition === TrackerPosition.HEAD) {
val (_, _, y) = shareableTracker.getRotation().toEulerAngles(EulerOrder.XYZ)
oscArgs.clear()
oscArgs.add(0f)
oscArgs.add(-y * FastMath.RAD_TO_DEG)
oscArgs.add(0f)
oscMessage = OSCMessage(
"/tracking/trackers/head/rotation",
oscArgs
)
try {
oscSender!!.send(oscMessage)
} catch (e: IOException) {
LogManager
.warning("[VRCOSCHandler] Error sending OSC message to VRChat: $e")
} catch (e: OSCSerializeException) {
LogManager
.warning("[VRCOSCHandler] Error sending OSC message to VRChat: $e")
}
}
val (_, _, y, _) = headRot.toEulerAngles(EulerOrder.YXZ)
oscArgs.clear()
oscArgs.add(0f)
oscArgs.add(-y * FastMath.RAD_TO_DEG)
oscArgs.add(0f)
oscMessage = OSCMessage(
"/tracking/trackers/head/rotation",
oscArgs
)
try {
oscSender!!.send(oscMessage)
} catch (e: IOException) {
LogManager
.warning("[VRCOSCHandler] Error sending OSC message to VRChat: $e")
} catch (e: OSCSerializeException) {
LogManager
.warning("[VRCOSCHandler] Error sending OSC message to VRChat: $e")
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -648,7 +648,17 @@ public void resetTrackersFull(String resetSourceName) {
if (isSkeletonPresent()) {
skeleton.resetTrackersFull(resetSourceName);
if (server != null) {
server.vrcOSCHandler.yawAlign();
if (skeleton.headTracker == null && skeleton.neckTracker == null) {
server.vrcOSCHandler.yawAlign(Quaternion.Companion.getIDENTITY());
} else {
server.vrcOSCHandler
.yawAlign(
getRootNode()
.getLocalTransform()
.getRotation()
.project(Vector3.Companion.getPOS_Y())
);
}
server
.getVMCHandler()
.alignVMCTracking(getRootNode().getWorldTransform().getRotation());
Expand All @@ -661,7 +671,17 @@ public void resetTrackersYaw(String resetSourceName) {
if (isSkeletonPresent()) {
skeleton.resetTrackersYaw(resetSourceName);
if (server != null) {
server.vrcOSCHandler.yawAlign();
if (skeleton.headTracker == null && skeleton.neckTracker == null) {
server.vrcOSCHandler.yawAlign(Quaternion.Companion.getIDENTITY());
} else {
server.vrcOSCHandler
.yawAlign(
getRootNode()
.getLocalTransform()
.getRotation()
.project(Vector3.Companion.getPOS_Y())
);
}
server
.getVMCHandler()
.alignVMCTracking(getRootNode().getWorldTransform().getRotation());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ public class HumanSkeleton {
0
).toQuaternion();
// #region Tracker Input
protected Tracker headTracker;
protected Tracker neckTracker;
public Tracker headTracker;
public Tracker neckTracker;
protected Tracker upperChestTracker;
protected Tracker chestTracker;
protected Tracker waistTracker;
Expand Down

0 comments on commit 2d35456

Please sign in to comment.