Hi Jeff,
Thanks for getting back to me! First off, is it perhaps better if we handle this through a support ticket and then post the final results here?
I have hacked together the following to get Vive specs:
Code:
display_node = vizconnect.getRawDisplay('main_display').displayNode
if type(display_node.getSensor()).__name__=='SteamVRHMD':
resolution = (1080.*2,1200.)
refreshRate= 90.
# get FOVy and aspectr from the Vive's projection matrices
import vizmat
a=vizmat.Transform()
a.set(display_node.getSensor().getProjectionMatrix(viz.LEFT_EYE))
left = a.getPerspective()
a.set(display_node.getSensor().getProjectionMatrix(viz.RIGHT_EYE))
right = a.getPerspective()
FOVy = (left[0]+right[0])/2.
aspectr = (left[1]+right[1])/2.
That is, i hardcoded the resolution and refresh rate as i saw no way to query that (the getRenderSize() size call returns something bigger than the screen), but i got the FOVy and aspectratio from the Vive's projection matrix. This as i could not find clear info about the FoV anywhere, only rough estimates. (Interestingly enough, they weren't exactly the same for the two eyes, hence the averaging.) I do wonder however why Vizard returns information about the auxiliary screen when the user wants to work with the HMD, its counter intuitive and, frankly, a little useless (from my point of view at least). Perhaps augmenting the auxiliary view is handy to give observers extra info, but there should be a way to distinguish the HMD screen from the auxiliary screen, and query then separately, I think.
This also leaves me with a new question. In this situation, should i open the overlay (setRenderWorldOverlay())with the resolution of the two screens combined (i.e., 2160x1200), or should i open it at a single eye size, 1080x1200? When i do the latter, things are positioned way off in the HMD, so i used the former which seems to work ok. Its however hard to know if things are positioned correctly, since we can't use a ruler to measure.
Thank you and all the best,
Dee