HDRi Sky Lighting Tutorial

4367569354_939505bf41_o.jpg

Thought I should do a quick tutorial on how I use these HDRi Skydomes I'm selling. Note that this is just one of many possible workflows, and there are probably lots of tricks I'm missing and even things I do completely wrong. I should also say that I work mostly with still images, not animations.

1. Here is a typical architectural scene. It is a model I made of Waro Kishi's Fukaya house in Japan that never really went anywhere.

2. I use a gamma 2.2 workflow together with reinhard color mapping, so not strictly LWF but shares some of the advantages.  I don't want this to turn into a LWF tutorial or discussion, but this  post on cgpov.com pretty much sums up how I feel a gamma corrected workflow helps us as visualisation artists.

The reinhard color mapping helps to control burnt out (overexposed) areas. Screenshot of my color mapping set up: The burn value of the reinhard color mapping typically ranges from .75 for an exterior to 0.05 for an interior. You need to experiment with the value until you gain control over the burnt out areas. Here is an example with a camera pointing at the HDR sky:

For the final render, I use the Vray Frame Buffer, and add a slight s-curve to the output to compensate for the lack of contrast that the gamma corrected workflow introduces:

3. Add a vray dome light and load the exr/hdr using the max bitmap loader. Set the mapping type to environment/spherical. If you are using .hdr files, you can use the vrayHDRi loader instead. It makes no difference whether you use the bitmap loader or the vrayHDRi loader, the vrayHDRi adds a bit more control in that you can control the render multiplier independently from the viewport multplier. Set the output of the .exr to 1 and the vraylight multiplier to 1. If your hdr/exr has no alpha channel it seems you can save quite a bit of memory while rendering (approx 200mb in my case) if you load the exr/hdr as realpixel float rgb rather than the rgba option. (NOTE: ONLY applicable to 3dsmax 2009)

EDIT: Please don't pay too much attention to the 3dsmax 2009 realpixel hdri loading option, it just saved a little bit of memory which is why I mentioned it. I now use a later version of max and no longer have this option either.

4. To rotate the HDR you need to enter a U offset value from 0-1, so to rotate 180 degrees with would enter 0.5, 270 degrees 0.75 etc.

5. Add a vrayphysicalcamera, and set the aperture and shutter speed to something that would work for a typical outdoor scene, like F4, 1/200th & ISO 100. Remember that you are in effect using a completely manual camera, there is no 'P' or automatic mode so you need to experiment with different exposures until you get a good result.

4367569354_939505bf41_o.jpg

6. Hit render and see what you get. If it looks too dark/bright I tend to adjust the bitmap's output rather than the vraylight multiplier, so that I can have a couple of ready setup HDRi's ready to drag and drop onto the dome light. In the examples below I use an output value of 1.5.

3D tree material tutorial - Leaves

4089647680_744eb42ffc_o.jpg

A tutorial on making leaf materials for 3d trees, in this case a sugar maple (in autumn).

20091109 grey_noopacity

Firstly, some observations on opacity mapped leaves vs. geometry leaves. As you can see in the image above, the images in this post were made using opacity mapped leaves. After some tests on my farnsworth house project, I have come to the conclusion that it is quicker in most cases to use opacity mapped leaves. Its true that in simple scenes trees with geometry leaves may render quicker as VRay doesnt have to calculate the opacity of thousands of leaves, but in dealing with complex scenes with millions of polygons the advantage in using (a lot) less RAM is huge. The processes involved in swapping opacity mapped plates for geometry are also very long winded and very tedious!

Exporting from Onyxtree. I went with 4 polygons per leaf so that the leaves aren't just flat. Remember to set the dimensions you want the individual leaves, and change the units when you export. You can also make it export 3 different leaf IDs with varying sizes. I normally export as a .obj file.

onyxtree

Opacity mapping. It's important to make sure the opacity map is just pure black or white, with a sharp edge. The opacity map I used can be found here (its not a great example!). You should also turn off filtering in the bitmap loader options (screenshot).

20091109 grey

As imported to 3dsmax and given grey materials.

VRay2sidedMtl. The vray 2 sided material works best with geometry that has no thickness, which is what onyxtree outputs. It is a very quick way of generating a SSS (sub-surface scattering, think candle wax, skin, milk etc) type look. The image below is rendered using a vray2sidedmtl on all leaves with grey submaterials and a hand drawn image for the vein skeleton.

20091109 grey_transparency
2sided

Front material. The front side material is a basic vraymaterial with a diffuse map and a reflection map. Click here for front vray material set up. The color correction map is to produce slightly different hues of leaf for each of the 3 sub leaf types (you should have got a mult-subobject material when you imported the .obj file). I usually make the first leaf and then copy and paste it to the 2nd and 3rd and just change the hue value slightly. The diffuse map looks like this, and the reflection map is a b&w copy with levels adjusted to make it more contrasty.

20091109 no_2sided

Render showing front leaf material on both sides with no transparency.

Back material. The back material is a copy of the front material but with a different diffuse bitmap and not quite as reflective. Note that I overlaid the veins skeleton jpg on top in photoshop as well. (without it, the veins looked too light when viewed from the underside as they took 100% of the lighter back material)

20091109 no_transparency

Render showing 2sided material with correct front/back materials but no transparency.

Finished result Click image for 800px version. Rendered using vrayphysicalsky and sun, and a vrayphysicalcamera.

Vray Dirt Tutorial

3989998180_1b4a33364c_o.jpg

A quick tutorial on adding dirt to specific materials in Vray. A very useful application of the vraydirt shader in Vray is to make materials look dirty/weathered. Used in it's basic form, with default settings, vraydirt can be used to add a general darkening around edges/corners in your 3d model. It can also be modified to affect only areas directly below 3d features.

a - Shows vraydirt using it's default settings (dirt equal on all sides) b - Shows vraydirt using settings to force the dirt to work only in a downward direction c - As b, but with 'invert normal' ticked d - b and c used within a vraycomptex map, set to minimum

By experimenting with the distribution, falloff and z-bias values, I managed to get the downward effect I was looking for (exact settings in screen grab below). I then combine 2 versions of the vraydirt map inside a vraycomptex map. The first version is for concave creases, the other for convex creases by ticking 'invert normal'. The vraycomptex map is set to minimum so that it combines the two maps by always using the darkest rgb value.

3989242985_9228268622_o.jpg

Above is a render with a concrete material demonstrating the effect. In this case, the occluded map is the same as the unoccluded map but darker and with a slight rusty hue (achieved using a color correction map).

The diagram below shows how the material is made up, and shows the values I used:

3990025074_0b63748539_o.jpg

To take this a step further, you could additionally add a map to vary the radius of the vraydirt effect. (Note that the value I used for radius is in mm)

And finally an animated gif showing renders with and without the vraydirt:

bridge - gif

vrayRT for Architectural Visualisation

10min demo of VrayRT for Architectural Visualisation

Very impressed with vrayRT so far, looks like it will be really useful for a lot of my work. Here's a 10min (longer than intended!) demonstration on vimeo (no sound). VrayRT is using my macpro (2.8 octo) and a slave i7 920.

Vray grass tutorial part 2

cam02_longgrass0000

Before I get on to the material settings for the grass I'm going to show how I used similar techniques as in part 1 to make shorter grass. This time, I made 5 new individual blades, and made them a lot smaller, more random and also gave them a texture.

I made 3 lengths of grass, the longer ones had taller, less curved, blades. These were then scattered about 1000 times onto a 500mm dia. circle using advanced painter in randomize mode. The next step was to attach all blades into one editable mesh/poly and reset the xform, this seems to be vitally important before exporting it as a vrayproxy. Before I did this, the vrayproxy was using huge amounts of memory when rendering.

grass01

Short grass

grass02

Longer grass - some stats: approx 8000 polys per proxy x 1000 proxies = approx 8 million total polygons. 3dsmax uses about 2 gig memory for this scene and each view rendered pretty quickly considering I had vrayfog and depth of field on.

Note: I use vrayscatter (a commercial plugin but well worth the money) to scatter the proxies. There are lots of tutorials for it here. You can also use scatter by Peter Watje, advanced painter, Forest by Itoosoft, Groundwiz Planter or 3dsmax particles.

Material set up:

The main material for the grass is a multi-sub object with 3 materials within it. Each of the original 5 blades of grass were assigned one of these material IDs at random before they were scattered. Each material is a vraymaterial within a vray2sidedmaterial. Hopefully the screenshots are enough to describe the set up. The three sub materials are all essentially the same, and use the same Bitmap, but use a color correction map to subtly shift the colour (hue). The vray2sided material gives the SSS effect, and is the best option for thin geometry (no thickness) like grass and tree leaves.

mat01psd

You can optionally try turning off 'trace reflections' to try speeding things up. This means the grass will still pick up highlights from the sun, but won't pick up proper reflections, like the colour of the sky. I found the speed increase to be hardly noticeable in my tests, and it just didn't look as good.

cam01_longgrass0000
cam01_clover0000
cam02_clover

UPDATE:

There's nothing special about my render settings or scene set up for this scene, just a vraysun & sky, vrayphysical camera and my usual colour mapping settings. To make the renders look a bit more interesting I decided to play a bit with sun and shadow, and also back lit the grass so that the transparent effect was evident. As you can see from the screengrab below, I have the sun coming from slightly behind the brick wall, and it is also very low in the sky. When experimenting with materials it's very important to set your scene up to mimic an effect you would see in the real world.

grass set up

If you are interested in downloading an example scene, please visit the tutorials section of vray.info and navigate to the 2nd part of my grass tutorial.

HDR Skydome Tutorial

For the 7 shots used to make this HDR skydome I used a Canon 1ds mk3 which has superb auto bracketing abilities as well as being very fast and having 21 megapixels. The lens used for these shots was a sigma 8mm fisheye which gives a complete circular image on a full frame dslr. I set the AEB to 7 shots 2 stops apart, which gave exposure times of 0.5s, 1/8, 1/30, 1/125, 1/500, 1/2000 & 1/8000 all at F20. This range of exposures is crucial for capturing the full dynamic range of the sun, which will eventually mean you get good strong shadows when you use the HDR image to light a 3d scene.

3425529413_9271c89b2a_o.jpg

- Process raw files to remove chromatic aberration & to ensure white balance is consistent. I do this in Adobe Lightroom (pictured below), where you can copy the develop settings from the first file, and then batch process the remaining ones to save time.

3429368874_621b4560fe_o (1).jpg

- Export as 16 bit TIFFs

- Load TIFFs into Photomatix or Photoshop to blend into a single HDR, I use Photomatix as it seems to do a better job of removing ghosting artifacts (from moving clouds).

- Load HDR image file into Hugin. Choose lens type as fisheye when importing, and set the Horizontal field of view to 285 degrees (I arrived at this mostly through trial and error!)

- Hugin will complain that more than 1 image is required - ignore.

- Set pitch of image to 90, and adjust yaw so that sun is centred. If you know where the sun is, it helps later on when you come to rotating the skydome in your 3d application.

- in the stitcher tab, I take off soft blending as there is only 1 image, and press the 'calculate optimal size' button. Then hit 'Stitch Now!' (saving as a tif)

- Open 32bit tif in photoshop, clone out anything you dont want (dust in my case), save as 32 bit exr. Image below shows how the HDR should look when you drag the exposure slider in photoshop.

3428555219_cc52f62030_o.jpg
3429376362_4434e6dd48_b.jpg

Sometime, I'll follow this up with something about how I use these in 3dsmax & Vray!

vray override material

ies02

The vray override material is a great way of previewing/checking your lighting even when you are a long way into a project. The scene below uses a homemade dusk HDR skydome and vrayIES internal lights which have a colour temperature of 4500 (6000 in the second image) kelvin. I wanted to check the effect 2 alternative IES web files made to the internal lighting in distribution as well as the fancy patterns on the walls. I find having all the materials a neutral colour really helps in balancing natural & artificial light.

ies01

To set it up, you first make a mid grey material in the material editor and then drag it into the vray override mtl slot in global switches (in this instance I made a material called '200' which has the rgb values 200,200,200):

then you can specify which objects to exclude from the override material (normally glass) in the include/exclude dialog:

Vray grass tutorial part 1

Or more specifically how to create a field of grass using vray proxy objects and the vrayscatter plugin. Software used: 3dstudio Max, vray (should work with mentalray proxies too), vrayscatter (for alternatives see below), advanced painter (free script)

valley

The first stage is to create some individual blades of grass and then make a small area of grass that can later be distributed thousands of times onto your terrain.

bladesofgrass

The 3 individual blades of grass were modeled as a plane object with 8x1 segments, collapsed to an editable poly and then I moved the vertices into position in the left and front viewports. You could use a bend modifier as well, just make sure the final object has as few polygons as you can get away with.

I then used a very handy script called advanced painter to 'paint' about 100 blades of grass over a 1m x 1m plane object. Set advanced painter to randomize mode, tell it to scatter as copies (not instances), pick the 3 blades of grass as the objects to be scattered and set the min and max scale and z rotation values to something like 0.75 - 1.25 and -45deg +45deg. Then select the plane object, click paint and paint the grass on until it looks like a natural clump of grass. I usually scatter some smaller blades round the circumference of the circle to the clumps blend together better when rendered. Instead of adv. painter, you could also use the 3dsmax compound scatter object, scatter by Peter Watjes, or just do it by hand!

The final stage here, before exporting as a vrayproxy, is to make sure your blades of grass aren't instances, otherwise you will run into problems later on. I normally collapse all the blades into one object (make one blade unique then attach all other blades to it when in editable poly mode). You could do a reset xform too, for good measure. Another thing I did was to apply a box Uvw map to it before I collapsed it, as I wanted to make the tips of the grass lighter. Right click on the mesh and choose the export to vray proxy option to save it as a vrmesh file.

advancedpainter

Now comes the fun part! Choose vrayscatter from create/vray and place it somewhere in your scene. Switch to the edit panel and load up the vrmesh you made in the earlier steps. Then you need to choose your terrain object and at that point you should see lots of boxes being scattered over your terrain.

There are alternatives to vrayscatter as well:

- The makers of vrayscatter are currently working on a new product called multiscatter which will supersede vrayscatter and will also support mentalray proxies. - Forest by Itoosoft is apparently very capable, and there is a free version so well worth trying out. - Groundwiz Planter can use vray/mr proxies - you can just as easily use the free advanced painter script to distribute the proxies once you have made them. It might take a while though, and your viewport will probably slow down after a while - you could distribute the proxies using 3dsmax particles

field-vrayscatter

Check out part two of this tutorial where I use similar techniques to make shorter grass and go over the material set up for the grass blades. If there's anything you'd like to see covered in future feel free to make requests in the comments.

Vray Edge Fillet Tutorial

render_4

This is a quick tutorial to show how I add extra details to the edges of surfaces. In this scene, I wanted to make the hard edges of the concrete appear rougher and less uniform. Vray comes with a map called a vrayedgestex map that you would normally use to make wireframe materials (eg hidden line renders). It can also be used as a bump map to give the illusion of rounded edges.

In the 3 examples below, I have applied a vrayedgestex (red for clarity) to the diffuse channel of a grey material, the second is a black and white noise map, and in the third I have combined the two by using a vraycomptex map. The vraycomptex map is set to multiply which gives the effect of breaking up the otherwise smooth red line around all the edges of the table. Setting the vraycomptex to multiply is like blending modes in Photoshop, and about as easy to understand - I recommend experimenting with the various modes till you get a feeling for what each do.

process1
animrendered

In the animated gif, 1 is a render without any bump map, 2 is with just vrayedgestex and 3 is the final result.

material

So in the material editor, at the top I have a vraycomptex in the bump slot called 'edge01' which adds together the next vraycomptex 'edge02' and the standard bitmap bump jpg for the concrete material. 'edge02'  is the one that multiplies together the vrayedgestex map and the noise map. You should set the vrayedgestex to white, and change it to world units. I work in millimeters so 2.5 was about right. You can then play about with different types of noise maps, but the settings I have above worked well for concrete.