Add Velocity calculation logic and GUI toggle (end-to-end MVP). - #1753
Conversation
b502b9c to
b83d03d
Compare
|
Force pushes in history are changes made by spotless. |
|
At some point, I had a conversation with @ButterscotchV in DMs, and there was a recommendation expressed to ship the whole feature (Implying a toggle, nothing overkill) in one PR. The description is edited accordingly to reflect each affected part of the code. |
b3df88e to
fc9c9a6
Compare
|
I had some additional feedback from @ButterscotchV in DMs, addressed it all + rebased to the latest main + also did some changes of my own. Feedback changes:
My own improvement: |
|
Review changes were shipped and tested E2E with SteamVR. One thing to note. Jitter is still noticeable. I may think of a one-euro filter or some velocity smoothing added, but I suggest that to be a separate PR once this one is shipped. |
ButterscotchV
left a comment
There was a problem hiding this comment.
Looks fine, SolarXR needs to be merged/fixed before this PR.
… latest definition from the Driver's main branch.
…ce, Replace allowVelocity with hasVelocity in ProtobufBridge.
…#1811 # Conflicts: # server/core/src/main/java/dev/slimevr/protocol/rpc/settings/RPCSettingsBuilder.kt
� Conflicts: � server/core/src/main/java/dev/slimevr/protocol/rpc/settings/RPCSettingsBuilder.kt
…timing fix, non-nullable writeTrackerUpdate param
|
Hey @ImSapphire, the last CI run was failing, but not because of my code. This step failed on the GCC lib installation. I also rebased my branch to the current state of main to make it easier to merge. |
|
yeah, unfortunately that CI step is a bit flaky right now, due to Canonical being the target of a sustained DDoS attack over the past few days. I've let the CI run again |
|
Hi @Erimelowo and @loucass003, Just wanted to give a quick heads up since you both are showing as the final decision makers in the chain. Anything else you may need from me, or I just need to just wait for the merge to take place? |
|
sorry im just a bit slow to process stuff that i am not 100% in the loop. |
Sure thing. One toggle, off by default. Nothing else. Either transmits velocity to SteamVR or not. Velocity is derived from position delta over time, following the tick rate of the updates that the server sends. Micro-jitter in FBT is hard to deal with, so me and @ButterscotchV agreed that this PR will ship just the core functionality and figure out the jitter later. Potentially can be fixed by a one-euro filter or smoothing to reduce collision with SteamVR's prediction. |
|
I will also note that i would love to have you around for the server rewrite that is going on soon. Since the feature is gonna have to be re-implemented from zero because of the massive architecture changes. #1798 |
Yeah, sure, no problem at all, either ping me on GitHub or on Slime's Discord server (nickname matches the GitHub one), I'm totally up for supporting the code in the near future. |

This PR completes velocity transmission end-to-end, adding RPC settings and a GUI toggle on top of the foundation from #1754.
What's added:
Toggle's GUI Path:
Settings > General > Tracker Settings > Toggle is at the very bottom of the section.
Technicalities:
Most of the line count (~400) comes from regenerated ProtobufMessages.java. The handwritten change itself is small.
Depends on SlimeVR/SolarXR-Protocol#202, should be merged only after the submodule is updated to the tracked HEAD.
Addresses the issue: #25