Jump to content

3 stereoscopic displays with headtracking support


photo

Recommended Posts

Hi,

 

I mannage to get a system with 3 stereoscopic displays working in 3dsurround mode.

 

I wrote a new version of stereo.h supporting 3 displays in stereoscopic surround mode that supports assymetric frustums for each of the displays.

I added some support for visualizing the frustums and made some examples that shows the mono and stereo frustums (using standard rendering). See below.

Finally I made a demo that actually uses these frustums for rendering and you can change the head X,Y,Z offsets or head rotations using a simple Gui with sliders. I could not make a screenshot of this result (screenshots seems not to work in that mode).

 

All seems to work perfectly, but there is one point I'm not sure if I did it correctly:

 

When looking at some examples from Unigine I see each time when a projection frustum is calculated the element m00 is multiplied by the screen width/height ratio.

So I did the same. When I do not, the objects on the screen have wrong ratio. But I do not understand why I have to do this.

Also: when using the projection for visualizing the frustum, I have to divide it by the ration first (undoing the multiply), otherwise the result is wrong.

 

Why is this? I hope somebody can give me the answer.

 

 

The screen shot below shows 3 planes corresponding to the screen surfaces and the mono frustum for each screen.

Note that the head is a little moved to the left and the frustums adapt accordingly.

Note that the zFar has been set to a low value so that it is visualized nicely.

The 'player' can move arround using the mouse and keyboard to look at the frustums from any viewpoint.

Screens can have any position (individual X, Y position and angle).

The zNear value can be set as an absolute value, or relative to the screen surface, or as a factor of the screen distance.

 

monoFrustums.jpg

 

Below the 3 screens with stereo frustums are visualized.

When translating or rotating the head or when the (eye) seperation is changed, the frustum for each eye adapts accordingly.

 

stereoFrustums.jpg

 

 

If someone would like to use this code, please let me know what you would like to do with it and I will sent you a copy with short explanation.

Link to comment
×
×
  • Create New...