Conceptual Idea
We decided to build a living room scene, since our goal was to create a rather realistic looking image.
In a living room scene, you do not have to create some complex 3D-Models to get a nice looking image,
due to most rooms consist of a rectangular shape. From the lighting perspective, it is easier to
achieve an awesome looking indoor scene instead of mimic the sunlight that is somehow disturbed by clouds
and the atmosphere. Furthermore outdoor scene are often looking to 'clean', so some sort of 'dirt-shader'
is needed. Nevertheless our indoor scene tries to prevent flat, single colored surfaces, too. We use
procedural texturing to get as much as possible irregularities
within our image. To make the room less inanimate, we added some objects like chairs, tables and toys
and a door slightly opened.
Scene Composition
The room consists of large triangles composing the walls, the floor and the ceiling.
The wall behind the camera and the ceiling have holes. To create lighting effects an area
light source is placed behind these holes.
The steps are build out of boxes which follow a line on the wall.
All the other objects were added as instances to easily modify them within our
ray tracer.
We use blender, but mostly to make sure where the object was rooted, so that our
instancing can take care of the rest.
We also split the chairs from the table, to be able to put them in different
positions. The door was opened to let light shine through.
Dice:
http://www.turbosquid.com/FullPreview/Index.cfm/ID/740795
Pokeball:
http://www.turbosquid.com/FullPreview/Index.cfm/ID/668789
Toy train:
http://www.turbosquid.com/FullPreview/Index.cfm/ID/542258
Door:
http://www.turbosquid.com/FullPreview/Index.cfm/ID/667419
Glass table:
http://www.turbosquid.com/FullPreview/Index.cfm/ID/639963
Couch:
http://www.turbosquid.com/FullPreview/Index.cfm/ID/782969
Table and Chairs:
http://www.turbosquid.com/FullPreview/Index.cfm/ID/500989
Football texture:
http://www.theraspberrybutterfly.com.au/store/pc/catalog/depositphotos_3742308_xs2_1899_detail.jpg
Lighting
We use area light sources to illuminate the living room. These kind of light sources have the advantage
of creating soft and smooth shadows of objects. In contrast to point-light sources, they achieve
lighting in a much more realistic way. As mentioned
above, arealights are placed behind the
wall, that resides behind the camera as well as in another room on the second floor. An additional area light source
is placed behind the door. One remarkable effect is the light, shining through the gap between the door and the floor,
as you often can see in real life by yourself.
Procedural Shading / Perlin Noise
Instead of using precomputed textures, we tried to create them all by ourselves. Here we relied mostly
on perlin noise. The walls have a perlin noise with two different nearly white colors as input.
On the floor, we used a procedural texture, which decides, to either return dark for the gaps between
the parquet pieces, or one color of the given wood textures.
The wood textures are a special case of perlin noise, similar to a marble texture mentioned at:
http://www.noisemachine.com/talk1/23.html.
The different kinds of wood are created by increasing the effect of the x-component or the
noise on the result. The final wood texture was created by ourselves with some fine-tuning to
get the texture look like wood as much as possible.
Reflection & Refraction
As in the real world, our scene contains light reflections and refractions. The refractions can be seen
at the glass table on the right. Reflections are visible on the floor, the table and the legs of the chairs.
Here our ray-tracer implements the properties of a fuzzy mirroring material.
The sofa reflects the incoming light, too and appears white at some spots. As you can see at the glass
table on the right, our ray-tracer can mimic glass properties as the table is transparent and reflects
the light (e.g. colors of the dices) at the same time. At some places, the glass tables appears a little
bit coarse. This can be reduced by more rays per pixel as described in the following section.
Computation Time
Our rendered image has a resolution of: 960x540
One pixel was generated by shooting 1000 ray into the scene.
Because of the many reflections/refractions as well as the huge amount of procedural textures,
rendering the image took very long.
On the floor for example, we have to compute for a single ray
the texture value, where the ray hits the floor. This is done by performing the perlin noise
computations. Furthermore an additional ray is generated, that results from the reflection of the floor.
If this ray hits a wall, the wall color again is computed via procedural texturing.
Due to the complexity of computing a single ray, as well as the high amount of shooted rays,
rendering took about 5 hours (i7 dual-core CPU using 4 threads).