Mar 11, 2012

Rendering an exterior using vray

The scene consists of a round patch of grass, the house in the center and trees surrounding it. They had to be close to each other so you couldn't see through them, creating the impression of a forest. For every camera view, I added, removed or moved trees and foliage to shape the composition.

The whole scene


Grass cut in patches

The grass is actually very simple and similar to the grass most people produce with displacement. The key is having a lot of displacement subdivisions and a good noise map. I used VrayDisplacement modifier, set to 2D mapping. The amount, controlling the length of the blades was different for every camera - shorter for close-ups and longer for broader views. The very detailed look is mainly provided by the resolution set to 3500. This also varied thru the different scenes, but generally I kept it to a very high level of above 2000.

Grass displacement settings

Of course, as you would imagine, this generates a huge amount of polygons which had to be rendered and I shortly ran out of memory even on a 6GB RAM machine. The problem was solved by cutting the whole grass field in patches. Then I would turn on the displacement only for those seen in the view. I also added some bumps to the surface which was displaced to make it more random. I did this by subdividing the grass surface and then applying a standard displacement modifier, with a smoke map in it. Just next to the building or the trees I added some extra, untrimmed grass blades. Each one is a VrayProxy, because I had to save every polygon I could.

The map for the displacement is a plain noise map. You just have to set it up properly, so there aren't any bright white dots which make the grass look like a carpet. You need just the right balance between the high and low settings and the right size, which in my case was the smallest possible.

Grass bumps

Displacement noise map

Most of the trees were modeled in Onyx Tree and two were made with the Bionatics plugin, because it provides very detailed leaves. Making trees in Onyx Tree is quite simple, furthermore simplified by the pre-saved parameters that come with it. The hard part part involved the leaves. Since I used SSS material (More on that topic in the Materials section), I couldn't use opacity maps, so I had to have leaves made by geometry only. Onyx Tree does not support complex leaves, which is OK in most cases, but not in this one. I needed the leaves to be well shaped and to have volume.

Tree bark displacement

This meant I couldn't use the original leaves, imported from Onyx. In the scene I had trees for background and some better detailed for foreground and close-ups. The leaves on the background trees I left almost as they came from Onyx Tree. The only thing I did was to add a shell modifier to add volume instead of having just a surface (Why, you'll find out in the Materials section). Sounds easy, but it isn't. With the thousands of leaves these trees had, that operation turned out to be quite heavy and it had to be done in pieces. All the leaves were in a single object, which I split to several parts. This let 3dsmax apply a shell modifier to each part without freezing. Then I attached them back together. Things got even harder with making the detailed trees. They had a replacement of leaves. I imported those models with square leaves from Onyx and then scattered a highpoly leaf model over the entire low-poly square leaves object, deleting the distribution object.

High poly leaves

Low poly leaves

Onyx tree and Bionatics produce pretty good trunks and branches. As far as geometry goes they give you all the subdivisions you could need. There was, however, some tweaking and model enhancement I did to one of the trees, mostly because I needed it to be thicker and more detailed since it was taking a central part in the composition.

Tree bark

The fine detail of the bark was added with VrayDisplacement. I tried to have displacement on all of the trees, but it didn't turn out to be a good idea, because the amount of memory this took was too much. I had to restrict it to the closest trees to the camera, or even to some of the boughs and branches. The thinnest branches didn't need any displacement and disabling it freed a lot of memory. You should always be very careful with VrayDisplacement. It's best if you make sure that only objects or parts of objects, that are in the render frame have displacement applied to them.

One of the best thing with these parametric tree generators is that they give you UV coordinates both for the leaves and the trunk/boughs/branches. You can then easily map your selected texture by adjusting its size and position.

After I've modeled the trees I had to convert them to proxies, so I can copy every type multiple times and shape a forest. What I did was, instead of making a single proxy, I made a group of two proxies for every type of tree. One proxy for the leaves and one for the trunk and branches. The purpose of this was to let me replace the trunk proxy with its mesh equivalent, so I could apply a VrayDispl modifier to it when needed. This way I could choose the close trees and add displacement only to them. You can't use VrayDispl with proxies.

Tree proxies

Every large tree had over a 1,000,000 polygons and there were a total of around 5 large trees and 5 more smaller trees or bushes. I don't have an accurate number for the total polycount of the scene, with almost everything being a proxy, but as the scene is the counter shows 13.6 million polygons. It isn't much at all, but the most of the final polygons come from the displacement of the grass and the tree bark.

For grass material, I used a Vray2SidedMtl. As Front material, in the 2Sided, a simple VrayMtl was used, and the translucency color is a 140 140 140 gray. In the VrayMtl I had only a diffuse texture and some opacity added with VrayColor with a grey at 140 140 140. The use of 2 sided material and the lowered opacity gave the grass a bit softer look. To the grass patches that had no displacement, I gave the same material, but darker and opaque because they get reflected and take part in the GI calculations. Displaced grass gets darker than just textured, so I had to even them.

Since the main material is see-through I had to put an opaque plane under the displaced grass. It had the darker, opaque material.

The grass texture I used

Nothing special here. Bark texture for diffuse and the same but greyscale for Reflect and Reflect Glossiness. The Fresnel IOR is 2.0. Also, interpolation was used on some trees with reflections to speed things up. For every tree the scheme is similar but with different textures.

Bark material

This was the biggest challenge. After several days of testing I decided that I should use VrayMtl with translucency enabled to achieve that special look of the greenery. The other option was to use Vray2SidedMtl, but my tests with it didn't give the results I could achieve with SSS. The main problem that came up was that in order to use SSS, I had to use fog, and fog works with geometry only. This means you can't use opacity maps to shape your leaves. You can't make an object transparent with a texture if it has fog enabled. You also have to have a solid object to use fog with it, that's why the leaves can't be flat. I applied a shell modifier to give them width and thus was able to enable fog (Be careful with the amount of the shell. Don't make it too thin, or the fog won't work. If you get black leaves, check whether it's not because of this). I have the following way of setting up a SSS shader: First I set the refract level to 100%. Then depending on the thickness of the object I set a color and value for the fog to make it have the right density and color (note that the value here may very greatly, depending on the thickness). If I want to have some diffuse texture in the shader, I lower the refraction level, making a mix. Then I put a value lower than 1 in the Glossiness slot, 0.8 or 0.6 is great. This is very important, otherwise the translucency won't work properly. You should increase the subdivisions to at least 20 to get a smoother light distribution. The hybrid translucency model worked fine for me. With the light multiplier I control the brightness of the shader. To simulate the "skeleton" of the leave I put a black/white texture for translucent. The other settings are a matter of testing. Of course there's some reflectiveness and bump in the material as well, as you can see in the screenshot.

Leaf material

My main source of textures was They have great textures there, and even sets of photos for a specific use. I took a set of several bark photos and mixed them to make a tall texture for the trunks. For leaves I used mainly photos, but also did some corrections by hand to make the translucency and bump maps. The texture on the building is a mix of many dirtmaps placed according to the positions of the openings and the edges of the volume. All of the UVW mappings are simple plane or box. Only on the trees I used the coordinates that came from OnyxTree or Bionatics.

The light setup is pretty simple. Direct light for sun, VraySky for GI, and a VrayColor with a boosted RGB multiplier for an environment to be reflected. This makes the reflections brighter. The color mapping is Exponential. The sun light has area shadows turned on to smooth the shadow edges. On some frames I placed planes around the camera to stop the light coming from behind.

VraySky settings

I rendered the scenes with irradiance map and brute force engines. Image sampler was DMC with catmull-rom for antialiasing filter. I used the 1-100 technique to get better blurred reflections. You may be unfamiliar with this method, but it's very simple actually. You have to set max subdivisions of the DMC sampler to 100 and uncheck "Use DMC sampler thresh". This way you can control quality and render time with the Clr. thresh setting. It does get slower, but you get much better reflections. The reflection subdivisions in the materials you can leave at 8, everything is controlled with the Clr. thresh setting.

Render settings

Render settings

In this scene it was very important to set properly the dynamic memory limit. Since most of the geometry was either displacement or proxies I had to increase the limit as much as possible. The system I was rendering on had 6GB RAM, so I set the dynamic memory limit to 4000MB, leaving some memory for the mesh geometry. After I optimized the displacement and the rendering settings I was able to render a frame in a single pass, however for one of the frames I had to render the grass in a separate pass, because there were too many displacement polygons to be handled.

To help the postprocessing I rendered multimatte elements for the different trees and materials. I also added a Zdepth channel for the depth of field effect to be applied later in PhotoShop.

All of the postproduction for this project was done in Adobe Photoshop using various plug-ins: DFT-55mm, Nik Software Color Efex Pro 3.0,Digital Anarchy-Knoll Light Factory and Richard Rosenman DOF-pro 3.0.This is a step by step tutorial of making the post for one of the five frames but a similar method was used for the other four.

This is the pure render right from the render machine, there are no corrections.

There are two additional passes with the foreground trees and the grass that will be introduced later in the post production. First thing of all, here is to take all of the color channels from the multimatte elements and literally brake the render into layers for easier color correction. This is a method that we use in every project. There is a color channel for every material in the scene from the leaves of the trees to the various materials of the house. There are total of 84 layers of fine adjustments, color correction, curves, "re-paints" and blurs in the final frame.

The first thing that I did was to generally "light up" the picture a little bit because the original render was too dark. I work the same way every time. First I make a level correction for all the layers, then I start color correcting layer by layer. When I'm happy with the general result, I collapse all the layers and start up some plugins and play around.

The house on this picture has 3 layers on top of the original. I used levels and curves to give it more contrast, also there is a little bit of painting with the dodge and burn tool to enhance the light from the sun and the bounced light at the bottom. That is all, there is nothing more done to the house.

Now the really tricky part.

I put in and color correcte the pass with the displacement grass to match with the rest of the green in the picture, also there is a subtle gradient from dark to white with blending mode set to screen, this will give more depth to the grass. The two foreground trees on the left and right have layers with levels and curves to enhance the contrast. The light was then manually enhanced with the dodge tool. All of the leaves had the dodge treatment. In the original render the leaves are made with sub-surface scattering, so I wanted to enhance that and add an extra simulation of the light scattering effect. In the left upper corner are added some additional branches with leaves. The bark of the big tree on the right is "over-painted" and I placed somewhat cool photo filter in its layer. Some of the leafs in this stage are intentionally over exposed or burned, in the next stage I will reintroduce the original render with opacity set to 20 to dial down the burned area. There is also a warm filter applied to all of the leaves in the scene. The background trees have more pronounced dark areas and a little more light from the sky to simulate real world light reflection, they are also desaturated and cooled a little bit to get the effect of depth. A little bit of vignette effect and level adjustments finish this stage.

Leaves with bokeh effect are added in the foreground, to achieve a similar effect in PS you must find a good Depth Of Field generator, I use Richard Rosenman's DOF-pro it's a wonderful plug-in with a lot of capabilities. In one of the other final pictures there is a branch on focus and the house is fully blurred, there DOF-pro played a big part in achieving the final look. The blur in that frame is made with Z-Depth channel that is loaded as a depth map in DOF-pro, then in the aperture tab the aberration is altered to make the aperture shape. At this stage there is also a curves adjustment layer that affects everything in the scene, the sky is cooled down and a little glow is added to simulate light passing through the leaves. I regularly copy all the layers into a new one on top of them. I do this to preserve layers and previous corrections in case I need to undo. I used DFT 55mm and Nik Software Color Efex Pro for additional color correction.

Here additional layers are added using the plug-ins.

A foreground plant is added also, and blurred with motion blur. A little bit of chromatic aberration is added, the vignette is strengthened to frame the house better. And this is all, this is the final look and feel of this frame.

This is our way of working at RED-VERTEX. We make the post production for almost every static picture in the exact same steps. Everything is subjective when it comes to color correction and post-production because everyone perceives colors differently and sees things in his own way. The main thing is to be critical of your work, and of course learn from the best to become one of them.

No comments: