aburke@ogicse.cse.ogi.edu (Andrew Burke) (05/03/91)
a few days ago wuly@vax5.cit.cornell.edu queried the net: >> Howdy. >> I have written a combination radiosity/raytracing rendering system >> (whew!) and I'm somewhat confused on one point: I have a scene of 5 walls, >> 10x10, with a light 3x3 pointing at one of the walls. Now with 90% diffuse >> surfaces, the relative energy out of the wall *behind* the light (i.e. light >> left the lightsource, hit the wall in front, and was re-radiated to the back >> wall, and re-radiated again) is about 1/1000 the energy leaving the light. >> This seems wrong. ... I have basically the same problem. I've read all the papers, scratched a bald spot on my head, but still am a bit puzzled. My code also just doesn't seem quite correct. My solution has been to either increase the intensity of the source light, or to make the surface area of the light source larger. Clearly, though, if someone at Cornell is having problems (how close can you get to Donald Greenberg & Co.?), many of us would benefit if someone posted a standard radiosity scene which we all could use as a reference. This wouldn't mean the poster would make our jobs any easier (everyone is getting pretty paranoid about giving away "secrets" these days), it would just allow us to confirm we're on the right track. In any case, I also would be interested in any light anyone can shed on this subject. andrew burke aburke@cse.ogi.edu "Reboot the system"
erich@eye.com (Eric Haines) (05/04/91)
In article <20917@ogicse.ogi.edu> aburke@ogicse.cse.ogi.edu (Andrew Burke) writes: >a few days ago wuly@vax5.cit.cornell.edu queried the net: >>> 10x10, with a light 3x3 pointing at one of the walls. Now with 90% diffuse >>> surfaces, the relative energy out of the wall *behind* the light (i.e. light >>> left the lightsource, hit the wall in front, and was re-radiated to the back >>> wall, and re-radiated again) is about 1/1000 the energy leaving the light. >>> This seems wrong. ... > >I have basically the same problem. I've read all the papers, scratched a >bald spot on my head, but still am a bit puzzled. My code also just doesn't >seem quite correct. My solution has been to either increase the intensity >of the source light, or to make the surface area of the light source larger. I just finished up my SIGGRAPH course notes on this and other problems in radiosity algorithms. Here's a relevant extract: VI. Scaling Once the radiosity solution has been computed, we often must scale the results so that a meaningful image can be output. The problem is that we do not necessarily know what the best mapping of radiosity values is for our solution. That is, we do not know the best way to display the set of generated radiosity values. [...] [On our solution:] On output the user can specify a scale factor, a gamma curve for intensity [not the same as gamma correction: this one scales the RGBs uniformly, based on intensity], and a minimum output level. Optionally, the user can obtain the level of intensity for the brightest reflector (i.e. not including light sources) in the environment and use this for scaling. By changing these and seeing its effect on the output, the user can fine tune the appearance of the illumination to create the desired effect. This gives control to the user similar to what is given to a photographer: exposure time and contrast can be adjusted for different effects. These can be adjusted and the scene output again, giving the user near-real-time feedback and control. ---- Eric
nujy@vax5.cit.cornell.edu (05/04/91)
In article <20917@ogicse.ogi.edu>, aburke@ogicse.cse.ogi.edu (Andrew Burke) writes: > >> I have written a combination radiosity/raytracing rendering system >> (whew!) and I'm somewhat confused on one point: I have a scene of 5 walls, >> 10x10, with a light 3x3 pointing at one of the walls. Now with 90% diffuse >> surfaces, the relative energy out of the wall *behind* the light (i.e. light >> left the lightsource, hit the wall in front, and was re-radiated to the back >> wall, and re-radiated again) is about 1/1000 the energy leaving the light. >> This seems wrong. ... > > I have basically the same problem. I've read all the papers, scratched a I don't think this is a problem. I don't have my radiosity stuff with me but I think I can remember enough to go through this example. First, lets assume that each wall is a single polygon and we find the form factor at the center of it. If we approximate the receiving polygon as a disk (of diamter 10), get the solid angle of the projected disk on a sphere surrounding the center of the emitting polygon, and divide by 2PI, we get a form factor of (2-sqrt(3))/2. Multiplying this by 4/PI gives an approximate form factor of a 10x10 polygon of: (4 - 2*sqrt(3))/PI. This is about 0.17. I'll denote the intensity of the light leaving the source as I (for a total emitted energy of 9I = 3*3*I). The energy falling on the receiving polygon is (I think): Er = Is * As * Brs where Is is the intensity of light leaving the source, As is the area of the source and Brs is the form factor for the source and receiver. Plugging in the numbers: Er = I * 9 * (0.17) = (1.53)I On the next step, Is = (1.53)I * (0.9) * (1/100) = 0.0138I. The 0.9 is for the reflectance of the surface, and the (1/100) for its area. Er = (0.0138I) * 100 * (0.17) = 0.235I. The intensity leaving this surface is Is = (0.235I) * (0.9) * (1/100) = 0.0021. So your problem isn't really an error, the numbers do come out right. In fact, if we obtain a more accurate form factor by integrating form factors over differential areas over the entire source polygon, the result is more like 0.00087I, even smaller than was indicated! -Chris Chris Schoeneman | "I was neat, clean, shaved, and sober, nujy@vax5.cit.cornell.edu | and I didn't care who knew it." | - Raymond Chandler
wiml@milton.u.washington.edu (William Lewis) (05/26/91)
In article <20917@ogicse.ogi.edu> aburke@ogicse.cse.ogi.edu (Andrew Burke) writes: > >a few days ago wuly@vax5.cit.cornell.edu queried the net: >>> Howdy. >>> I have written a combination radiosity/raytracing rendering system >>> (whew!) and I'm somewhat confused on one point: I have a scene of 5 walls, >>> 10x10, with a light 3x3 pointing at one of the walls. Now with 90% diffuse >>> surfaces, the relative energy out of the wall *behind* the light (i.e. light >>> left the lightsource, hit the wall in front, and was re-radiated to the back >>> wall, and re-radiated again) is about 1/1000 the energy leaving the light. >>> This seems wrong. ... > >I have basically the same problem. ... I'm hardly an expert in computer graphics, but might the problem be that the human eye has a pretty nonlinear response to intensity? As I remember most human senses are logarithmic in nature, not linear (presumably for greater dynamic range --- this is why you can't see a flashlight beam in bright sunlight...) So this factor of 1000 difference in power would correspond to, say, a factor of 3 difference intensity, which seems reasonable. Try taking the log of the intensity or something before displaying. -- wiml@milton.acs.washington.edu Seattle, Washington (William Lewis) | 47 41' 15" N 122 42' 58" W "Just remember, wherever you go ... you're stuck there."
aipdc@castle.ed.ac.uk (Paul Crowley) (05/26/91)
In article <1991May26.020248.10869@milton.u.washington.edu> wiml@milton.u.washington.edu (William Lewis) writes: [...] >As I remember most human senses are logarithmic in nature, not linear [...] >Try taking the log of the intensity or something before displaying. Wouldn't this result in the log being taken _twice_? image -- light level --> log() -- log(light level) --> display (which is linear) -- log(light level) --> eye (which takes log) -- log(log(light level)) --> brain (which compensates for log somehow) -- log(light level) --> percieved light level (now the log of the correct light level) Seems to me the best thing to do would be to allow your light source to be massively overexposed -- I think this is what the eye does, and what a good photographer will do when taking a picture that includes a light source. ____ \/ o\ Paul Crowley aipdc@castle.ed.ac.uk \ / /\__/ Part straight. Part gay. All queer. \/ "I could be wrong, I could be right" -- Public Image Ltd.
pelegrin@goofi.greco-prog.fr (Uncle Ben's) (05/29/91)
In article <20917@ogicse.ogi.edu> aburke@ogicse.cse.ogi.edu (Andrew Burke) writes: >a few days ago wuly@vax5.cit.cornell.edu queried the net: >>> I have written a combination radiosity/raytracing rendering system >>> (whew!) and I'm somewhat confused on one point: I have a scene of 5 walls, >>> 10x10, with a light 3x3 pointing at one of the walls. Now with 90% diffuse >>> surfaces, the relative energy out of the wall *behind* the light (i.e. light >>> left the lightsource, hit the wall in front, and was re-radiated to the back >>> wall, and re-radiated again) is about 1/1000 the energy leaving the light. >>> This seems wrong. ... >>I have basically the same problem. ... I see two possible answers: - If you say you have five walls, your enironment may not be fully closed. The loss of energy resulting of this is HUGE; for example, if the closed world is a cube, removing a wall will divide the overall energy by two. - You say your surfaces are 90% diffuse (I guess they are 10% specular 8^) ), but how many percents of their incoming energy do they radiate? If they reemit 10% of the incoming overall emergy, they will effectively radiate 9% of the energy (we only consider the diffuse contribution), then with 2 reflections you get 0.09^2 ~~ 0.0001. Not much. Good reemission percentages are usually between 20 and 50%. ------------------------------------------------------------------------------- | Zeu<FP> : The craziest programmer in France | _________ | |------------------------------------------------| / | \ \ | | Francois Pellegrini is : | / |__ ___/ \ | | goofi!pelegrin@geocub.greco-prog.fr | \ | | / | | mcsun!inria!geocub!goofi!pelegrin@uunet.uu.net | \ | | / | | goofi!pelegrin@geocub.UUCP | | -------------------------------------------------------------------------------