OSVR Viewer / Eyes / Surfaces

82 views Asked by At

Can someone enlighten me about the osvr architecture ?

Why would we have more than two eyes ?

Is surfaces concept is made if there is multiple screens on the headset ?

Thanks for your answers

2

There are 2 answers

2
reden On

I think that it's mostly for convention purposes that the number is arbitrary. It will not happen IRL. If you have multiple Viewers, each will have a "0" eye and a "1" eye.

When used as an ID/index, it is zero-based,so values range from 0 to (count 1) inclusive, for a given viewer. Use as an ID/index is not meaningful except in conjunction with the ID of the corresponding viewer. (that is, there is no overall "eye 0", but "viewer 0, eye 0" is meaningful.)

svr::clientkit::Eye Class Reference

If you would have several screens it would more likely be multiple Viewers as Surface is a concept that is bound to a Viewer and an Eye:

Wrapper for a viewer, eye, and surface bound to a display config.

osvr::clientkit::Surface Class Reference

The Surface class contains info like projectionMatrix and distortion.

0
Russell Taylor On

2 eyes are there to enable future expansion without code changes. In a two-user game, you would have 4 eyes. If you want a preview window from head space (between the two eyes) this would result in 3 eyes. When eye tracking is used for foveated rendering with layers, the background layers may be rendered from a canonical eye view and the high-resolution inserts from specific eye orientations (the projection actually goes through the nodal point of the eye, which is in front of the center of the eye, so shifts as the eye rotates).

Multiple surfaces per eye will also enable foveated rendering and support rendering to HMDs that have highly non-rectangular viewing areas before distortion correction is applied.