-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WaitGetPoses without any delay #434
Comments
Why wait, why don't you call the proper function to only get the current poses? Did you even search that documentation for 3 minutes before posting? It is out there... |
Thanks a lot, issue closed |
The question is reasonable and I posted the issue because of lack of information and noone could assist. Now I handled my needs in another way, not settings zero-wait time. Anyway, thanks for reply! |
The required GetLastPoses method is right below the WaitGetPoses in the header file, why do you need assistance for this - except you are to lazy to invest any of your own time? |
No, I understand GetLastPoses exists, but the question was about WaitGetPoses. Sorry for bothering you, issue closed. |
Ok if you want WaitGetPoses to do exactly what GetLastPoses does, but you still want to use WaitGetPoses and not GetLastPoses... I guess nobody can help you then. |
Thanks for help. Issue closed. |
I like questions about poses. They are the new thing in vr and discussing them helps understand the openvr interface structure. TrackedDevicePose_t appears in multiple interfaces. You can find them in the compositor interfaces and the system interfaces, and the event interfaces. the word pose itself is --- man --- almost every second line in the openvr.h header. Everyone sees WaitGetPoses first because that's the one that's in helloworld and because it's required for the compositor to function correctly. For more info, on the compositor interaction see the comments on PostPresentHandoff. ....I'm guessing presumably me and everyone else learns by experiment that it's a blocking call. Maybe if they called WaitGetPoses "BlockHereToSyncWithTheCompositorAndWaitForNextFramePoses" :) I'd have noticed it on first reading. Most of the openvr api calls are responsive, so this one always stands out as an exception. Since you have WaitGetPoses in your render loop it's the best one to start with. And then add the other pose queries to the subsystems that require them as the need arises:
Regarding your idea about making blocking a configurable setting for WaitGetPoses doesn't sense because that blocking behaviour is its defining purpose. The other apis are intended to cover the other cases. |
Thank you much, it is great answer I really appreciate. Thanks again. |
What are you trying to do? Sounds similar to something we faced last year. We wanted to customize the prediction amount. |
The "Wait" as part of the name intends the blocking. But this call is not as well designed as in LibOVR (while they redesigned the same API call multiple times, but that's another topic). In LibOVR there is exact control from frameIndex rendered to presentation on the hmd including assumed position and rotation. The timewarp from the real physical data/prediction always kicks in simply from the last frame submitted in LibOVR with the positional data transfered on submit. The main difference is, no call to something like WaitGetPoses is needed then. So I am with you about finding the need to call this at all strange. I guess it was somehow intended to wait until the best moment, when your rendering should start - but It is not very good at this for me. Also some strange timing/prediction issues still appear on transition to a single timewarped frame, making this worse. |
@spayne Thanks!! This really cleared things up for me. |
@n8vm. You are welcome. I wrote that awhile ago. 2017. My 2019 update would include two background points about Waiting and Poses:
It's an important performance detail part of that presentation. https://www.youtube.com/watch?v=FCAM-3aAzXg&t=4h12m16s Later in that presentation was a demo which showed how they might be making the frame loops consistent as well as some details on Epic's multithreaded render loop.
|
Hi, Ok I DID TRY this void VIVE_Driver::OtherWayToGetPoses()
} And replace the WaitGetPoses() with that. Problem : "compositor complains it does not have the application focus", tried all I could think of and could NOT find a way/proper way to "give it the focus" , what mysterious function should be called then ? |
We are developing special software for Vive in extended mode and it needs WaitGetPoses without any additional delay to get data immediately.
It would be perfect to have such option in SteamVR settings config file.
Is it possible to get such feature or is there any documentation/information how to get data from WaitGetPoses immediately?
Thank you!
The text was updated successfully, but these errors were encountered: