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).