Concept

The goal for the sene is to look as similar as the street in Japan at night. Since I've never visited Japan, I find my inspiration from images online. One of the main aspect the scene focuses is how the light contrast between the warm-orange and the cold-blue color can make a good aesthetic together. Other objects such as buildings, person with umbrella, etc are added to have scene components identical to Japan environment.

Process

zoom

Objects

There are in total 17103 faces in objects that need to be rendered for the scene. Most of the objects has cook torrance material. For the floor, the scene uses the floor bump-map from previous assignment 8. main/a_competition.cpp, rt/primmod/bmap.h, rt/materials/cooktorrance.h

zoom

Lights

There are one AreaLight, 4 PointLight, 5 SpotLight and 2 DirectionalLight used for the scene. The lights are focused on two contrast colors, which are the warm-orange color and cold blue color.
rt/lights/arealight.h, rt/lights/pointlight.h, rt/lights/spotlight.h, rt/lights/directional.h

zoom

Wet Material

To make it more realistic, the floor has to have a wetness-after-rain feeling. In the floor bump map, the combine material of fuzzy mirror, glass, and cook torrance materials are used.
rt/materials/combine.h, rt/materials/fuzzymirror.h, rt/materials/glass.h, rt/materials/cooktorrance.h

zoom

Rain

For the rain effect, I implement motion blur on 1500 spheres that are randomly generated. Although the overall process sounds very simple, it took quite a good amount of trial and error to achieve the end result. rt/motionblur.h

Rendering

Prior to the rendering, the objects that are in the scene were cropped and downsized using the 'decimate' tool in Blender. Although this reduces the detail, it reduces a significant amount of rendering time. After re-arranging the objects and implementing some effects into the scene, the final rendering with high resolution setting took around 4 hours. With low resolution setting, it took around 2 hour. The rendering is done with 6 threads in Intel i7-8750 16GB RAM. A very simple naive multithread is implemented in rt/renderer.cpp.

Features

Motion Blur

Multi Thread

Gamma Correction

.

Bump Mapping

Lighting

Combine Material

Source

Source for 3d Models

Japanese House (middle) - sketchfab
House (left) - sketchfab
Person - cgtrader
Umbrella - sketchfab
House (right) - sketchfab