Authors:
Andreas Zins
Marc Pätzold
BVHStructure
BVHStructures are used for an efficient sorting of the primitives. We can subdivide a scene into
subscenes, or subnodes, each containing several primitives. BVHStructures are cheap to build, but somewhat slower than other
acceleration structures.
However, if a scene contains continuous changing objects, BVHStructures can improve the perfomance, because of their
cheapness. When there are changing objects, the accelerationstructures have to be rebuild.
BVHStructure
SAHKDTree
SAHKDTrees are optimized KDTrees. Normal KDtrees are build, by splitting the scene in the middle and
creating two subtrees. This structure can have a bad wors case runtime because the resulting tree cab be very unbalanced. A
SAHKDTree generates a search tree that is balanced an therefore has only logarithmic depth.
SAHKDTree
Refractive and Reflective Transparancy
Refractive and Reflective Transparancy can be used to model glass and suchlike structures. It is used
to define how the light gets warped when traversing the glass. Glass can behave just like a lens and distort the objects
behind it. Also, glass can have different levels of opacity and therefore we have to adjust, how much of the light gets
absorbed or reflected at the surface and how much light can pass through. We have two shaders, one to compute the reflections
and one to compute the translucency of the object.
ReflectiveEyeLightShader
TransparentPhongShader
Fractal Geometry
Fractal Geometry is a way to create models, consisting of loots of polygons, automated and randomized.
In our project, we used a fractal algoritsm to create a mountain. The algorism will create every time it is used a different
mountain because we used a random number generator. to create every time the same mountain, theses randomised values hav to
be saved in another data structure. Other variations of this algorithm can be used to create plants. The algorism is based
upon a basic model. The basic model for a mountain couls be a triangle or a box. The basic model is then subdivided and each
division creates triangles at the edges of the existing models. There are parameters to define the roughness, size and the models'
detail level.
Fractal Geometry
Constructive Solid Geometry
Constructive Solid Geometry, CSG, can be used to create new models by combining existing ones. Models can
be combined through addition, subtraction or intersection. If we add one model to another, the result will be the outermost
surfaces of both models. Adding two spheres would result in a snowman-like model. Subtracting one model from another removes
one model's surface from the other and intersection returns only the surface that both models have in common.
Constructive Solid Geometry
Multithreading
Multithreading is used to distribute the raytracing computations among several CPUs. To do this there
are consumers. Every consumer has all the data needed to render the scene and renders a block of pixels. There is a pool in
which everything is stored that has to be rendered. After the consumers have been initialized, very consumer takes a block of
pixels from the pool and renders them.
Consumer
Consumer2
Interactive Application
The interactiveness of our application is done by listening to keyboard events and then moving the
camera in the according direction
Interactiveness
Stereo Rendering
Stereo rendering is used to create a 3D image, by overlapping two pictures. The pictures show the same
image from different viewpoint and they also differ in their color. When viewed with red/green glasses, each eye percieves
only one image and this creates a stereo view.
Stereo