-
Notifications
You must be signed in to change notification settings - Fork 57
Open
Labels
Priority: HighImportant feature or blocks something importantImportant feature or blocks something importantType: EnhancementAdds or improves a featureAdds or improves a feature
Description
This issue is exacerbated by any additional latency in the server itself, which is being tracked here: SlimeVR/SlimeVR-Server#511
I think we have a couple routes here:
- If the server sends us the HMD position it's using, we can cut this latency loop by correcting with the current HMD position.
- VRChat basically does this with OSC, though the reasoning is different. (potentially different tracking spaces, NOT latency)
- This partially fixes the specific latency route mentioned in the title of the issue. However, it doesn't fix HMD rotation possibly having other affects on the skeleton.
- Could we also tell the driver about head length/offset and have it correct for that?
- It also doesn't help anything else if it means that all of our tracker information is >= 1 frame behind.
- This seems like something that we could measure. driver -> server -> driver latency versus tracker -> server -> driver latency.
- (This is basically why I objected to this idea in the past when iirc @TheButlah brought it up)
- We might be able to make it correct for controller/vive tracker positions if we send enough information to the driver.
- honestly this feels like it's getting closer and closer to implementing the skeletal model in the driver and running it there.
- Once the server has low enough latency, we could have an integrated loop between the driver and server where the driver sends HMD information for this frame, server sends back the most up to date tracker information in response, and driver waits for that response before continuing.
- This might require changes in how server works. Possibly an independent thread, or maybe a way for the server to register "I need to send out tracker updates now" in response to a network request.
- The thought of an independent thread here goes almost counter to how I was going to suggest helping improve things in the server in comparison to OSC though, heh.
- This allows us to keep complications out of the driver and in the server, but it would mean that if the server stalls, the driver stalls too.
- This might require changes in how server works. Possibly an independent thread, or maybe a way for the server to register "I need to send out tracker updates now" in response to a network request.
Metadata
Metadata
Assignees
Labels
Priority: HighImportant feature or blocks something importantImportant feature or blocks something importantType: EnhancementAdds or improves a featureAdds or improves a feature