Skip to content

Conversation

@zmerp
Copy link
Member

@zmerp zmerp commented Jul 7, 2025

  • Move prediction to server side
  • Extensive refactoring of code around TrackingData (ex Tracking)
  • Use body skeleton inside TrackingData and extract default trackers on the server side
  • Send Pico motion trackers as generic trackers and assign default trackers on the server side

This PR improves the architecture for potential Monado support, by moving prediction to the server side. Also this PR supersedes #2481. Video frames must still be pushed with the original tracking poll timestamp, otherwise the code to calculate the total latency breaks. The final step of the tracking rewrite is to remove timestamps as IDs altogether and use pose inter/extrapolation searching to determine their timestamps.

This PR is untested. I will do only basic testing, possibly gathering testing from community. I'm pushing it early to gather review feedback

Copy link
Collaborator

@The-personified-devil The-personified-devil left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tried to be as thorough as possible but especially the interaction code is just too much to really do that.


let lobby_body_tracking_config = if platform.is_pico() {
Some(BodyTrackingSourcesConfig {
meta: BodyTrackingMetaConfig::default(),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd argue that meta should still take an explicitly disabled config. + I think we should have a comment why this workaround is even needed in the first place.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still does the default thing and not explicitly disabling meta body tracking, defaults are in-transparent as to what they actually are.

@zmerp
Copy link
Member Author

zmerp commented Jul 8, 2025

I might have to break this PR up. Often for me PRs grow to become monsters, and this one I didn't realize it before pushing

@zmerp zmerp marked this pull request as draft July 8, 2025 09:58
@The-personified-devil
Copy link
Collaborator

Eh, it's already a PR now, I'm also not the biggest fan of splitting up prs because they so frequently require needless scaffolding code that'll be removed again immediately.

Comment on lines +918 to +919

#[default]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we really want this to be the default?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, we just need to have something as default, just for how I setup the code in client_openxr li.rs

@zmerp
Copy link
Member Author

zmerp commented Jul 8, 2025

I'm also not the biggest fan of splitting up prs because they so frequently require needless scaffolding code that'll be removed again immediately.

I ended up biting myself way too many time by doing big PRs that try to do too much. While this PR has a theme ("tracking refactoring") it's too broad and I can simplify it, with minimal extra changes (already made and tested a break off branch, I'm going to push it soon).

The important thing is having separate commits so the changes can be tested with more granularity before deep diving and dissecting thousands of changed lines, which usually it's only me that can do if the PR is mine

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants