Path: utzoo!attcan!uunet!samsung!dali.cs.montana.edu!milton!jmunkki@hila.hut.fi From: jmunkki@hila.hut.fi (Juri Munkki) Newsgroups: sci.virtual-worlds Subject: Re: Stereoglasses, active technology Message-ID: <1990Sep15.080948.13606@santra.uucp> Date: 15 Sep 90 08:09:48 GMT References: <7545@milton.u.washington.edu> <7571@milton.u.washington.edu> <1990S Sender: hlab@milton.u.washington.edu Organization: Helsinki University of Technology, FINLAND Lines: 114 Approved: hitl@hardy.u.washington.edu In article <7613@milton.u.washington.edu> greg@walt.cc.utexas.edu (Greg Harp) wr ites: >I planned to (and forgot) to say this earlier: Why do you have to _draw_ >30 (or more) frames a second? I agree that to achieve stereo effect, the >left and right images must be displayed alternately every 30th of a second. > >HOWEVER, what keeps you from showing one frame, say, three times? Most >graphics-oriented machines can display _some_ type of image every tenth >of a second. (My Amiga certainly can handle filled polygons with "smart >shading" at this rate and faster with only a 68000, and many consumer-level >machines can at least do half that.) Because the Amiga has very flexible and well documented graphics hardware, doing stereo animation on it should be quite simple. Most workstations and business oriented computers aren't quite that easy to use. The most important thing is that you should have a way of getting a vertical blanking signal to the program. This is something that the Amiga and Macintosh certainly have, but I doubt that most unix workstations have it available. If you can't synchronize with the video monitor, you get flicker. Assuming that you have a vertical retrace signal, you now need a way to quickly switch frame buffers. The Macintosh Plus and SE have two frame buffers. You can't have true double buffering with just two frame buffers, if you need stereo as well. You have to blit to these buffers for every step of your animation. Macintosh II can have a large variety of graphics cards. Probably the most popular is the 8-bit graphics card. As I said, you can divide that into four 2-bit planes and get true stereo double buffering. The Amiga can set the frame buffer address to anything as long as it is in video memory. Although there usually is a shortage of video RAM, in this case I think it will be totally adequate even for animation. PCs have a variety of different graphics adapters, so you have to code for each one separately, if you want your program to be any good. If I remember correctly, CGA doesn't have a way to switch video buffers, since there simply isn't enough video memory. EGA and VGA might be able to do better, but I'm not really familiar with PC displays, so I'll let someone else comment on those. The NeXT has a 2-bit video buffer and as far as I know, it currently doesn't have any extra memory to do buffer changes. I also doubt that they have documented any way to change the clut (if it even has one) to change it so that it has two 1-bit video buffers. The NeXT might have a vertical blanking interrupt, but I haven't seen mention of it in the documentation. I am not familiar with Suns, but my guess is that their software interface (usually X-windows) was not designed to work in stereo. If you have a color display, you can play the same tricks as on a Macintosh, but I don't know if you will be able to find a vertical sync signal. Let's assume that you want to do animation: 1) You could redraw everything ~30 times per second. This is not really a good technique, but some quick testing can be done this way. I wrote a short program that displays a few lines in stereo. Once you have too many lines, you can't keep up with the display and you get flicker. My recommendation: Don't do this unless you have to. 2a To do double buffered animation in stereo, you have two buffers that are alternately displayed and two buffers that you draw into. If your hardware doesn't support multiple buffers, but has a vertical blanking interrupt, you can try to blit during vertical blanking and draw with the time that you have left over. This works quite well on fast machines with 1-bit bitmaps. 2b If your hardware does support multiple buffers, you just do the buffer switch during vertical blanking. This leaves you with plenty of time to do animation. 2c To be compatible with head mounted displays with two monitors, you should never assume that you can modify either of the buffers that are currently active (being displayed). 3) If you have relatively static displays or can guarantee that changes occur in both buffers relatively simultaneously, you can use just two buffers and draw into them directly. This saves you a lot of trouble, but it's now harder to animate the whole screen. For 3D CAD this is probably marginally acceptable, but for VR, it is totally unacceptable. >In order to trick the eye, a rate of >30 frames a second (about 33) must >be used. When I used an interlaced video mode on my NTSC monitor, a 30 Hz >flicker is apparent at high contrast. That's what I said. Why repeat it? Actually StereoGraphics (who makes the CrystalEyes glasses that are sold for many computers including SGI) recommends a monitor with a refresh rate of 120Hz. That leaves you with 60Hz per eye. >But we must accept that most VR junkies don't have SGI's. I don't think >the major breakthroughs in VR come from the people with the SGI's, DataGloves, >Eyephones, etc., anyway. Certainly affordable VR doesn't come from these >people. For VR to become a reality, we must build up from the bottom. Why would you say that? The PowerGlove is not owned by VPL Research and they are developing a PC version. Someone has to work out the concepts behind the hardware and software before you can make an affordable version. Would there be a PowerGlove, if the DataGlove didn't exist? I think one of the most interesting recent development is the Private Eye monitor. It shouldn't be hard to adapt that technology to work in Stereo and in conjunction with a head tracker. The concept is simple and once it is mass-produced, the price will be affordable even in stereo. It also seems quite simple to make the device display in color as well. At the moment this technology costs quite a bit (about $500 for a single monitor), but the devices are practically hand-built. The same thing applies to the DataGlove and probably the Polhemus trackers as well. Once these things are needed in quantities of 10 000 or 100 000, the prices will go down. ____________________________________________________________________________ / Juri Munkki / Helsinki University of Technology / Wind / Project / / jmunkki@hut.fi / Computing Center Macintosh Support / Surf / STORM / ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~