CSE 167 Final Project - Ryan Doving
Reflection Robot
Program can be downloaded here
Screenshots

All 3 lights turned on, demonstrating specular highlights and "reflection" on the floor

Stenciling of robot below plane is apparent, creating a proper reflection

Demonstrates rotation of the viewer. Reflection of a light on the plane is also visible
Comments
(also available here)
Instructions:
Run FinalProject.exe.
arrow keys - move the robot
's', 'f', 'e', 'd' - rotate viewer
1, 2, 3 - toggle lights
'w' - toggle wireframe mode
'c' - toggle culling back faces
ESC - exit program
Technical Explanation:
This program uses OpenGL to highlight techniques such
as Phong lighting, blending, and polygon offsets to
create a robot that moves around on a reflective floor.
The actual robot is drawn using GLUT solid polygons and
triangle fans. Normals were added to non-GLUT objects
to enable the use of Phong lighting.
A quad with alpha value less than 1 is then rendered to
create the floor. It uses transparency to make visible
a copy of the robot and lights scaled underneath the
floor, which gives the effect of a reflection.
The robot is then redrawn scaled under the floor. The
lights are also redrawn to create accurate lighting
effects for the "reflection". This second robot is
visible through the semi-transparent floor, which gives
the effect of a reflection off the surface of the floor.
Aims:
I originally planned to draw a robot on a reflective marble
floor, using texture maps to create the marbled effect.
The difficult part of this was trying to make the texture map
transparent. After spending several hours over the recommended
20-25 hour limit to no avail, I decided to revert back to the
plain floor.