RC Project by Matthias Höschele and Klaas Boesche
As the microTrace framework contained a lot of code for historical reasons, did not prove to be easily extensible and we wanted to learn the most from this project, we decided to build our own framework.
In the following we will explain the general structure and give information about our scene.
Architecture
We wanted a system that was flexible enough to allow for easy integration of new features, but did also distribute the concerns in a way such that development could focus on little changes. (See the Shader classes from microTrace for a contrary approach.)Many necessary classes are thus grouped into hierarchies of abstract classes that provide a common interface:
- Tracing Strategy - An abstract base class for all classes that generate an image from a scene and a given camera.
- BXDF - A base class for any BRDF.
- Material - The base for any surface shading. It provides a BRDF-like interface for sampling and allows non-physically based materials to be used. It is decoupled from actual tracing.
- Traceable - A hierarchy of classes that can be traced, applies to Scenes, Objects (meshes/volumes), Primitives and also acceleration structures.
Scene
We sadly could not show off all the features we implemented, as the time required to render them (Photon Map, Displacement Mapping, ..) would have needed much more than was available. The building itself, the stairs and upper floor handrail and lights on the wall were created by ourselves. Most of the plants come from 3dplants.com. The dinner table lamp can be found here. Most other models were taken from Scopia' resources, the rest came from the free models at TurboSquid. The pictures on the wall come from Mehmeturgut at deviantart(DA), absense stock at DA, and sxc.hu #1, sxc.hu #2.