[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: IDL virtual reality (was 3D Object IDL )



(now that I think I understand what you are doing I posted this back to the
group)

I played around with my camera object and *I think* I have it doing what you
need to do.  I wrote a program that will "flicker" the display where the
frames alternate between the left and right "eye".  It is based on one of my
camera demos and should be fairly bug free. :)

There are plenty of details to attend to.  I just made up a distance between
the eyes.  Also, right now if you project a line from each eye into space
the lines are parallel.  If you need them to cross at some focal point
(which I assume real eyes do) you will need to set the LOOKAT value to some
point on the horizon (for example lookat=[0,0,-20]) and also set the TRACK
keyword so the camera "stares" at that point.  I have made some notes at the
appropriate place in the demo on this.


The demo program is here:
http://www.acoustics.washington.edu/rht/programs/camdemo_flick.pro

Note that the program displays the frames rendered per second but the upper
bound is set by IDL's timer event which seems to be able to issue maximum
100 events per second (at least on my machine).  The best visual quality can
be had if you enable Vsync (which will limit your FPS to your monitors vert.
refresh rate).


You will need my camera object and my quaternion_object both are available
here:
http://www.acoustics.washington.edu/rht/3d_animation.html


As for projecting this from two projectors, could you write the program so
it can run in master or slave mode and use the SOCKET procedure to
communicate between to machines (a left machine and a right machine).  The
master would dictate when the slave renders a new scene.  Otherwise you'll
have to do something at the hardware level (some sort of switch) and I think
synchronizing the rendering with your switch would be difficult.


Enjoy!

-Rick Towler


----- Original Message -----
From: "George Millward" <george@apg.ph.ucl.ac.uk>
To: "Rick Towler" <rtowler@u.washington.edu>
Sent: Wednesday, August 08, 2001 2:33 PM
Subject: Re: IDL virtual reality (was 3D Object IDL )


>
> Hi Rick,
>
> That is exactly what i am doing.  If you have a 3D scene created then the
> right and left views are just a matter of displacing the "eye" by a
> suitable amount along the X-axis (or moving the outermost containing
> object in the opposite direction).
> At present I do this in a really clunky, unelegant manner. I am writing
> left and right views to different draw windows and I can tell when the
> offsets are about right by forcing the two images to align and refocussing
> (i.e., a practiced "bozeyed" technique - though a bit painful, this
> technique is really useful in 3D work because you can tell when something
> is working without doing anything other than producing he 2 views on the
> screen).
> If you have a more elegant object for doing the transformation then this
> would be great.  The next step is to understand how to integrate this
> with the technology requirements of the 3D system (i.e., getting the 2
> views to integrate into OpenGL or something - then output to the "flicker
> glasses" system).  What I want to do is get this to drive 2 independent
> projectors (with polarizing filters etc.) - so we can build a cheap
"virtual
> reality suite for looking at atmospheric data.  So in this case we would
> want the two rendered scenes to be "writing" independently to the 2
outputs
> (either by having 2 graphics cards, or by having some sort of interlacing
> system, essentially the same as the "flicker glasses" system).
> So the first step is to get IDL to output 2 stereo scenes as efficiently
> as possible.  the next is then to get this routed correctly with the
> hardware..
> Anything you have would be really appreciated.
> Cheers for now,
> George.
>
> On Wed, 8 Aug 2001, Rick Towler wrote:
>
> > I think I might have just the solution but I am not confident that I
know
> > how you render "one for left, one for right".  Do you render a scene for
the
> > left eye, then translate the objects in your view so they are shifted
and
> > render the right eye?
> >
> > I have written a camera object that gives intuitive control over object
> > graphics view composition.  If rendering your R and L views are a matter
of
> > simply moving the camera an inch or so back and forth along the "eye
space"
> > x axis then it would work for you.
> >
> > -Rick



"george Millward" <george@apg.ph.ucl.ac.uk> wrote in message
d90c0773.0108080052.6baccbe5@posting.google.com">news:d90c0773.0108080052.6baccbe5@posting.google.com...
> Hi There,
> Thanks for your input.  Actually I am well aquainted with the "flicker
> glasses" technique.  I have done a fair amount of  3d animation and
> used both the "flicker glasses", and twin polarised projectors, as the
> virtual reality technique.  However, up till now my method has been to
> render 2 separate animations in IDL (one for left, one for right) and
> then recombine these in special 3D video software to create the final
> virtual reality scene.  This works fine - but is completely "offline".
>  So, my question here is how to do this in fully interactive mode.  I
> am not thinking here about the actual 3D technique ("flicker glasses
> etc.") as much as how to achieve this within IDL.  My question really
> is:  What is the most efficient way to write 2 separate scenes (L and
> R) at the same time.  I.E., are there any techniques in IDL that make
> this a "no brainer" - has anyone done this before ?  I am really
> looking for technical IDL input.  Do you write the data to the
> Z-buffer and alternate between the 2 scenes in real time (as fast as
> the render engine will do it) etc. etc. ?
>
> Any help much appreciated.
> Cheers ,
>
> George Millward
>
> "Rick Towler" <rtowler@u.washington.edu> wrote in message
news:<9kp8m8$16n2$1@nntp6.u.washington.edu>...
> > You might want to look into 3d shutter glasses.  They work by
alternately
> > rendering a left and right eye view to the screen while simultaneously
> > covering the opposite eye by darkening the lens.  All of this is done at
the
> > driver level so you don't have to render your two views by hand.
> >
> > I would start with a consumer level product.  Both Elsa (glasses are
called
> > Revelator) and Asus (glasses are called VR Spectacle) make glasses that
work
> > with some of their graphics cards for the PC.  The glasses tend to be a
> > little flimsy and aren't the most comfortable but they are cheap and a
good
> > place to start with this sort of thing.  They do work quite well but I
know
> > some people that get headaches or sick to their stomachs using them.
> >
> > If you decide that shutter glasses are the way to go, you can start
looking
> > for a more professional product.  I know they exist but I just haven't
> > gotten that far.
> >
> > good luck!
> >
> > -Rick Towler
> >
> >
> > "George Millward" <ghm@appleonline.net> wrote in message
> > B795A847.14F%ghm@appleonline.net">news:B795A847.14F%ghm@appleonline.net...
> > > Hi there,
> > >
> > > I am wanting to generate full 3D output from IDL object scenes.  I can
do
> > > this offline (i.e., create two different views in which the "eye" is
> >  offset
> > > for left and right view).  But I want to be able to do all this fully
> > > interactively.
> > > So my setup would be:
> > > Computer running IDL - output to (maybe) 2 graphics cards - > 2
projectors
> > > (with polarised filters) and then viewed using 3D (polarised glasses).
> > >
> > > In practice therefore I need a system for outputting 2 slightly
different
> > > images (left and right) of the same scene.
> > > Does anyone know how to do this ? Are 2 graphics cards required or can
it
> >  be
> > > done with one ?
> > >
> > > Thanks in advance for any help.
> > >
> > > George Millward.
> > >