Hi Lars,

I only ever created stereo slide pairs using vwright, in which case, simply 
moving the slides closer together a small amount alleviated any discomfort.  It 
amounts to the same as -vs (modulo the image borders).

I wrote vwright before introducing the notion of viewing distance (the length 
of the -vd vector).  I could add an option to vwright for the screen distance 
that would take the view distance and turn on the kind of automatic adjustment 
you propose.  I don't have any way to test it, unfortunately.

Do you think the adjustment of -vh is really necessary?  Regardless of what  
you do with it, the borders will not match for all objects, anyway.

Cheers,
-Greg

> From: "Lars O. Grobe" <gr...@gmx.net>
> Date: April 9, 2012 1:45:04 PM PDT
> 
> Hi all,
> 
> I just found that vwright, which looked like the perfect tool to support
> stereoscopic image pair generation, generates a new view by simply
> moving the view-point -vp. This does not consider the fact that our eyes
> (hopefully) are able to focus on an object, not looking parallel into
> infinity. So my resulting frames do not really match (I tried it and it
> looked ugly...). Paul Bourke provides a great page explaining the
> background of such stereo pairs on his website:
> 
> http://paulbourke.net/miscellaneous/stereographics/stereorender/
> 
> To correct this, I would propose to manipulate the -vs and -vh
> parameters in the view file generated by vwright. I am not that great in
> doing reprojections, but from what I understand, this should work. I
> have made a simple sketch to visually explain what I attempted to do
> (and probably what I did wrong):
> 
> web-browsers with svg-support
> http://static.larsgrobe.de/stereoscopic_vwright.svg
> 
> pdf of the same sketch
> http://static.larsgrobe.de/stereoscopic_vwright.pdf
> 
> Here is my approach:
> 
> e [scene units]: eye seperation
> is given as input to vwright, known
> 
> f [scene units]: distance from either eye point to the image plane
> can simply be calculated from view direction vector vd_x, vd_y, vd_z:
> f = sqrt(vd_x^2+vd_y^2+vd_z^2)
> 
> alpha [degrees]: half horizontal view angle
> can simply be calculated from view's vh: alpha = vh/2
> 
> a [scene units]: alpha projected on the image plane
> a = f * tan(alpha)
> 
> 1) Calculate horizontal shift value vs for views:
> 
> vs [] : shift fraction (eye separation e / projected image width 2*a)
> can be calculated from above as vs = e / 2*a
> 
> For the left view, I modify vs as above, for the right view I use its
> negative value.
> 
> 2) Correct the horizontal field of view vh for views:
> 
> The stereoscopic image can be displayed only the overlapping image area
> for both views. Thus we need to cut the left border from the left and
> the right border from the right view.
> 
> beta [degrees]: the angle corresponding to this border (having the same
> width as the eye separation, but being located in the image plane)
> calculated as beta = alpha - atan ( (a-e)/f )
> 
> This allows calculating the corrected horizontal view angle vh_corr,
> which will replace the vh in my view files:
> 
> vh_corr [degrees]: corrected horizontal field of view
> as vh_corr = vh - beta
> 
> 3) The full procedure:
> 
> - take a view, derive left and right views from it by running vwright
> (+/-) e/2
> 
> - calculate vs and vh_corr and replace the corresponding values in both
> views
> 
> - render, take on your glasses, and enjoy stereoscopic 3d images....
> 
> I hope this is correct, for me it gave results looking much better then
> those by simply using vwright's view parameters. I think that having
> this in vwright as an option (either active by default, or, to preserve
> backwards compatibility, switched by e.g. -s as stereographic) would
> make rendering of stereo pairs with Radiance much more fun.
> 
> Any comments? Cheers, Lars.
> 

_______________________________________________
Radiance-dev mailing list
Radiance-dev@radiance-online.org
http://www.radiance-online.org/mailman/listinfo/radiance-dev

Reply via email to