Making of Urban Apartment by Enrico Cerica

Enrico Cerica published his Urban Apartment personal project renders on the forums a month ago. He made an impressive set using the Octane Render GPU application and I was very intrigued by that. It is not the first time I’ve seen work being done with Octane Render… you all remember Bertrand’s work with it too, but this time Enrico showed us a complete apartment model with lots of modeling and texture detail in it which we all know is an issue with GPU based ray-trace engines due to memory limitations. I asked him to share more information with me about his work and the way he manages his scenes and that turned into this article. Enjoy!

Author : Enrico Cerica

Enrico Cerica is working in the IT field for several years as his main job. 3D is a hobby of his, but he also works as a freelancer and have the chance to do some professional projects from time to time.

Introduction

I’m pleased to share one of my last personal projects experience with Octane Render from Refractive Software.

950

My goal was to create a Parisian like apartment with some modern furniture but keeping some “old style” touches like wooden parquet, windows, metal balcony or fireplace.

This is not to be considered as an in-depth Octane Render tutorial, and I will focus on several techniques I used to render indoor images using Octane Render and the Blender to Octane Redner exporter.

I will also talk a bit about the trick I used to improve the production during the export process from Blender to Octane Render.

961

Modeling

I mainly used Blender 2.62 for modeling, to create UV maps and for the texturing. I used several modifiers like subdivision, displacement and arrays.

For the carpet I used a displacement map on a subdivided (4x) mesh. As Octane Render doesn’t support displacement yet, the meshes should be displaced in the modeling application before the export process.

955

I also used displacement for the plaster over the ceiling chandelier.

Displacement is an easy way to avoid the modeling of such complex geometries but it consumes a lot of video ram and I try to limit this to one or two objects in a scene. For the plaster I probably should have backed the texture as a normal map.

I also used Marvelous Designer for modeling quite all the clothes in the scene, like the…

  • Curtains
  • Bed covers
  • Pillows
  • Clothes

I finally used a self made blender tree generator script to create the Ficus plant, this is still a blender 2.49 script and I use it to create all my trees.

Except the fireplace which is a mix of several free models, the statue and the shoes, everything else has been modeled by me.

Texturing

The texturing process is probably the biggest part of this work, mainly for the UV mapping. Some objects are really hard to UV unfold even if Blender provides one of the best UV mapping tools out there.

Most of the textures are self made or grabbed over the CGTextures. I tend to keep them in the highest resolution to be able to make detail shots near elements.

I usually modify the textures to make them tileable and often stitch several images (when provided) to create a none repetitive map… the wooden floors for instance. I also create bump and spec map based on the diffuse map.

965

Images – all in onE

To reduce the amount of single images required for textures and to limit the impact of the Cuda limitation I simply combine several images in one single big image. I did that for the books and have about 3 big images including each about 30 covers, so with 3 images I can handle about 90 covers.

Ok… this is not an easy task, but it overcomes a GPU / Cuda limitation and save on resources, so once done… it’s very useful.

all-in-one-images-texture

Rendering

Hardware used

The hardware configuration I used is as follows :

  • Workstation is a 64bit system.
  • Processor is an i7 at 2.83Ghz.
  • 16 GB of memory are required to fill the 3Gb memory of the video card without paginating, the Octane voxelization process needs much RAM.
  • 2 x Gigabyte GTX580 with 3GB VRAM – used for the rendering
  • 1 x Asus ENGTX480 with 1.5 GB VRAM – used for the display
Rendering software used
  • Octane Render v2.58c
  • Blender 2.62 to Octane Render script version 1.16
Octane rendering process

Octane Render provides several rendering engines, Path Tracing and PMC produce the most realistic results as they are physically correct, they handle indirect light, produce caustics and whatever any unbiased render engine would produce.

Direct lighting mode 4 is a bit faster than Path Tracing / PMC and mixes ambient occlusion and indirect lighting controlled by an additional parameter, I often use it as it produces some really nice results comparable to what could be achieved with Path Tracing but faster and in my opinion with better shadows in some conditions, though it is not physically correct and may not handle all physical properties like caustics.

Direct lighting mode 3 is just an ambient occlusion rendering, so no indirect lighting, no caustics but way faster than anything else, a neat image could be rendered in about 5 min and even less where the other engines would require 5 hours!

Other render engines may be useful as they produce a Z depth map, colors Id’s for objects in the scene and even a normal map. Z depth map could be very interesting to control depth of field in post processing, though I didn’t use any of them for this project.

I use to render an image with Path Tracing or PMC using an HDR map for lighting and the same view with direct lighting mode 3 using sun for lighting and mix them during the post processing. For now this is the only way to illuminate a scene with sun over an HDR map, this will be illustrated later on.

Octane Shaders / Materials

My Octane Render shaders are quite simple, I usually don’t use the node system to create them. I let Octane Render create the materials from the MLT file (created during the .OBJ export process) and adjust them to fix specularity and bump values, convert specular to glossy transparency for windows, etc.

I rarely use procedural textures as it’s very hard to get realistic results with them. So all my textured materials are based on image maps.

I tend to use low spec and bump values to avoid too much fireflies, I also often use a mix of diffuse + glossy material for shaders like porcelain or plastics to reduce even more the glossiness. I noticed that in some situation glossy materials tend to become dark, using such mix shader may also help to avoid it.

Pillows

Mixing material may also be useful when for instance two bump maps are required on the same shader. I used that on the pillows. One bump map to produce additional wrinkles on the edges and another one to produce small wrinkles on the global pillow surface. By the way same result may probably be achieved using two texture nodes on a single material.

shaders-001

shaders-002

Here is the material mix for the pillows:

shaders-003

Buildings environment

For the buildings around the scene, I used a cylinder. I first stitched several images grabbed over the great CGTextures site to get an image as large as possible.

shaders-004

I then used this image to map the cylinder, it doesn’t cover the whole cylinder surface but enough to render a 120° view.

shaders-005

To let the sky appearing over the buildings I created an alpha map used to make the sky part of the building environment map transparent.

shaders-006

Windows and walls

Instead of using specular material for windows I rather use glossy material with an opacity factor of 0.1 – 0.2 and a reflectivity of 1.0 This is really useful to reduce the noise and fireflies as glossy transparent material doesn’t produce any caustic, specular material produces caustics and this may generates lot of noise and fireflies in indoor scenes.

Don’t forget to set the alpha shadows to let the light entering in the room through the windows.

 

windows-walls-001

windows-walls-002

Light is the main concern in indoor renderings, all the holes allowing the light to enter are welcome, so don’t hesitate to remove/hide walls when it is possible. For this scene, I split the ceiling in several parts and used one material for each of them, this allows me to make non visible ceiling part transparent (opacity = 0) to let the light entering. The same can be done with walls.

windows-walls-003

963

Post Processing

For post processing I mainly use two products, a free version of neat image which helps me to reduce the residual noise and Gimp which is really sufficient for my needs, I use it for mixing process, to adjust colors and lighting curves.

Not much is done other than that…

post-pro-mix

Here are some final images…

952

968

Trick for complex scenes

The scene is quite huge and it was very difficult to manage it in Octane Render for several reasons.

  • Big resulting OBJ file which requires a long import / voxelization process.
  • Exceeding of video memory limitations.
  • Too many images were required to handle all the textures used in the scene considering the Cuda limitation (32 x 8 bit images and 64 x 32 bit images).
  • Too much memory used to handle hires images.

Blender interface doesn’t really help to manage complex scenes, layers management is limited, spreading objects in different scenes is not easy or user friendly and by the way it’s impossible to link a scene context to a camera.

As many of the scenes I’m creating have to face those limitations I quickly had to find a way to reduce the amount of exported data from Blender to Octane in a simple and reproducible way. So I developed my own Blender script which helps me to save a scene view after hiding some objects and setting some modifiers like subdivision, arrays or particles system.

970

For instance, it’s really useless to have a subdivision factor of 3 or 4 on a displaced carpet if this one is so far than those details wouldn’t be perceptible, a factor of 2 or even 1 may be sufficient. Same for particles used for carpets or grass, if for a close-up we need about 30k instances for a carpet, if it is far, 10k or even 5k may do the job.

How does it work?

I select a camera which basically will give me an idea of the overall area I will render. I just hide all non relevant objects, reduce the subdiv’s factor for far objects, same with particle system and once I have the scene layout corresponding to my render area I save this situation under a suggestive name.

I can do that for each view I would like to render and can simply recall this configuration later on without having to redo all the work for hiding and setting objects and modifiers.

966

I hope you enjoyed this article, and that it gave you a glimpse to what working with Octane Render is like… and what you can achieve with it.

Go ahead and ask away anything you like in the comment section below…

17 replies
  1. sdwhitton
    sdwhitton says:

    Hi, lovely images! But still don’t get how you comped the two images… Is the sun pass put over in ‘Overlay’ mode? And the HDRI render colourised to give it that golden look?

  2. tomglimpse
    tomglimpse says:

    Great article!

    This is one of the best works i’ve seen in Refractive (creators of Octane) forums. Thanks for author & Ronen for this article!

    Overcoming Cuda/Hardware or Octane’s own limitations sometimes is a hard thing to deal with. I really like the way You manage to combine HDR in PT with Direct lighting, the end result is beautiful (overall the concept is not new as guys use AO pass to enhance renders quite often, but You’re certainly the first one tried this technique in OR =)

    Hopefuly soon we’ll see optimised build for Kepler based GPUs on Cuda5 & some of those limitations (speed, texture limit & available vRam..) will be less tight..

    Looking way forward, this engine is very promising. & After release of instances we’ll probably see more and more of it’s usage in archviz.

    Thanks once more for interesting article!

  3. RobSteady
    RobSteady says:

    Great images! What about rendertimes?
    I see great potential in Octane but for now there are lots of workarounds a too many limitations to use it as production renderer. Maybe in one or two years this could be a serious alternative to V-Ray…
    What do you think about it?

  4. Ronjart
    Ronjart says:

    Great insight and some useful tricks. I especially appreciate to see how you are concerned about your budget by using free programs (Blender, Gimp) and a 99 Euro Render. It’s encouraging to see that it is possible to create this quality of imagery for so little money (granted you have about 1500 $ of GPU in your system :)! Especially for freelance artists, that offsets the shortcomings of the octane render compared to a really expensive program like vray.
     
    Thanks!

  5. enricocerica
    enricocerica says:

    Thanks for wiewing and commenting and thanks to Ronen for giving me the opportunity to share this experience.
     
     @sdwhitton sdwhitton:Well the process is really simple, I place each image on a layer and play with the alpha slider to control the mixing, and a bit of eraser for some regions, that’s it.
     @tomglimpse tomglimpse:yep, GPU rendering is still young and requires some tricks to come out with satisfying results but dispite of those limitations I really enjoy it.
     @RobSteady RobSteady:Well it depends on what you are expecting, I’m sure Octane could already be used for production workflows not only for still images but also for animations. Memory and texture limitations are indeed a bottleneck for some projects but I’m really surprised by what a 3GB card can render.
     @Ronjart Ronjart:Yep, I used VRay on previous projects and was really happy with it, I probably will come back to it for some projects but it’s also part of the challenge to use free products and pushing the limits is also a good way to encourage the free commuity 😉

  6. inkimiaei
    inkimiaei says:

    Thanks for very nice renders and tutorial … can you explain what was the material that you used for the white floor tiles? how did you made the beautiful dirty spots and the reflection on the floor

  7. kathy116
    kathy116 says:

     It’s encouraging to see that it is possible to create this quality of imagery for so little money (granted you have about 1500 $ of GPU in your system. Thanks for sharing.

  8. MartinLovstrupJensen
    MartinLovstrupJensen says:

    Really nice renders! I like the bump maps for the pillows! Do you have any PS tutorial on making those?

  9. enricocerica
    enricocerica says:

     @inkimiaei inkimiaei:I used a texture from cgtextures.com and created the bump and the spec maps, the spec map produces this nice fx
     @kathy116 kathy116:Yep, quite a cheap solution but indeed with about 1500 $ for the GPU.  By the way the other render programs require very powerful machines with probably a similar price.
     @MartinLovstrupJensen MartinLovstrupJensen:I used a photo of wrinkles and repoduced it with GIMP to get this result, so really simple and efficient 😉

  10. enricocerica
    enricocerica says:

    Thanks again to everyone,
     
     @inkimiaei inkimiaei:I used a texture from cgtextures.com and created the bump and the spec maps, the spec map produces this nice fx
     @kathy116 kathy116:Yep, quite a cheap solution but indeed with about 1500 $ for the GPU.  By the way the other render programs require very powerful machines with probably a similar price.
     @MartinLovstrupJensen MartinLovstrupJensen:I used a photo of wrinkles and repoduced it with GIMP to get this result, so really simple and efficient 😉

  11. Ben Goldstein
    Ben Goldstein says:

    I saw your original post on the Octane forums, great work!  I get around the texture limits with post processing, but it’s great to see what can be done with good scene optimization.  I am going to have to look into writing some of those scripts for saving Blender scene settings. 
     
    As far as the $1500 GPU comments go,  you can get 3 gtx 480s for around $600 now, thats over 1400 cores.  You would need to invest in some cooling solutions as well, but it certainly doesn’t have to cost $1500 to get fast render times.
     
    Regards,
    Ben
     
     

  12. AliH
    AliH says:

    wow…amazing with octan render …what system render info?…like this cpu …vga 😀 tnx:)

  13. rombout
    rombout says:

    Will that script also work with other applications? I would like to test this with Thea Render

Comments are closed.