Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.csd.uwm.edu!uxc.cso.uiuc.edu!uxc.cso.uiuc.edu!m.cs.uiuc.edu!shirley From: shirley@m.cs.uiuc.edu Newsgroups: comp.graphics Subject: Re: How does radiosity work? Message-ID: <4400039@m.cs.uiuc.edu> Date: 25 Aug 89 02:54:00 GMT References: <1540@ndmath.UUCP> Lines: 157 Nf-ID: #R:ndmath.UUCP:1540:m.cs.uiuc.edu:4400039:000:5703 Nf-From: m.cs.uiuc.edu!shirley Aug 24 21:54:00 1989 Here is a brief and non-rigorous description of the radiosity method. First assume the entire environment is diffuse. This means the light energy leaving a surface will be in a cosine distribution. This implies the radiance of a surface will be a constant, because the apparent size of the surface decreases with the cosine. The radiance of a surface is the radiometric equivalent of brightness or luminance. In loose mathematics: radiance = k * radiosity / area_of_patch Here k is a constant we will forget about when we do a scaling to the range of the monitor, and radiosity is the total energy leaving the patch. If we know the radiosity, we can get the radiance, and thus the name. To get a picture, the steps are: 1. Divide the surfaces into patches. 2. Establish the relation between patches. 3. Solve patch radiosities by wavelength of RGB. 4. Scale radiosities by patch areas to get radiances. 5. Export color (radiance) to each vertex, so the surface can be smoothly shaded. 6. Display patches using constant shading (may be repeated for any viewpoint). Step 2 is easy if you don't mind brute force. The radiosity r_i of the ith patch depends on all others: r_i = Emitted_radiosity_i + Reflectance_i * (k[1->i]*r_1 + ... + k[N->i]*r_N) Here k[j->i] is the fraction of energy leaving surface j that directly hits surface i. These constants are called 'form factors' in the graphics literature. A simple brute force method of finding all form factors k[j->i] for a given j is to fire n rays from patch j in a cosine distribution and see what patches are hit. If n_i rays hit patch i then k[j->i] is simply n_i/n. This method was used by Thomas Malley in his '88 Master's Thesis at the U of Utah. Malley also used mirrors, letting the rays bounce off the mirrors. Once all the form factors are found, the radiosities can be solved using standard methods. The Cornell progressive refinement papers shows how O(n) storage can be used if one is willing to reevaluate the form factors, using a method similar to direct physical simulation. The Cornell people have in the past used a 'hemi-cube' method to evaluate the form-factors, but if you're just goofing around, I suggest the ray casting method because it's easy to implement. They're starting to use a ray tracing method anyway, as can be seen in the SIGGRAPH89 proceedings. Pete Shirley shirley@cs.uiuc.edu P. S. Here is an incomplete bibliography. Also check out Roy Hall's new book and the three radiosity papers in the 89 SIGGRAPH. Note that when the Cornell people talk about 'intensity', this term is the 'spectral radiance' of ansi86. This is the only thing that consistantly confused me in their generally excellent papers. @misc{kn:ansi86, Title = {Nomenclature and Definitions for Illumination Engineering}, Year = 1986, howpublished = {American National Standard Institute Report}, Note = {ANSI/IES RP-16-1986} } Pages = {1-11} } @Article{kn:cohe85, Author = "Michael F. Cohen and Donald P. Greenberg", Title = {The hemi-cube: a radiosity solution for complex environments}, Journal = {Computer Graphics}, Year = 1985, Pages = {31-40}, Volume = 19, Number = 3, Month = {July}, Note = {ACM Siggraph '85 Conference Proceedings} } @Article{kn:cohe88, Author = "Michael F. Cohen and Shenchang Eric Chen and John R. Wallace and Donald P. Greenberg", Title = {A Progressive Refinement Approach to Fast Radiosity Image Generation}, Journal = {Computer Graphics}, Year = 1988, Pages = {75-84}, Volume = 22, Number = 4, Month = {August}, Note = {ACM Siggraph '88 Conference Proceedings} } @Article{kn:gora84, Author = "Cindy M. Goral and Kenneth E. Torrance and Donald P. Greenberg", Title = {Modeling the Interaction of Light Between Diffuse Surfaces}, Journal = {Computer Graphics}, Year = 1984, Pages = {213-222}, Volume = 18, Number = 4, Month = {July}, Note = {ACM Siggraph '84 Conference Proceedings} } @Article{kn:imme86, Author = "David S. Immel and Michael F. Cohen and Donald P. Greenberg", Title = {A Radiosity Method For Non-Diffuse environments}, Journal = {Computer Graphics}, Year = 1986, Pages = {133-142}, Volume = 20, Number = 4, Month = {August}, Note = {ACM Siggraph '86 Conference Proceedings} } @Article{kn:nisi85, Author = "Tomoyuki Nishita and Eihachiro Nakamae", Title = {Continuous tone representation of three-dimensional objects taking account of shadows and interreflection}, Journal = {Computer Graphics}, Year = 1985, Pages = {23-30}, Volume = 19, Number = 3, Month = {July}, Note = {ACM Siggraph '85 Conference Proceedings} } @Article{kn:rush87, Author = "Holly E. Rushmeyer and Kenneth E. Torrance", Title = {The Zonal Method for Calculating Light Intensities in the Presence of a Participating Medium}, Journal = {Computer Graphics}, Year = 1987, Pages = {293-302}, Volume = 21, Number = 4, Month = {July}, Note = {ACM Siggraph '87 Conference Proceedings} } @Article{kn:shao88, Author = "Min-Zhi Shao and Qun-Sheng Peng and You-Dong Liang", Title = {A New Radiosity Approach by Procedural Refinements for Realistic Image Synthesis}, Journal = {Computer Graphics}, Year = 1988, Pages = {93-102}, Volume = 22, Number = 4, Month = {August}, Note = {ACM Siggraph '88 Conference Proceedings} } @Article{kn:wall87, Author = "John R. Wallace and Michael F. Cohen and Donald P. Greenberg", Title = {A Two-Pass Solution to the Rendering Equation: a Synthesis of Ray Tracing and Radiosity Methods}, Journal = {Computer Graphics}, Year = 1987, Pages = {311-320}, Volume = 21, Number = 4, Month = {July}, Note = {ACM Siggraph '87 Conference Proceedings} }