From steinmetz!uunet!leah.Albany.EDU!rsb584 Sun Feb 7 14:52:56 1988 Received: by kbsvax.steinmetz (1.2/1.1x Steinmetz) id AA16253; Sun, 7 Feb 88 01:21:34 est Received: from LEAH.ALBANY.EDU by uunet.UU.NET (5.54/1.14) id AA22385; Sun, 7 Feb 88 01:01:13 EST Date: Sun, 7 Feb 88 01:03:50 EST From: steinmetz!uunet!leah.Albany.EDU!rsb584 (Raymond S Brand) Received: by leah.Albany.EDU (5.58/1.1) id AA15043; Sun, 7 Feb 88 01:03:50 EST Message-Id: <8802070603.AA15043@leah.Albany.EDU> To: beowulf!rsbx >From dave@onfcanim.UUCP Thu Feb 4 14:15:51 1988 Path: leah!itsgw!batcomputer!cornell!rochester!bbn!husc6!rutgers!clyde!watmath!onfcanim!dave From: dave@onfcanim.UUCP (Dave Martindale) Newsgroups: comp.graphics Subject: Re: Interactive Stereo Viewing Message-ID: <15546@onfcanim.UUCP> Date: 4 Feb 88 19:15:51 GMT References: <4615@tut.cis.ohio-state.edu> <146@rocky8.rockefeller.edu> <1396@pixar.UUCP> <5039@well.UUCP> <3005@watcgl.waterloo.edu> Reply-To: dave@onfcanim.UUCP (Dave Martindale) Organization: National Film Board / Office national du film, Montreal Lines: 91 Dave Forsey and Flip Philips have been discussing whether you converge the two cameras in 3D, or whether you leave their axes parallel. At least in the case of Transitions, the Expo '86 IMAX 3-D movie, sometimes they did and sometimes they didn't. There are tradeoffs. Your eyes are used to converging and focusing at the same time. You can maintain this link in 3D only if the object you are looking at appears at the same distance as the screen, with the rest of the scene extending in front of and behind the screen - pretty limited. However, your visual system is pretty flexible, within limits, and you can actually present scenes where the eyes focus separately from their convergence, provided you don't try to have them converge *too* far, or try to make them *diverge* rather than converge. Good 3-D gives you the feeling of "being there", of seeing a real three-dimensional environment. For this to work, you eyes must be able to roam around the environment without finding things that just "don't work" to your visual system. This also means that large depths of field are necessary, requiring small lens apertures on the cameras and lots of light. In the real world, as your eyes roam around a scene, they change convergence as they change focus, and the object being viewed is always at the point where the eyes converge. The cameras cannot do this, so convergence has to be set to suit the subject matter of the scene. In scenes that contain far-away objects, you almost always want the cameras parallel, since that gives superimposed images on screen for the far-distant objects. The audience can thus look at the far objects naturally, without strain. If the cameras were converged, the eyes of the audience would have to *diverge* to look at the far-away objects, which most of us are not capable of. However, really close objects then have a large offset between the two images on screen, and it becomes impossible for some members of the audience to converge their eyes enough to see both images simultaneously. This effect is worst for people at the front of the theatre, since a given linear displacement in the images translates to a larger angular displacement for them. So, in scenes where the focus of interest is quite close to the cameras, the cameras are converged somewhat to reduce the on-screen displacement and help out the audience. This works fine if the scene is such that there isn't any detail at infinity, or if you know the audience attention is going to be riveted on the thing in the foreground (e.g. the aforementioned egg hovering above the head of the person in front of you in the audience). It's all illusion anyway - you can't reproduce mathematically correct 3D for more than one person in the audience anyway, so what you try for is the best apparent 3-D for the most people simultaneously. For example, when the egg breaks in Transitions, some people think it's going to land in their lap, and some just watch it land on the head of the person ahead of them without worrying about their own clothes. Another example of this: the 3-D effect varies greatly with distance from the projection screen. A given angular displacement of objects results in an apparent depth which is a particular fraction of the distance between the viewer's eye and the screen. This is true for differential depth as well - an object which appears to be 1 meter deep to someone at the front of the audience will appear 2 meters deep to someone at the back, if they are twice as far from the screen. Now, when you consider that apparent height and width of objects is inversely proportional to distance from screen but apparent depth is directly proportional to distance, then you can see that the apparent depth-to-width ratio of objects changes as the square of the viewing distance change. Often, you brain compensates for this, since you *know* the proportions of things, but sometimes it is very obvious. In Transitions, there is a scene where a small boy is asleep in bed. From the front of the theatre, the bed looks rather short compared to its width, but well it's a child's bed so that's OK. But from the back of the theatre, it looks like the bed is about 15 feet long. In practice, the 3D is usually computed so that things look "right" for someone in the centre of the audience, and so people at the front see compressed depth and people at the back see it exaggerated. (This assumes, of course, that the cinematographer or "3D consultant" understands the mathematics of 3D at all - if they don't, who knows what you get). I watched "Transitions" many times with the theatre empty, and found that although the 3D looked more natural from the centre, I preferred either the extreme front or extreme back of the audience seating. From the back, you get the most exaggerated 3D, and from the front you get the most effect from the IMAX screen filling your field of view, towering above you. I remember one scene where two boys were shovelling wheat in a truck, and I was afraid that they were going to bury me in it at any moment. Dave Martindale From haitex@crash.cts.com Wed Jan 27 13:52:57 1988 Path: leah!itsgw!nysernic!rutgers!uwvax!dogie!uwmcsd1!marque!gryphon!crash!haitex From: haitex@crash.cts.com (Wade Bickel) Newsgroups: comp.graphics Subject: Algebra For Stereo-Scopic Image Generation Message-ID: <2423@crash.cts.com> Date: 27 Jan 88 18:52:57 GMT Reply-To: haitex@crash.cts.com (Wade Bickel) Organization: Crash TS, El Cajon, CA Lines: 203 Thanks Leo for pointing out this discussion in amiga/comp-amiga. I did not have direct access to this discussion and didn't know it even existed. First, I'd like to mention that Haitex will be releasing 3-D glasses for the Amiga within about a month. I like our glasses better than the Sega glasses because they have bigger lenses, and the lenses are on a visor rather than "glasses" (kinda like a welding visor) which is more comfortable, especially if you already wear glasses. This is one of the things I've been working on for the past few months. The following is a letter I sent to the makers of a ray trace progam which will directly support the glasses. I hope this helps those of you working on 3-D projects. Note for Leo: This entire methodology was developed by looking at the point of a pencil held between myself and a window, and looking at a branch outside the window. This methodology is totally intuitive, and avoids the need to perform any rotions to acheive the parallax effect. Furthermore, I have been able to bring object a significant distance out of the screen with no terrible ugliness. I'd like to talk to you about all this in more detail so why don't you send me your ph# or call me [(619) 421-5602] and I'll call you right back so I pay for the call. FROM: Wade W. Bickel, Haitex Resources. DATE: 12-10-88 TO: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX SUBJECT: Parallax Rendering Algebra. In this letter I will try to go through the mathematics involved in creating a parallax stereo pair. I am not a mathematician so please excuse me if my teminology is non standard. For computational simplicity I perform the following rather convoluted system for generating a stereo display. The idea is that there is an imaginary 3-D grid which cannot be re-positioned, and points to be translated onto a region (which represents the screen), both of which can be freely re-positioned. If you picture the display as a window we are electing to move the viewer's head, the window, and the objects outside that window, rather than re-align the axes. The logic can be decomposed into a system of moving axes if you wish, but this system eliminates the need to compute the length of some projections using the distance formulae and therefore is the one that I utilize. 1) Points to be translated are represented in cartisian (x-y-z) coordinates. 2) The viewpoint is assumed to be centered at the origin and facing in the direction of positive z. To visualize this, you the viewer, are at the origin, the direction you're facing is positive z, and negative values of x lie to your left. 3) A plane lies perpendicular to the z-axis (ie: parallel to the x-y plane) at some distance in the positive z direction. Within this plane is a rectangular region, not quite centered about the z-axis, and aligned with the x and y axes, which represents the screen. For our purposes we will call this region either the "left-screen" or the "right-screen", or just "screen" for the general case. The screen is offset with respect to x depending on which view (left or right) is being rendered. For the left eye the screen is offset to the right. Thus if one were to display the point [0,0,zP] (ie: where the z-axis intersects the region) for the left-screen the point would appear to the left of the center of the actual display bitmap. For the right eye the region is offset to the left. These offset's will be refered to as the "lefteye-offset" and "righteye-offset" and are calculated to be one half the distance between the viewer's eyes, in whatever units of measure have meaning to the programmer/user. 4) Points to be translated are assumed to have a positive z coordinate; in other words, you should clip with respect to z before trying to translate a point. Clipping with respect to x-y should probably be done after translation. When translating a point for the left eye, that point should be shifted right by twice the amount the screen region was shifted to the right (ie: the total distance between the eyes). Lets call this the "EyeSpacing". The net effect of the shift of the screen and the point is to properly create a perspective. Given these conditions and relationships, to translate a point onto the screen the following algebra is used: The point to be translated (always positive z) and the view point (always [0,0,0]) define a line. These two points also form a right triangle, call it triangle "A", with the z-axis. The line also passes through the plane in which the screen (as previously defined) lies, and this intersection is the one we wish to find. Note that a triangle is formed between this unknown point, the viewpoint, and the z-axis, call it triangle "B". Triangle A and B are similar right triangles. Since we know the z components of both triangles, and everything about triangle A, we can calculate the disired intersection as follows: let VP = the viewpoint, [0,0,0]; P = the point to be translated (+z); S = the plane on which the screen lies (perp. to z); Q = point on the line defined by VP and P, and on plane S. the following relationships are true Qx/Qz = Px/Pz; --> Qx = (Px * Qz)/Pz; Qy/Qz = Py/Pz; --> Qy = (Py * Qz)/Pz; (note avoidance of distance fomulae calculations because VP = [0,0,0]) Where Qx and Qy are the respective X and Y coordinates to possibly be displayed. This two-d-point should be checked to see if it is within the "screen" (as previously described) and if so it should be displayed. Implementation of this is not nearly as difficult as all this implies. Simply do the following. 1) for each view add or subract the constant "EyeSpacing" to the x-component of points to be translated. Hopefully this can be done at a very low level of the point's position calculation. (Add for left eye view, subtract for right eye view). 2) translate the point as described earlier. Qx and Qy represent the actual translation to the plane on which the screen lies. At this point determine if this point lies in the appropriate "screen". [Remember that the screen is a region which is shifted left or right by half the EyeSpacing (or: left/right-offset)]. If so then the point should be rendered. 3) When rendering the points must be recentered to account for the fact that [0,0] on the display is the upper left corner, and we want it to be the psuedo screen center. At this point, adjust the x compensation by one half the EyeSpaceing. (move the center left for the left eye, right for the right eye). This should be an integer operation. Implementation of this is not nearly as difficult as all this implies. Simply do the following. I hope I've not gotten anything backwards. Sorry I've made it seem overly complicated, but I tend to think of this in pictures, not language. -------------------------------------------------------- Now on to my question: Is it not worthwhile to think of objects in polar coordinates? It seems to me than much of the math required to do the real-time calculations necessary to provide rotation of both the objects and the viewpoint(s) would be allieviated by defining object this way as opposed to cartesian coordinates. I am about to give up on this approach due to some flaw in my calculations, which took me about a week to work out, and translations in cartesian coords are well documented. Seems a shame though as it should reduce the needed calculations to less than half. If anyone would care to discuss the topic I might give it one more shot. Should I post here or keep this E-mail? All (civil) comments are welcome. Thanks, Wade W. Bickel Haitex Resources. PS: In order to get to this news-group I have to utilize the Unix side of the local node. Not knowing my way around in here yet, would someone please mail me the Stereo-vision topics found here for a while (and perhaps post letters for me as well, which I would send via mail)? PPS: Sandra (?? I think that was the name of the original poster), If you'd like I could mail you some Modula-2 examples to perform the translations. Of course, if you want controlled rotation, that's what I'm working on now so you'd have to wait. From albanycs!leah:rsb584 Thu Jan 28 01:24:20 1988 Received: by albanycs.albany.edu (5.54/4.8) id AA18991; Wed, 27 Jan 88 09:33:38 EST Date: Wed, 27 Jan 88 09:33:35 EST From: albanycs!leah:rsb584 (Raymond S Brand) Received: by leah.Albany.EDU (5.58/1.1) id AA23806; Wed, 27 Jan 88 09:33:35 EST Message-Id: <8801271433.AA23806@leah.Albany.EDU> To: albanycs:beowulf!rsbx >From ewhac@well.UUCP Mon Jan 25 04:02:44 1988 Path: leah!itsgw!nysernic!rutgers!rochester!bbn!uwmcsd1!ig!agate!ucbvax!hplabs!well!ewhac From: ewhac@well.UUCP (Leo 'Bols Ewhac' Schwab) Newsgroups: comp.graphics Subject: Re: Interactive Stereo Viewing Message-ID: <5063@well.UUCP> Date: 25 Jan 88 09:02:44 GMT References: <4615@tut.cis.ohio-state.edu> <146@rocky8.rockefeller.edu> <1396@pixar.UUCP> <5039@well.UUCP> <3005@watcgl.waterloo.edu> Reply-To: ewhac@well.UUCP (Leo 'Bols Ewhac' Schwab) Organization: Lt. Col. Oliver North, Overseas Shipping and Receiving. Lines: 102 First, some clarifications. I was working on a project to bring a piece of 3D technology to the consumer market. It never materialized. Howver, in the process, I spent about four months playing around with 3D on the Amiga under the tutelage of Michael Starks, who I am led to believe is one of the top five experts on 3D on the planet. He had at least three bookcases full of nothing but copies of patents on 3D processes from all over the world. And he's read all of them. He knows what looks good and what looks bad. After fiddling around for some time, I managed to get images which he pronounced as good-looking. Based solely on that, I presented my methods of achieving 3D. I never meant to imply that the gentleman from Pixar was totally wrong, but his approach seemed block-box-ish and non-intuitive. So I thought I'd present my approaches which, according to Michael, are the correct ways to go about things, and which I felt de-mystified things a bit. Keep in mind that there may be other approaches I don't know about. In article <3005@watcgl.waterloo.edu> drforsey@watcgl.waterloo.edu (Dave Forsey) writes: >By aiming the two cameras have you not forced the viewer to focus on >one specific part of the screen? If the viewers actual focus wanders >to another part of the CRT, won't the visual information presented to >each eye be incorrect? When viewing a 3D still or movie, the centre of >attention may wander all over the screen, not just the part that the >cameraman has decided to focus on. > This point has crossed my mind, too. Again, you should consider the human vision system. When looking at an object, your eyes converge to focus on that object. Your center of attention is focused on that one spot, and all other areas are more or less ignored. When the viewer wishes to shift his/her attention, the eyes refocus and re-converge on a different section of the world. This happens automatically. Hold a pencil at arm's length from you, and stare at a spot on a wall beyond the pencil. Notice that you see two images of the pencil when focused on the wall. Now focus on the pencil. Note that there are now two images of the spot on the wall, because your two eyes have reconverged. In either case, was the 3D effect diminished? By selecting the point of convergence, you are merely selecting which object will appear at the surface of the screen. The 3D effect will be no less striking, and if the viewer wishes to shift their attention, they simply refocus. If you were to shoot a scene in parallel, the convergence point would be at infinity, and everything in front of infinity (i.e. everything) would appear to leap off the screen. This is not always desireable. In article <20092@bbn.COM> cosell@bbn.com.UUCP (Bernie Cosell) writes: >I think that the current formulations (and transform matrices, etc) for >generating stereo pairs have it a bit wrong. You should **NOT** >converge the two views you generate -- they should be from offset >perspective origins to be sure, but the two primary sight axes should >be _parallel_. [ ... ] > >From "The world of 3D, a practical guide to stereo photography" by >J G Ferwerda: > Those without much experience with stereo often think that the lens > axes while shooting the left and right image, should be trained somewhat > `towards each other'. For instance, while shooting a flowering shrub > at a distance of 3 m, it seems obvious that in both cases a certain > flower should be kept in the centre of the viewfinder for each shot. > However, this is not the case. Even if the subject that is to be taken > is very near -- especially then -- the lens axes should not be > trained `towards each other'. > With all due respect, I feel that your source is very wrong, particularly with objects that are less than 1m away. Consider a flower that is six inches away from a 3D camera, with lenses 2.5 inches apart. If you develop the photos, you'll find the left eye photo is heavily clipped against the right side of the photo border, while the converse is true for the right image. Your eyes would need to cross very severely to see this image, which is uncomfortable, and it would also try to leap to your nose. However, since the images are clipped against the photos' edges, your brain gets confused, and the 3D effect is lost almost completely. Portions of the image that try to leap off the viewing media should be done very carefully. They should not be clipped against any edges. Parallaxes should be kept to a minimum, even if you've got an enormous screen. You don't need to hit the viewer over the head with 3D. You can be subtle, and still come off very well. An offshoot of the project I worked on should be appearing on the market for the Amiga Real Soon Now. Part of the package will be some images I digitized, using converging cameras, as well as an image created using Deluxe Paint II (an Amiga paint package). I think they look rather good, but then I'm biased.... _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ Leo L. Schwab -- The Guy in The Cape ihnp4!ptsfa -\ \_ -_ Recumbent Bikes: dual ---> !{well,unicom}!ewhac O----^o The Only Way To Fly. hplabs / (pronounced "AE-wack") "Simplicity and clarity should be your theme in dress." -- A fortune cookie I got in LA's Atomic Cafe.