Toon_Scheur wrote:I'm just claiming that G.I. is precision number crunching, and placing bounce lights through some calculation should yield visualy acceptable results.
I like to be a pessimist, please don't take me as being too critical... rambling is about all you'll get out of me
skip down to the second hyphen line to ignore my more pointless rambling
----------- begin excessive ramble mode -----------
okay, placement of 'bounce lights' isn't really something that's trivial. Try to picture the ideal situation
the artist places several [static] lamps from which you wish to calculate good positions for 'bounce lights'. You'd probably not want to limit the type of lamp so bounce light calculation would have to allow point, spot, sun, and area lamps. These lamps would remain in the final render, and would cast shadows.
essentially your 'bounce lamps' are fill lights...
your fill lamps mimic the reflection of direct light, and since the lamps can cast shadows you'd have to subdivide the mesh somewhat to know where the light is bouncing from
this sounds exactly like a radiosity calc
so you take the faces reciving light directly and cast light from them and see where you get. Again you are casting shadows, but this time you are casting light from many more places [the scene has more faces than artist-placed lamps]. Then you do this again for another iteration, as an optimization you can cast reflected light from faces that recieved more light to less [which allows you to stop earlier with fewer artifacts]. This is still sounding exactly like radiosity
okay, so how would exactly we get to the ideal positions/settings of fill lamps? how exactly would a fill lamp work?
your fill lamp would be a sphere lamp, probably set to diffuse and casting no shadows. it would be placed near regions which recieve light indirectly, like the undersides of bridges or tables. It isn't placed on a surface, but rather near one. So, there isn't some clear way of deciding where to place it.
How about a simple example. A room, with a table. On the table facing the cieling is the lamp. Light bounces off the cieling and lights the table and walls. A single sphere lamp would be insufficent to light properly the table and walls [the table would be too bright, or walls too dark], but then using a smaller radius you'd need several for each wall and perhaps two for the table. The next bounce of light would get under the table and the remainder of the cieling and would be lit in a similar fashion. A more complex situation ...
blah, I'm bored
I've been playing with radiosity in the renderer in a simple room with suzanne, an emissive plane, and a table. The results I'm getting are horrible. At subsurf 1 the radio calc decides that regions of faces have a large enough angle to be a hard edge. At subsurf 2 the hemirez doesn't go high enough to not have artifacts. Wait, cool! it uses the autosmooth angle defined per-object for that... I can use subsurf 1. Render times are coming in at 10 seconds for this incredibly simple scene, and it would be easy for me to move the light source [an invisible plane] around over time.
a research paper would have shown that both this idea is feasable [with results], and how to properly implement it, some of its drawbacks and possible ideas of where to go from this point.
------------------- begin less-ramble mode ------------------------
after playing with the idea the drawbacks seem like:
* static, the lights causing ambient lighting can't move without [expensive]recalculation
* calculation is far from physically correct [its more of a compression of the radiosity solution]
* dynamic objects don't work well with this [if a character moves near one of these 'bounce lights' it would look very odd. Same if the character were not lit by these lights when the proper distance from them.
actually, that last one is probably the most annoying issue with this.
so, what does this get you:
* very fast renders, once the calculation is done
hrm, seems like you might as well do a radiosity calculation and just keep the vertex-color lit mesh around. Use seperate lights for your characters and stuff [you'd probably do that with bounce lights anyway]
I personally don't see a way you could make this work better than radiosity