Remove tracker polarity tracking #456

Closed
opened 2026-04-05 18:59:36 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @ButterscotchV on 3/12/2025

Moving on from #1343

It turns out, there is no possible way for this code to function. Quaternions have a rotation limit of 360 degrees, and even assuming a limited joint rotation of 180 degrees, it would take a mere 2 joints to hit the limit of our precision... We cannot feasibly track rotation this way, we would be better off tracking local rotations on the skeleton and assuming positive rotations (180 degrees joint limit), then comparing between joints, reaching the maximum 360 degree limit. I don't think it's actually possible for the human body to go beyond 180 degrees for any joint, but if we wanted to, then we could go even further and use either skeleton constraints or temporal tracking within the local rotations.

tl;dr: It's not reasonably possible to track rotations globally

This PR is just a simple removal of polarity tracking from quaternion moving average stuff. Currently, smoothing and prediction both still technically track the polarity, but this is how it was initially and it should be fine anyways.

*Originally created by @ButterscotchV on 3/12/2025* Moving on from #1343 > It turns out, there is no possible way for this code to function. Quaternions have a rotation limit of 360 degrees, and even assuming a limited joint rotation of 180 degrees, it would take a mere 2 joints to hit the limit of our precision... We cannot feasibly track rotation this way, we would be better off tracking local rotations on the skeleton and assuming positive rotations (180 degrees joint limit), then comparing between joints, reaching the maximum 360 degree limit. I don't think it's actually possible for the human body to go beyond 180 degrees for any joint, but if we wanted to, then we could go even further and use either skeleton constraints or temporal tracking within the local rotations. > > tl;dr: It's not reasonably possible to track rotations globally This PR is just a simple removal of polarity tracking from quaternion moving average stuff. Currently, smoothing and prediction both still technically track the polarity, but this is how it was initially and it should be fine anyways.
MrUnknownDE added the Area: Skeletal ModelArea: ServerPriority: HighType: BugArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: Skeletal ModelArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerArea: ServerPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighPriority: HighType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: BugType: Bug labels 2026-04-05 19:00:04 +02:00
Sign in to join this conversation.
No Label Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Server Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Area: Skeletal Model Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Priority: High Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug Type: Bug
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/SlimeVR-Server#456