River Side

The final scene created; River Side

The final scene created; River Side

Digital artist Enrico Cerica gives us an insightful look into the process he used in creating his pictur-esque scene; River Side

When I started this project I didn't know precisely where I was going with it. I had no reference images, but I knew that I wanted to show some water and surrounding nature with a nice house in the middle.

One of the main challenges was to be able to render such a huge scene with only 3GB of video memory including geometry and textures. I also had to take into consideration the limitation of 64 RGB textures and 32 gray textures.

The house

After starting, I had several ideas in mind: a very old stone house, a modular house like the one I made for a previous project called Module house near the lake, but I finally reused some parts of a project to be finished and based on the Type Variant House (Vincent James Associates Architects).

Some ideas on the shape of the house, based on a Type Variant House style

Some ideas on the shape of the house, based on a Type Variant House style

The terrain

I first created the terrain (about 170x100 meters) with some hills based on a rocky geology. For the water, I thought that a river would be the best solution as it gave me the opportunity to create a non-closed perspective.

I used a Displacement map on the terrain with more details/subdivisions for closer parts, and less or no displacement for distant parts, to allow the exported geometry to fit within the 3GB video memory limit.

Creating the terrain within the 3GB memory limit

Creating the terrain within the 3GB memory limit

The landscape

For the far landscape I simply used billboards with a wide landscape image and an Alpha texture to make the sky part transparent.

This image was from cgtextures.com.

Using an image from cgtextures.com with an Alpha texture

Using an image from cgtextures.com with an Alpha texture

Water bump map

I didn't use a Displacement map on the water but simply applied two Bump maps, one Normal map for the global waves, and a Bump one for the trail behind the yacht and some local waves around the boat and the pontoon.

The water Bump map to create the waves

The water Bump map to create the waves

Mix materials
I used the Mix Materials node to mix those two maps. Depending on the view and the light direction, the mix value should be adapted to get the best result.

Using the Mix Materials Node to mix the maps

Using the Mix Materials Node to mix the maps

The greenery
I needed several trees to create the surrounding vegetation with a natural variation - bushes, grass and some small plants. I reused some previously created trees and created some new ones. I used about nine different trees, one bush, one grass base mesh and several small plants spread in the grass for the near views.

Trees, bushes and some plants are homemade using a tree generator python script

Trees, bushes and some plants are homemade using a tree generator python script

Weight-painting

To scatter all that greenery over the terrain I used the Blender particle system. I defined one particle system (by tree/plant) to be scattered, and used weight painting to control its density on the terrain. This involves some randomness, so for some of them I manually placed instances for better control.

Using the Blender particle system to randomly scatter the greenery

Using the Blender particle system to randomly scatter the greenery

Textures

To reduce the amount of textures used by Octane (the renderer) I usually try to group several images in one single texture. That's what I did for the trees, as they had several different leaf textures. In this case, I used 13 textures instead of 94.

I also used the appropriate texture resolution, for instance I didn't use high res textures for distant objects. This can dramatically decrease the amount of memory used, though the file size is not relevant to the memory occupation - a fully white image that will result in a small file size will occupy the same memory space as a complex colored one with the same resolution!

The variations of leaf texture used in the scene

The variations of leaf texture used in the scene

Rendering

Octane Render Standalone 1.2 is quite fast for outdoor scenes. The rendering time varies from 30 min to 1h, and here, some images were rendered in 3840x2000 in less than 1h.

I mainly used direct lighting in Diffuse mode as it provided the same results as path-tracing for exterior renders, but was much faster.

For the rendering process, do not expect to render the whole scene with only 3GB of video memory, so nothing magic here, you must deal with the geometry, the textures and the rendered image size. I created scene manager python scripts for Blender to be able to:

• hide objects that aren't visible and to help export parts of the scene separately
• reduce and even remove any subdivision for distant objects based on the used view
• easily use instances and scattering for any duplicated object

During the rendering I also tried to use the appropriate textures resolution (I have all of them in low and high resolution) to get the best compromise between memory usage and required precision.

 

Rendering the scene in a mix of high and low resolution, using a python script

Octane standalone nodes

Huge scenes require complex node graphs. I exported groups of objects separately from Blender and used Octane group nodes to setup the scene with the required objects for the selected view. It helped me to limit the render geometry and better deal with the texture limitation as the materials for non rendered objects won't be loaded.

For huge scenes like this one I used to export separated OBJ files for the scene parts that I group in the Octane nodes interface. For instance, I exported in separate OBJ files, such as the terrain and the water, the house, the yacht and boat, each tree/plant and their scatter settings and so on. I then created the groups I needed for each shoot, corresponding to a specific point of view. This resulted in a messy node graph, which should hopefully seem simpler with the next upcoming Octane version.

 

Blender to Octane export script helped in exporting objects separately from Blender

Grouping parameters
For each view corresponding to each rendered image, I grouped all the required parameters (like the camera settings, the lighting system (sun and HDR) and the exposure). I then selected the appropriate set of parameters easily later on.

As a tip: As Octane doesn't allow you to use HDR and sun light simultaneously, at least for now. To overcome this, I rendered a sun-lit image and an HDR lit one and mixed them together using Gimp, by playing with the Alpha channel and Eraser to get more natural lighting.

 

Grouping all the parameters helped with the organization later on

Post-processing

I used Gimp as it fully satisfies my requirements. I mainly used it to mix the two images rendered using sun light and HDR. The process was very simple as it consisted of playing with the Alpha value to more or less mix the two layers. I also used the Eraser to increase the visibility of the lower layer on some parts of the image.

I also used it to alter the lighting by changing the Contrast, Saturation and Luminosity. For some images I added Bloom, (mainly on the sky behind the tree branches). I also played with the colors to get a more painterly effect on some images.
For this kind of post-processing, Gimp really rocks, though for some, more sophisticated treatments like adding DOF or Chromatic Aberration or other tools may be more appropriate.

Using Gimp to post-process the images mainly for the mixing of sun and HDR images and improve the brightness and contrast

Using Gimp to post-process the images mainly for the mixing of sun and HDR images and improve the brightness and contrast

The final image

Finally, thanks for viewing this ‘Making of'. I hope it helped you better understand the work flow behind this project.

  Shots of the final scene

Shots of the final scene

Related links
For more from Enrico Cerica, check out his website
Download Blender for free
Visit CGTextures for all your texturing needs