|
![](/i/fill.gif) |
In article <3d6d115e@news.povray.org>, "Mael" <mae### [at] hotmail com>
wrote:
> the idea is : give an object (ex: a union of small aligned cylinders for a
> brushed metal, or some kind of grass for velvet etc...) that will represent
> the micro-geometry of the surface, then do some ray tracing and average for
> different positions of light/viewer with this geometry and a simple model
> for light interaction (diffuse+phong+shadow), and try to fit parameters of a
> general BRDF model to get those results.
> In fact this is the same as using a very small normal modifier except that
> it would work without heavy antialiasing, and also could take into account
> effects of self-shadowing in the micro-geometry. The problem is that s it s
> not easy to find a good general model for BRDF (a 4D function !) which does
> not require too much parameters.
Disclaimer: I don't actually know anything about BRDF functions.
I've considered doing something similar, allowing the falloff of the
shading and the hightlight to be controlled with splines. You might be
able to write a POV script that uses trace() to compute an appropriate
spline...it would only be dependant on angle to the surface though.
Maybe there is some way to make it even more flexible...controlling it
with a spline surface instead of a spline curve.
Computing an arbitrary spline would probably be slower than necessary
though...maybe sample the object along each axis (in other words, from
each corner of an octahedron, maybe allow higher or lower polyhedrons
for more precision[0]), transform the samples to the surface so one axis
points along the surface normal and another is in plane with an "up"
vector (for orientation), and interpolate those samples to get the
approximate value from the ray direction...
[0]: Actually, I think a half-polyhedron would be sufficient...7 corners
of an octahedron, since the 8th would be on the other side of the BRDF
source shape. Maybe a tetrahedron on the surface of the shape, with each
side subdivided into more triangles to increase resolution. Maybe a set
of random samples or some other way to achieve a fairly even
distribution.
--
Christopher James Huff <cja### [at] earthlink net>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: chr### [at] tag povray org
http://tag.povray.org/
Post a reply to this message
|
![](/i/fill.gif) |