Team: 28
School: Los Alamos Mid
Area of Science: Computer Science
Proposal: Proposal:
I seek to make a ray tracing program to render 3D objects on a screen following the laws of physics. Ray tracing is based on how beams of light travel from a source that are then absorbed in, reflected from, and transmitted through objects. A forward ray tracing algorithm starts at the light source and follows the beam of light; however, this is computationally inefficient because many beams of light never reach the eye of the viewer. A backwards ray tracing algorithm is more efficient by tracking the beams of light starting from the eye and going to the objects and then to the light source.
Rationale:
Ray tracing can create realistic physics-based graphics of complex scenery with many objects. An alternative to ray tracing is 3D projection, but it has drawbacks. 3D projecting is a method of converting 3D geometry (represented by many surface polygons) to 2D geometry, and it is slow on complex scenes unlike ray tracing. Also, 3D projecting doesn’t correctly capture the physics of light.
Hypothesis:
A ray tracing algorithm is an efficient and physically correct way to render complex 3D scenes onto a 2D plane.
Procedure:
I will program a ray tracer method using python3. I will use the pygame library to draw the colors that were calculated with my code onto the 2D plane.
Team Members:
Sponsoring Teacher: Nathaniel Morgan