|
|
Am 30.01.2013 16:05, schrieb scott:
>> (2) Any light that is not reflected will penetrate into the object and
>> scatter around in the material, where it will be subject to filtering
>> (depending on wavelength), and if it is not thus "swallowed" it will
>> ultimately exit the object once again in a very random direction. This
>> scattered light will /always/ be "colored" depending on the material,
>> and its distribution will (almost) /always/ be (almost) totally
>> independent of the incoming light direction.
>
> Is it really a uniform colouring effect across the entire range of
> angles though? I would have thought light that scatters less will come
> out nearer to "white" and nearer the "direct" reflection angle, whereas
> the light that is scattered more will be filtered more and come out more
> randomly spread.
The light that scatters less will indeed come out nearer to "white", but
its direction is as random as any other light that manages to come back
out. (At least that's true for most solid materials, in which the
scattering is sufficiently anisotropic.)
> It's hard to judge with real materials because even with no obvious
> specular I think there are still specular effects that are extremely
> blurred, it might just be this that I'm seeing.
>
>> MCPov does it exactly the way it should be done (except that it has a
>> bug in computing the contribution from (2), getting it wrong by a factor
>> of 2, but that's another story).
>
> Is there a rule then to ensure physical correctness in mcpov when
> supplying parameters for the diffuse and reflection contributions? So
> far I've been working on diffuse+reflection=1, but it seems like that's
> wrong now.
It is wrong indeed, for quite a bunch of reasons as far as MCPov is
concerned:
- It doesn't properly handle the variation in specular reflection
depending on incoming angle and ior (modeled by the "fresnel" setting
for reflections).
- MCPov gets diffuse reflections wrong by a factor of 2.
- When using a "brilliance" setting of something other than 1.0, the
value specified in "diffuse" is /not/ the percentage of light scattered
back diffusely. Instead, the "diffuse" parameter directly controls the
brightness of the brightest spot. The new "albedo" keyword takes care of
this discrepancy: If you specify "diffuse albedo X", then X is indeed
the ratio of light scattered back diffusely (of all the light that comes
in).
If you don't use "fresnel" on the reflection (nor variable reflection,
for that matter), and if MCPov didn't have this factor-2 bug, then it
should indeed be:
diffuse albedo + reflection <= 1.0
As you can see there are still some details missing for physically
realistic materials. But I'll keep working on it.
Post a reply to this message
|
|