Interactive Ray Tracing Tutorial System Project
A requirement for a tutorial system was identified, that would aid educators in the teaching of Ray Tracing. The program was required to be interactive and suitable for display on a projector so that it could be used in lecture theatres by educators.
A number of features were identified that would explain the core concepts of ray tracing: A ray tracer, a way to visualise the ray tracing algorithm, a demonstration of collision detection, a look at the surface physics and how texture mapping is used in ray tracing. These features were then designed and implemented as separate modules comprising a suite of tutorials.
A number of students were involved in the testing of the system to ascertain whether the goals of the system had been achieved. The tutorial system was found to be intuitive to use and also promoted understanding of the topics covered.
The system that was implemented provides many features, which make it a useful tool that can be used by educators to teach, and students to learn, the concepts of ray tracing.
This project aims to implement an interactive tutorial system that demonstrates the workings of the ray tracing algorithm . The program, once implemented, would ideally be used by educators, students or anyone else wishing to study the concepts of ray tracing. The program will allow as much interactivity as possible so that the user is fully involved and to make the program interesting to use.
The implementation of this tutorial system would be highly beneficial to anyone trying to teach the concepts of ray tracing, lecturer or otherwise. As the algorithm is used in computer graphics, it makes sense to have a tool that graphically illustrates the algorithm as it runs. This helps us to understand what is happening, as we understand and interpret visual cues much better than, for example, reading a description of an algorithm.
1.2 Proposed System Features
My initial research into the ray tracing algorithm led me to the conclusion that a number of miniature tutorials may be required to cover all the relevant topics. Below is a feature list of what could be included in the tutorial system. If the terminology used here is unclear the reader is advised to refer to Chapter 2 where ray tracing is described in greater detail. For a much more detailed explanation of each feature, refer to the original project plan in Appendix B.
Approaching the Problem
At first glance the size of the proposed system had the potential to become quite a large project. For this reason I did not expect to finish the system in its entirety, but attempted to tackle each section, one at a time, in order of importance and difficulty to get the main parts of the system completed. The program was implemented as an Object Oriented solution, which is vital, as there may be a need to extend the project at a later date and an Object Oriented solution will allow this to be done easily.
I expected The Ray Tracer and Ray Projection sections to be the largest and potentially the most difficult hurdles to overcome during the project, due to their potential size and complexity. It was also evident upon initial inspection, of how I would go about implementing these two sections, that they would use a large amount of similar code, i.e., the code to perform a ray trace and display things on the screen. Therefore the primary concern was to develop the Ray Tracer and get the code for it right before continuing, as other tutorials would reuse this code as well, such as Surface Physics and Collision Detection. After implementing the Ray Tracer and Ray Projection sections the remaining parts were to be reasonably straightforward with only time as a limiting factor.
The development methodology used, was to a large extent, an iterative approach. This was simply because the program was suitable to this particular style of development as different parts of the system can be developed independently of each other. It also helped to ascertain generally how long the system would take to develop as a prototype was up and running in the first few weeks of development. Using this approach, each component was rapidly designed, implemented and tested one at a time.
The program was implemented from scratch as there was no prior work to expand on. There are also no other readily available tutorial programs for ray tracing, however there do exist a number of websites  that explain the principles of ray tracing and can be used in conjunction with my program to enhance the userís understanding.