TUCoPS :: Cyber Culture :: 3d_info.txt

Information on those weird stereograms

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.




TUCoPS is optimized to look best in Firefox® on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2024 AOH