Hi guys,
I was doing some experiments with glossy reflections and found out something that may be useful when creating materials. Sorry if someone else has come across this before
The standard algorithms for glossy reflections (phong, blinn, ward) are based on some generalization of the properties of rough surfaces. However, they are approximations and don't describe exactly the behaviour of real-world surfaces. All of them have the following problem:
All three methods (phong, blinn, ward) can generate rays that point inside the surface itself, rather than bounce away from it. I haven't found a clear explanation of what is done in this case. Usually, two options are given:
(a) Consider such rays "black".
(b) Ignore these rays.
There are drawbacks to each approach. With (a), the reflections may appear darker at grazing agles, because then a large amount of rays will be black. The (b) option also doesn't work very well, because sometimes (f.e. during photon tracing or light cache calculation) we need to trace only a single ray; what happens if it is one of those pointing into the surface? We could try and generate another ray until we find one in the correct direction, but that may slow down the rendering considerably.
So I wondered, what actually happens in the real world? Obviously, in nature, all the rays bounce away from the surface, in the correct direction. But which direction exactly is it?
So, the first thing that came to my mind is to simulate the actual glossy surface - with the bumps and all. So, I created a plane, converted it to NURBS with Delone triangulation approximation, added many many polygons to it (100,000) and applied a Displace modifier with a noise function (not the Noise map in 3dsmax though, but a real noise function, that returns randomly a value between black and white). Then I applied a perfectly reflective Faceted material to the surface, and put a cylindrical environment map.
Then I viewed the surface from different angles:
Here is also an .avi file:
http://www.vrayrender.com/stuff/glos.../glossy_ex.avi
There is one thing that you immediately notice (except the noise due to the small bumps) - the reflections become sharper as the surface is viewed at grazing angles. At very low angles the surface becomes mirror-like. And it is the very same surface! I was somewhat surprised to see that. And the direction of perfect reflection always points away from the surface. So, it seems the way to deal with the problem above is to avoid the problem in the first place
The same thing can be observed in real-world cases as well - for example when viewing a coin from different angles.
This behaviour can be simulated in VRay by putting a Falloff map in the Reflection glossiness slot of the VRay material. It's not quite exact, but it works pretty well, and seems to make glossy objects more reallistic too.
Best regards,
Vlado
I was doing some experiments with glossy reflections and found out something that may be useful when creating materials. Sorry if someone else has come across this before
The standard algorithms for glossy reflections (phong, blinn, ward) are based on some generalization of the properties of rough surfaces. However, they are approximations and don't describe exactly the behaviour of real-world surfaces. All of them have the following problem:
All three methods (phong, blinn, ward) can generate rays that point inside the surface itself, rather than bounce away from it. I haven't found a clear explanation of what is done in this case. Usually, two options are given:
(a) Consider such rays "black".
(b) Ignore these rays.
There are drawbacks to each approach. With (a), the reflections may appear darker at grazing agles, because then a large amount of rays will be black. The (b) option also doesn't work very well, because sometimes (f.e. during photon tracing or light cache calculation) we need to trace only a single ray; what happens if it is one of those pointing into the surface? We could try and generate another ray until we find one in the correct direction, but that may slow down the rendering considerably.
So I wondered, what actually happens in the real world? Obviously, in nature, all the rays bounce away from the surface, in the correct direction. But which direction exactly is it?
So, the first thing that came to my mind is to simulate the actual glossy surface - with the bumps and all. So, I created a plane, converted it to NURBS with Delone triangulation approximation, added many many polygons to it (100,000) and applied a Displace modifier with a noise function (not the Noise map in 3dsmax though, but a real noise function, that returns randomly a value between black and white). Then I applied a perfectly reflective Faceted material to the surface, and put a cylindrical environment map.
Then I viewed the surface from different angles:
Here is also an .avi file:
http://www.vrayrender.com/stuff/glos.../glossy_ex.avi
There is one thing that you immediately notice (except the noise due to the small bumps) - the reflections become sharper as the surface is viewed at grazing angles. At very low angles the surface becomes mirror-like. And it is the very same surface! I was somewhat surprised to see that. And the direction of perfect reflection always points away from the surface. So, it seems the way to deal with the problem above is to avoid the problem in the first place
The same thing can be observed in real-world cases as well - for example when viewing a coin from different angles.
This behaviour can be simulated in VRay by putting a Falloff map in the Reflection glossiness slot of the VRay material. It's not quite exact, but it works pretty well, and seems to make glossy objects more reallistic too.
Best regards,
Vlado
Comment