From BlenderWiki

Jump to: navigation, search

Radiosity Rendering

Mode: All modes

Panel: Render (Scene context, Render sub-context, F10)
Radio Render (Shading context, Radiosity sub-context, F5)

Description

Let’s assume you have a scene ready, and that you want to render it with radiosity. The first thing to grasp when doing radiosity is that no lamps are necessary, but some meshes with an Emit material property greater than zero are required, since these will be the light sources. Emit is found in the bottom right of the Shaders panel (Material sub-context). Typically, a value of 0.5 or less gives a soft radiance.

You can build the test scene shown in (Set-up for radiosity test), it is rather easy. Just make a big cube for the room (with switched normals, i.e. pointing inwards!), give different materials to the side walls, add a cube and a stretched cube within it, and add a plane with a non-zero Emit value next to the roof, to simulate the area light (with its normal pointing down).

You assign materials as usual to the input models. The RGB value of the material defines the patch color. The Emit value of a material defines if a patch is loaded with energy at the start of the radiosity simulation. The Emit value is multiplied with the area of a patch to calculate the initial amount of unshot energy – see the technical details section in the preceding page.

Emitting faces
Check the number of “emitters” on Blender console! If this is zero nothing interesting can happen. You need at least one emitting patch to have light and hence a solution.


Enabling Radiosity

The Render panel with Radio button highlighted.

The Radio button on Render panel (Scene context, Render sub-context) enables radiosity calculations as part of the render process. This will automatically consider all objects in the scene, and those materials with an non-null Emit value will emit light onto other objects.

Material Options

When assigning materials, be sure that all of them have Radio enabled on the Links and Pipeline panel (it is set by default).

You also need to have the Amb setting of each material above zero, for it to receive emitted light, since the emitted light becomes part of the ambient light. Ambient is found on the Shaders panel.

Objects that emit, or radiate light, should have non-null Emit as well, also found on the Shaders panel.

Since all objects realistically reflect some light back into the environment, a good general practice, for every object’s material, is to always:

  • Enable Radio.
  • Set Ambient > 0, typically 0.1.
  • Set Emit > 0, typically 0.1.


Rendering Options

The Radio Render panel.

The radiosity specific options for render-time radiosity are all found in the Radio Render panel (Shading context, Radiosity sub-context, F5). The other Radio Tool panel is only relevant when using radiosity as a modeling tool (see next page).

Hemires
The hemicube resolution; the color-coded images used to find the elements that are visible from a “shoot patch”, and thus receive energy. Hemicubes are not stored, but are recalculated each time for every patch that shoots energy. The Hemires value determines the radiosity quality and adds significantly to the solving time.
Max Iterations
The maximum number of radiosity iterations. If set to zero (the default), radiosity will go on until the convergence criterion is met. You are strongly advised to set this to some non-zero number, usually greater than 100.
Mult, Gamma
The color space of the radiosity solution is far more detailed than can be expressed with simple 24 bit RGB values. When elements are converted to faces, their energy values are converted to an RGB color using the Mult and Gamma values. With the Mult value you can multiply the energy value (i.e. increase/decrease the luminosity of the whole picture), with Gamma you can change the contrast of the energy values (lower values mean higher contrast).
Convergence
When the amount of unshot energy in an environment is lower than this value, the radiosity solving stops. The initial unshot energy in an environment is multiplied by the area of the patches. During each iteration, some of the energy is absorbed, or disappears when the environment is not a closed volume. In Blender’s standard coordinate system a typical emitter (as in the examples) has a relatively small area. The Convergence value is divided by a factor of 1000 before testing for that reason.


Examples

Set-up for radiosity test.

The rendering will take more time than usual, in the console you will notice a counter going up (as well as the mouse pointer). The result will be quite poor (Radiosity rendering for coarse meshes (left) and fine meshes (right), left), because the automatic radiosity render does not do adaptive refinement! Select all meshes, one after the other, and in Edit mode, subdivide them at least three times – or add to them Subsurf modifiers… The room, which is much bigger than the other meshes, you can even subdivide four times. Set the Max Iterations a bit higher, 300 or more. Try rendering again (F12). This time the rendering will take even longer, but the results will be much nicer, with soft shadows and color leakage (Radiosity rendering for coarse meshes (left) and fine meshes (right), right).

Radiosity rendering for coarse meshes (left) and fine meshes (right).
Note
In the radiosity rendering, Blender acts as for a normal rendering, this means that textures, curves, surfaces and even dupliframed objects are handled correctly.


Hints

Recall that the light emission is governed by the direction of the normals of a mesh. This is of course crucial for emitters, but also for all meshes, as when they re-irradiate their unshot energy, they do it in their normal direction – just try to render the above example with the normal of the “light” plane pointing upward, or the normals of the “room” cube pointing outwards…

It’s also very important to understand that render radiosity does no automatic subdividing to get patches and elements of a reasonably good size. You have to do it by hand, especially when using simple objects with very large faces (like the “room” cube in example above), either by subdividing in Edit mode, or by adding Subsurf modifiers…

As with everything in Blender, Radiosity settings are stored in a datablock. It is attached to a scene, and each scene in Blender can have a different radiosity “block”. Use this facility to divide complex environments into scenes with independent radiosity solvers.