With a new year comes the realisation that most of my 3D rendering has come in the form of playing with the development builds in between working hard and playing video games.
Well, one of the long-long awaited features wanted by so many users is finally here and in development and very very testable. It might very well be near its final form (I wish not to offend the development team) And such I have been playing around with it.
The Volumetric Scattering in Lux comes in the form of 3 or maybe 4 possible implementations. I dont know all the details but, effectively the volumetrics are the same on all, the difference is the surface definition. This will become more apparent in the following test renders.
The basic Parameters are wrapped inside the version 0.7 feature, handling volumetric absorption, mainly used to create realistic Glass.
We have the normal absorption parameter, which takes a colour and an absorption depth and has been covered previously. The other main parameter is a scattering colour and a scale. The colour is self explanetory, however the scale is what is the interesting control. It can make the difference between fine fog, and say for example, milk. Bit of an extreme way of looking at it but that is what makes volumetrics so interesting in this case.
The other parameter is a isotopy g parameter which If i am honest i havent played with much at all. Basically it determines the primary scattering direction, either mostly forward (in the direction of the light), mostly backwards (same deal) and isotropic. For all of my tests i have kept this as isotropic.
Before I start I should state the following,
Defining the volume, and using the correct image scale is the difference between having an image that goes crazy and looks weird, or having an image but the effect you wanted doesnt work or make sense.
By Volume definition, this is exactly the same as in Glass2. The normals on a surface point the face to the Exterior volume, the opposite side is the Interior. If you want the atmosphere to include scattering, you should be sure to define the exterior volume for every object you have in the scene or you might get unexpected results. In general the scattering parameters required for atmosphere are very low, on the order of less than 0.01, more will look like dense fog.
For my first, very simple test I wanted to create some classic “God Rays” entering a room from a window.
Very purple room! but there you see some rays from the sun through the window. To achieve this i defined a cube inside the room which was set to a null material. With a tiny tiny bit of scattering and slight adjustment of the gain of each light in the scene, they are clearly visible.
The next scene, I defined the atmosphere with a scattering parameter of 0.01 for all colours, here my image scale is a little wrong, and what looks like it should be columns of say 50cm across, are actually closer to 2m across. Either way, the scattering in the atmosphere gives everything a grey tint, I have very very simple materials in this scene so i didnt expect anything colourful. What I aimed at was the haze from the lamp to be visible at the top of the image, this hase being from the scattering and not from secondary bounces from the walls.
On the subject of correct scales, I decided to investigate penetration depth of the light through an object. I took the 4cm wide grid from the LuxBall scene which is often used to test materials and made a wedge from null material. under that wedge i played some meshlights.
The properties of the wedge are as follows,
The colour of the wedge was set to the darkblue colour available in the luxblend exporter with an absorption length of 20cm. The scattering scale here is 400 with the same colour as the wedge.
Here it is possible to see how far the light is visible (although scattered) and how easily you can see the numbers underneath as they become covered by the null material.
My next test was a little tricky to get right, I originally wanted to add milk to my earlier “Tea for two” image, thought it was almost impossible unless i used a glossy surface, and while it would be possible to get the correct colour, it would not be possible without ALOT of messing about to get it to look right.
Milk has a really high scattering parameter, and watering it down with tea, still gives it a high scattering level. Here, the parameters are empirical, I selected a milky tea colour from an image of a cup of tea, and set the scattering colour to a slightly blue colour and gave it a scattering value of about 1000. Note here that i used Glass2 as my material rather than Null.
I then tried something a little crazy. I set all the tea set to use Glass2 with an absorption depth similar to the tea, (about 4cm (yes i know it is wrong)) and gave it a green tint and a scattering value similar to that of the tea (1000). I then boosted the scattering of the milk up to 1500 levels and hit render. After baking for about a week on different computers, I got this
Here is is very interesting to see the dark shadow of the cup handle. it also shows how well behaved the system is. Though, with these high levels of scattering, the speed of the render is painfully slow!!! So be warned!
I then tried a simple glass of milk. Here basically the material is Glass2 with a absorption depth of 4cm with a slightly yellow colour. The scattering scale here is slightly blue and has a scale of 2000… (yep, very high!)
The reason for this is that, I don’t want the absorption to get all the light that enters the milk, i want it to be scattered sufficiently such that we see light from the caustics of the glass. It is possible to have a material that absorbs at a depth of 1mm, but with very high scattering, will appear to be almost white bceause of this. Unfortunately that usually means the render takes a long time!
Here is my Glass of Milk
After this render, and the amount of adjustments i needed to make to the colour/depth and scattering scale (probably about 50 retries!) I thought it might be useful to make a bunch of renders which could be used as a guess when composing scenes to get the correct order of magnitude when wanting to use the Volumetric material.
Please excuse the lack of lables, however the parameters are contained within the file names. The units are in meters for the absorption length, at the start of the file name, there will be something like 0.5 at 1… this means the material has a colour (R=0.5 G=0.5 B = 0.75) and the absorption depth is 1m… files that are on the left column have no absorption and so are listed as 1at1 so colour is white at 1m.
My last words of advice is that image scale is the most important thing when choosing parameters, Remember here that 1blender unit is 1m and so if you are modelling small objects, unless you want them transparent, you need to use high levels of scattering to get a correct result.