View Full Version : Need help...reflection of environment in transparent dome.....

07-30-2001, 09:11 AM
In the movie "Toy Story", there are several scenes where the scene is shown from Buzz Lightyear's viewpoint. In one, Buzz Lightyear is looking around Andy's room, and you can see Andy's room, but you can see a reflection of Buzz's face in his helmet dome.

How would one create such an effect in OpenGL and what techniques are involved (texture mapping, environmental mapping etc.)? What I need to do is similar. I need to view a scene through a transparent dome and see the world on the other side of the dome, but see a reflection of what is inside the dome on the inside surface of the dome. Also, the contents of the scene inside the dome could will change (such as when Buzz moves his head to look around)...

I have seen several examples on nVidia's webpage on using environmental mapping (cube, sphere) but these deal with mirror surfaces rather than with transparent materials...

Suggestions are appreciated...pointers to demos even more so.


07-30-2001, 09:15 AM
Forgot to mention this, but I am using GeForce3...so I can take advantage of nVidia extensions, but would like to be able to use non-vendor specific solutions....

07-30-2001, 10:27 AM
That would be done much like a mirror. In this case, you would simply draw the reflection with a small alpha and use alpha blending to make the reflection transparent.
If I were to do this on my TNT, I would likely try spherical environment mapping. First I would draw the interior of the dome, Buzz's head per your example. I would then copy that image to a texture, and use either OpenGL's spherical texgen (which can be bugged on some drivers) or my own texgen (which will always work) to draw the image onto the dome, using alpha blending. Of course there is the potential of all the usual artifacts with this method which likely could be minimized by using appropriate constraints. A neat trick might be to use an artificially low texture lod to make the reflection look a bit blurred.