Radiosity
|
Radiosity is a rendering algorithm used in 3D computer graphics. It was the first (and most popular) global illumination method and unlike ray tracing it provides a workable solution to diffuse interaction as opposed to specular reflection.
Visual characteristics
The inclusion of radiosity calculations in the rendering process often lends an added element of realism to the finished scene, because of the way it mimics real-world phenomena. Consider a red ball sitting on a white floor:
Missing image
Radiosity.png
Demonstration of radiosity rendering
Light strikes the ball, reflecting red light to surrounding objects. This phenomenon gives the white floor, in the vicinity of the ball, a reddish hue. The effect is subtle, but since the human eye is accustomed to its counterpart in the real world, it helps create the illusion of realism.
Physical characteristics
The basic radiosity method has its basis in the theory of thermal radiation, since radiosity relies on computing the amount of light energy transferred between two surfaces. In order to simplify the algorithm, the radiosity algorithm assumes that this amount is constant across the surfaces (perfect or ideal Lambertian surfaces); this means that to compute an accurate image, geometry in the scene description must be broken down into smaller areas, or patches, which can then be recombined for the final image.
After this break down, the amount of light energy transfer can be computed by using the known reflectivity of the reflecting patch, combined with the form factor of the two patches. This dimensionless quantity is computed from the geometric orientation of two patches, and can be thought of as the fraction of the total possible emitting area of the first patch which is covered by the second patch.
More correctly radiosity is the energy leaving the patch surface per discrete time interval and is the combination of emitted and reflected energy:
- <math>B_i d A_i = E_i d A_i + R_i \int_j B_j F_{ji} d A_j<math>
Where Bi is the radiosity of patch i. Ei is emitted energy. Ri is the reflectivity of the patch, giving reflected energy by multiplying by the incident energy, which is that energy which arrives from other patches. All j (<math>j \ne i<math>) in the rendered environment are integrated for BjFjidAj, to determine the energy leaving each j that arrives at i. Fji is a constant form factor for the geometric relation between i and each j.
The reciprocity:
- <math>F_{ij} A_i = F_{ji} A_j<math>
gives:
- <math>B_i = E_i + R_i \int_i B_j F_{ij}<math>
For ease of use the integral is replaced and constant radiosity is assumed over the patch, creating the simpler:
- <math>B_i = E_i + R_i \sum_{j=1}^n B_j F_{ji}<math>
This equation can then be applied to each patch. The equation is monochromatic, so color radiosity rendering requires calculation for each of the required colors.
The constant Fji can be calculated in a number of ways. Early methods used a hemicube (an imaginary cube centered upon the first surface to which the second surface was projected, devised by Cohen and Greenberg in 1985) to approximate the form factor, which also solved the intervening patch problem. This is quite computationally expensive, because ideally form factors must be derived for every possible pair of patches, leading to a quadratic increase in computation with added geometry.
Radiosity as a rendering method in computer graphics was introduced in 1984 by researchers at Cornell (C. Goral, K. E. Torrance, D. P. Greenberg and B. Battaile) in their paper "Modeling the interaction of light between diffuse surfaces". The theory had been in use in engineering, to solve problems in radiative heat transfer, since about 1950.de:Radiosity fr:Radiosité ja:ラジオシティ pl:Radiosity