Michaelab opened this issue on Jan 05, 2012 · 123 posts
bagginsbill posted Fri, 06 January 2012 at 9:23 AM
Joe,
Self-lit IDL skin is usually because the diffuse reflection coefficient (or value - i.e. the amount of arriving light that is reflected) is too high. This was an extremely common error in almost every shader ever made for Poser prior to IDL, at which time it started to matter, but before then it did not.
Diffuse_Value = 1 means that the only degradation of secondary light bounces (skin to skin) happens in the color itself. Typically the red component of skin textures (color map) is around 230 which in sRGB space is (230/255)^2.2 or about 80% red reflectivity.
Now consider light bouncing between arm and chest.
1 light unit arrives on chest
chest bounces .8 to arm
arm sees 1 unit direct + .8 unit bounced light, and then it bounces .8 of that or .8 * 1.8 = 1.44 units of light back to the chest
the chest now takes this secondary light into account (some of which came from itself) and recalculates that it is actually bouncing .8 * 1.44 = 1.152 versus the initial estimate of .8
The arm recalculates with the new incoming 1 unit direct + 1.152 units bounced
and so on, until the max bounces in render settings is reached.
The result is that when skin surfaces are near each other, an 80% bounce level for diffuse value, with four bounces, will result in an effective illumination level of 2.0496 light units, versus the direct lighting (no bounce) of just 1 light unit. This is unrealistic and is a simple consequence of naively setting the diffuse reflectivity at 1.
On the other hand, what happens if it is .8 instead? Then the effective red lighting is 1.577 light units. This is more accurate (though still high) and more important the erroneous 2.0496 unit is 30% brighter than this. It is noticeably wrong.
So - the correct use of diffuse shading is never have diffuse_value above .8.
This is not an indictment against IDL. It is an indictment against stupid shader values.
Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)