[comp.graphics] How does radiosity work?

milo@ndmath.UUCP (Greg Corson) (08/24/89)

Ok, I've read up on ray-tracing long ago and understand how it works...but I've
yet to see a quick description (or a long one for that mater) of how
radiosity based rendering works.

Would anyone care to offer a quick description of the radiosity process?  ie:
what is it based on, and roughly how does it work.  I know you can explain
Ray-tracing (briefly) in as little as one paragraph, is radiosity as simple?

If you've got any good (easy to get) references on radiosity, I would like
to hear about them.

I'm particularly interested in the property of radiosity that HP has talked
about in their workstations.  If I understand them right, once you have 
calculated the image you can "look" at it from any position without having
to re-calculate the image.  Is this true for all radiosity based rendering
package or has HP done something special with their custom hardware?

Thanks!

Greg Corson
19141 Summers Drive
South Bend, IN 46637
(219) 277-5306 
{pur-ee,rutgers,uunet}!iuvax!ndmath!milo
 

shirley@m.cs.uiuc.edu (08/25/89)

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} }

staatsvr@asdcds.cds.wpafb.af.mil (Vern Staats; ASD/SCED;) (08/25/89)

In article <1540@ndmath.UUCP> milo@ndmath.UUCP (Greg Corson) writes:
>Would anyone care to offer a quick description of the radiosity process? 

  I don't know much about radiosity either, but I did attend a good talk 
given by Harry Baeverstad from Hewlett-Packard at the Ohio State University.  
The following are mostly direct qoutes from the viewcharts:

  The radiosity method correctly models the interaction of light between
reflecting surfaces if the surfaces are perfectly diffuse.  The light 
leaving a surface (its radiosity) consists of self-emitted light and
reflected or transmitted light.  The amount of light arriving at a 
surface requires a complete specification of the geometric relationships
among all reflecting and transmitting surfaces, as well as the light
leaving every surface.  Form factors are computed to determine the 
fraction of light leaving one surface which lands on another surface.  
The reflected light is equal to the light leaving every other surface 
multiplied by both the fraction of that light reaching its surface 
(form factor) and the reflectivity of the receiving surface.  The sum 
of the reflected light plus the light emitted from a surface is termed 
its radiosity.

Strengths:
1)  Based on fundamental energy equilibrium methods derived from thermal
    engineering.
2)  The most realistic images for diffuse environments - soft shadows and
    reflections.
3)  View independent; new viewing angles may be displayed interactively.

Weaknesses:
1)  Computationally expensive for initial solution.
2)  Not recommended for highly specular images (use ray-tracing).

. . . . and now you know everthing I know about radiosity.  Hope it helps.

----
INET:  staatsvr@asd.wpafb.af.mil   Vern Staats  (513) 255-2714        /// Save
UUCP:  nap1!asd!staatsvr           ASD/SCED                       \\\/// The
Opinions:  my!own!                 WPAFB OH 45433                  \XX/ Guru

prem@geomag.fsu.edu (Prem Subrahmanyam) (08/26/89)

    I am not a radiosity expert, but here is my 2 cent's worth from reading
    former SIGGRAPH radiosity papers and similar papers in other graphic
    magazines.  

    Each object is composed of numerous polygonal patches.  The algorithm
    sums up the contributions of light from all the other patches, some
    reflect diffusely,  some are light sources, etc.  Now, the paper I've
    read most thoroughly mentioned some kind of iterating, where it goes
    through several (hundred) times and recalculates the light contributions.
    It can easily be seen why if we happened to sum up all the contributions
    to a particular patch before a patch near a light source had been
    calculated properly, thus forcing us to recalculate once we had a better
    value for a patch near a light source.  Radiosity inherently has a large
    storage need, as the color values of all the polygonal patches in the
    scene need to be stored.  Once the picture has been calculated properly,
    displaying it is a "simple" matter of hidden line removal display of
    a number of colored polygons, thus we have "view independency"...all
    we have to do is redisplay all the polygons from a different viewpoint.

    This is in no wise a technical report on radiosity, but an attempt to
    explain simply the underlying algorithm.  Other factors need to be 
    included, like determining whether or not a particular patch contributes
    to the patch we are considering due to the fact that another patch might
    be in the way (shadowing), etc.  In any case, I've tried my best to
    "explain in about one paragraph" what radiosity does.

    Ray-tracing is more my cup-o'-tea.
    ---Prem Subrahmanyam

pepke@loligo (Eric Pepke) (08/26/89)

In article <273@nap1.cds.wpafb.af.mil> staatsvr@asdcds.UUCP (Vern Staats) writes:
>2)  Not recommended for highly specular images (use ray-tracing).

There have been a number of attempts to combine the two approaches that have
been quite spectacular.  Check out _A Two-Pass Solution to the Rendering
Equation_ by Wallace, Cohen, and Greenberg in Siggraph '87.  The term 
"rendering equation" is after Kajiya's paper in Siggraph '86.

Eric Pepke                                     INTERNET: pepke@gw.scri.fsu.edu
Supercomputer Computations Research Institute  MFENET:   pepke@fsu
Florida State University                       SPAN:     scri::pepke
Tallahassee, FL 32306-4052                     BITNET:   pepke@fsu

Disclaimer: My employers seldom even LISTEN to my opinions.
Meta-disclaimer: Any society that needs disclaimers has too many lawyers.

mitchell@cbmvax.UUCP (Fred Mitchell - QA) (08/29/89)

In article <1540@ndmath.UUCP> milo@ndmath.UUCP (Greg Corson) writes:
>Ok, I've read up on ray-tracing long ago and understand how it works...but I've
>yet to see a quick description (or a long one for that mater) of how
>radiosity based rendering works.
>...
>Thanks!
>
>Greg Corson

There is a whole article on Radiosity in a 'recent' issue (1987-89?) of
IEEE Computer Graphics. 

Basically, (from what I remember of it) Radiosity works by treating all the
surfaces as having thermal radiation. I would imagine that that would be
more compute-intensive than ray-tracing, but would produce more realistic
effects. For instance, shadows would be soft, for instance. Something
I would like to play around with someday.
-- 

                                   |*******************************************|
	-Compliments of	       /// |* All thoughts and comments are soley     *|
	 Fred Mitchell	   \\\///  |* thoses of The Author and has nothing to *|
			    \XX/   |* do with Commodore-Amiga.		      *|
   Software QA - Commodore-Amiga   |*******************************************|