Time

Level

Tools & Techniques

Linden Stirk's Kowloon Alley is a meticulously detailed image inspired by the streets of Hong Kong. Here he shows us the process behind it, from the initial block out to the final render...

Discover how Linden Stirk created this vivid street scene

Step 1: Block out

This project started as an assignment for a college class. The main requirement was to create a 3D render of an alley. I used Maya, Mental Ray, and Photoshop.

After collecting reference images online, I was ready to start the block out stage. I referenced several pictures of alleys and streets in Hong Kong to use as a base for creating this environment. I modeled the basic forms with enough detail to see what was going on, and I experimented with the layout, different camera positions, and the overall composition. I did not worry about UV maps, the topology of the geometry, or lighting.

This was a quick presentation of the concept without spending too much time and energy

Step 2: Modeling

I needed to save time by making the various wall sections modular. I made sure that each section was the same size with their UVs in the same position. This way I could move around different pieces and they would fit into place. The only problem was maintaining a seamless texture join between the upper and lower floors of the building. If there was a little discrepancy between the various textures, I made a best guess in Photoshop and tweaked the position after seeing it in Maya's viewport.

Since this scene was so large, adding smooth bevels around edges created too much detail which slowed rendering considerably. My solution was to use the Mental Ray RoundCorners node which was applied to the bump input. This node simulated bevels to the geometry during the render.

I created a collection of various AC units, boxes, windows, awnings, pipes, and other objects to populate the scene

Step 3: Texturing

As with the geometry, I also created several different versions of the wall textures for more variation. I created over 200 materials using Mental Ray's energy conserving mia_material_x shader. For each material, I created a diffuse, bump, and specular map.

All of the objects have UV maps. I used a combination of planar mapping and automatic mapping, but I sewed the edges to minimize or eliminate seams.

Each texture has many layers starting with a base layer and additional layers for damage, stains, dirt, and other details

Step 4: Lighting

I used Mental Ray's Physical Sun and Sky as a starting point. However, since the two walls were so close together, I had trouble getting light inside of the alley. I decided to treat the scene as an interior environment. I linked the directional light via a portal light node to area lights on the top and the sides of the alley to force light inside.

A mib_cie_d3 color temperature node was attached to the Color Multiplier on the area lights, and an exposure node was linked to the camera's Lens Shader.

Physical Sun and Sky directional light and three area lights

Step 5: Linear workflow

It is important to make sure that the scene is setup with a linear workflow. Usually, textures files are in the sRGB color space with a gamma of 2.2. However, Mental Ray expects these files to be in Linear sRGB with a gamma of 1.0, and so it will apply a gamma correction of 2.2 on the final render. If the scene is not setup properly, renders will look washed out because the textures are in effect being gamma corrected twice.

There are a few ways to maintain the correct gamma. The first way is to enable Color Management, but this requires adjustments in the render viewer and any exposure nodes as well. My preferred method is to apply a gamma correction node to all textures and set the gamma to 0.4545. I like this because there are no other settings that I need to alter. I use a script called JJJ Gamma Tools that allows all gamma nodes to be added or removed automatically.

The Physical Sun and Sky is a quick and easy lighting

Step 6: Importons sampling

Instead of traditional photon mapping with Global Illumination and Final Gather, I used Mental Ray's importance sampling technique with Importons (virtual particles) and Irradiance Particles. This drastically improved render time and allowed a 4K image to render on an older computer without crashes or extremely long delays, and without sacrificing quality.

In a pre-render stage, Importons are fired from the camera and gather illumination information in the form of Irradiance Particles. These particles are sampled based on how important certain areas are, with brighter areas receiving more rays than darker areas. This makes sampling more efficient and can significantly reduce render times for large, complex scenes. This method also tends to reduce noise and splotchy patterns on the rendered image.

Importance sampling is easy to set up. Irradiance Particles require Importons to be turned on

Step 7: Rendering

After experimenting with the indirect lighting parameters, I was ready to render the final image. For anti-aliasing, I used the Lanczos filter with the legacy sampling mode with a minimum 4 and maximum 64 samples per pixel. I needed to make sure that the wires, antenna, and corrugated metal were sharp.

I rendered a separate pass for Ambient Occlusion and Z Depth to help with compositing in Photoshop

Step 8: Compositing

I wanted to make the final image brighter, more vibrant, and visually appealing. I was going for a more stylized aesthetic, rather than trying to aim for photorealism. Therefore, I took the same liberties with the compositing as I did with the signs and lanterns.

I started by adding a simple curves adjustment for contrast and color. I added some depth of field, grain, a vignette, and a tiny amount of chromatic aberration. I applied the Z Depth pass with a Soft Light blending mode to add some atmospheric lighting farther down the alley, and I used a soft brush to paint in some adjustments. Finally, I put a subtle lens flare at the top around the foreground lantern to add a little more glow. Done!

This is the raw rendered image with the Ambient Occlusion layer multiplied on top. The image is too dark and desaturated