Absird Frequently Asked Questions How does the program work? The program works by reading in a depth image. It then tiles a pattern by varying amounts according to the depth at each pixel. Where the image is close to the viewer, the pattern repeats rapidly. Where the image is far from the viewer, the tile repeats slowly. What's a "depth" image? How can I make one or get one? A depth image is an image where the brightness of each pixel represents how far the image is from the viewer. Most renderers can create them. I include some in my package. Without a renderer, it is nearly impossible to make them. In this program, the brighter the pixel, the closer it is to the viewer. On what machines does the program run? I only have compiled in on an SGI running UNIX. If you port it to another (non-Microsoft) platform, I would like to know about it. It should not be hard to port. Does it have to use that complicated formula? [depthToOffset()] Strictly speaking, no. Any interpolation which changes the repeat pattern in accordance with the depth will give the "stereogram look". But using the real formula allows actual distance values to be applied and seen. Flat areas from the depth image appear flat in the autostereogram. Does it really have to anti-alias? Yes, it does. It's amazing, but your eyes are quite sensitive to this effect. Let's take a simple case. Let's suppose that you've got a stereogram which you view at a distance of 15 inches, and you want the image to appear from 15 to 25 inches into the screen. Also suppose you're looking at a screen which has 72 pixels per inch. That stereogram will have a repeating pattern which varies from 90 pixels to 112.5 pixels in width. That's a mere 22 depth values represented. You can see these jumps. If you anti-alias, it's smoother. What's this "zeroDepth" nonsense? A common theme in stereograms is to have an object floating in front of a faraway wall. So I put in this feature. The zeroDepth value will be the depth on pixels which are zero. If you make it different than the minDepth, then the object will float in front of a wall at the zeroDepth distance. Can I make "cross-eyed" stereograms by just negating the values? No, it's not that simple. If I get better at seeing "cross-eyed" stereograms, and there is sufficient interest, I'll add an option for cross-eyed mode. Why is the output stereogram *larger* than the input? Each of your eyes sees a copy of the stereogram. The depth appears only in the overlap of these two copies. So the depth is smaller than the stereogram by one tile. Where to I get the jpeg image libraries & include files? The library and all the source for it are available at ftp.uu.net (Internet address 192.48.96.9) in the directory graphics/jpeg. Very nice package. (Hey, IJG, when does it get ported to C++?) How can I use a different image library package? You'll need to write 6 routines: openJPEGRead() openJPEGWrite() readJPEGScanline() writeJPEGScanline() closeJPEGRead() closeJPEGWrite() which mimic the ones I've written but read & write your preferred image file type. In theory, you shouldn't need to do anything else, but I haven't actually tried this, so maybe I did something wrong. I tried to encapsulate it all.... How do I get in touch with you an ask you more questions? Keith Goldfarb Rhythm & Hues keith@rhythm.com http://www.rhythm.com/~keith I got nothing. Too bad. Some pink toes But I'm happy 'cause that's all I have. Some black toes