CPSC310A Assignment 13 - Bounding Boxes

Due Monday March 26


Modify your C++ ray tracing program to include axis aligned bounding boxes to speed up the rendering of obj models. A bounding box can speed up render times because it is possible to avoid intersection tests with every triangle in an obj model if a ray does not intersect with the model's bounding box.

Create a bounding box class. The class should have two points, min and max, representing the minimum and maximum xyz values of all vertices withing the bounds of the box. The bounding box constructor should initialize the two points to positive infinity and negative infinity. The model class should be modified to include a bounding box as a member value. Whenever a triangle vertex is added to a model the bounding should be expanded to encompass the new vertex, if needed. The bounding box class should also have an intersect method that returns the parametric distance of the closest intersection of a ray with the bounding box. Finally, the intersection method of the model class should be modified to first test if the ray intersects with the model's bounding box. If it does not intersect, then the function can return false without testing for intersection with any of the model's triangles. If it does intersect, then the function can return the result of testing for an intersection with all triangles.


Tar your code in a file that contains your name and submit it on the course Inquire site.