I want to know if it is possible to create a scene with 2 and more cameras, and each camera “films” the scene and render it on seperate “opengl window” , lcd display glasses or screen, in order to make a stereovision system.
If it was not possible, how to know the exact framerate, in order to synchronize lcd obturation glasses.
Thanks for your replies
stereo rendering is of course possible with openGL, but to display both images in sync you should use quad buffer cards (nvidia quadro and ati fireGL series).
these cards also have an synch signal output which can be used to synchronize your glasses. the sync signal can also be generated out of the vga signal.
By the way, where can one get a good pair of lcd obturation glasses?
Where can I found some tutorials to explain me how to set up Opengl for stereo rendering?
The simplest (and cheapest, and good quality) stereo setup that I have managed to use and do OpenGL programming with, is the dual monitor, single mirror setup.
- low cost (you can use 2 cheap 17 or 19" CRTs, many lying around here, people all go for pricey LCDs…)
- no need for (hard to find) quad-buffered professional cards.
- no sync issues
- no ghosting [but there can be a bit of ghosting on one eye if you can’t find a front face mirror (I could not either), in practice it is not a problem.]
- full brightness, full color.
- full refresh rate
- you can also use LCD if you want (with shutter glasses, LCDs are out)
- takes quite a lot of place
- only for 1 spectator
- and you should not move the head horizontally more than one or two centimeters.
See “Dual display with a mirror” here :
Full details for the hardware setup (I did not build a complicated stand, just stuck the mirror between the 2 CRTs)
More details :
- you need two monitors, and a dual head card (most modern video cards)
- configure as a single horizontal wide screen (the best hardware acceleration)
- in opengl : create a single fullscreen window, twice as wide as one screen.
- render right eye on right monitor (only on the right half of the window, use glViewport and glScissors)
- render left eye on left monitor (only on the left half of the window, use glViewport and glScissors), but the view must be mirrored horizontally (glScale(1,-1,1), rewerse also front facing polygon winding)
- swapbuffers, then go to step 2).
To experience the stereo effect :
Put a large enough mirror between the 2 monitors, stare in the direction of the right screen, with left eye looking at left monitor throught mirror. See the above links for details.
For generating the left and right views, have a look at this :
The first method is easy and “good enough”, but the second is much better, especially in cases with extreme relief.
I hacked Quake 3 GPL source (from ioquake3 project) to do this, really great !!!
mmh, btw, I should release the modified source. Is there any interest in it ?
I added some more info to my post, if you need more, please ask.
In the early days on my amiga, I used to use 2 toilet rolls taped together to form binoculars, render into 2 small viewports, put the toilet rolls up against the monitor over both viewports and look inside.
Once your eyes uncrossed themselves you’d get a nice stereo image.
After 5 minutes you got a headache, red rings around your eye sockets, and an uneasy feeling of being alone in a room staring down two toilet rolls.
I imagine I’d get a similar experience with your mirror setup.
OP, life’s too short, get yourself a cheap quadro and some cheap shutter glasses off ebay.
Knackered, thanks for sharing your early experiments
Mine were with red/blue glasses on 8bit computer drawing a wireframe cube…
Seriously, I experienced bad headaches with shutterglasses, as refresh rate is halved. But YMMV.
no problem zbuffer…glad to share my embarrassing stories.
if your refresh rate is 160hz you get 80hz per eye…more than enough for me. I’m not him out of the matrix.