![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Could someone explain them to a new user, not just to POV-Ray, but
raytracing and any type of computer graphics at all? In more-or-less
plain English?
--Mark M. Wilson
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Mark M. Wilson" wrote:
>
> Could someone explain them to a new user, not just to POV-Ray, but
> raytracing and any type of computer graphics at all? In more-or-less
> plain English?
Isosurfaces are equipotential surfaces of 3D mathematical functions,
usually written in the form:
f(x, y, z)
This means that all points in space (x, y, z) where the function has a
certain value (0 by default in Povray) form a surface.
This is of course quite mathematical, but that's life... For details see a
good math book. :-)
The raytracer now has to find the intersection of a line (ray) with the
object - not a trivial task since you only have the (possibly complicated)
function. Povray directly traces the isosurfaces which involves a lot of
evaluations of the function and is quite critical when the function value
changes very fast (high gradient). Another method would be tesselating
the isosurface first and rendering the resulting mesh.
Christoph
--
Christoph Hormann <chr### [at] gmx de>
IsoWood include, radiosity tutorial, TransSkin and other
things on: http://www.schunter.etc.tu-bs.de/~chris/
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Mark M. Wilson" <mmw### [at] ncsl dcr state nc us> wrote in message
news:3B6585B5.C69CEC1B@ncsl.dcr.state.nc.us...
> Could someone explain them to a new user, not just to POV-Ray, but
> raytracing and any type of computer graphics at all? In more-or-less
> plain English?
> --Mark M. Wilson
Probably the simplest iso-surface is a plane. The function for it would be y -
i.e. "create a surface at all points where y=0"
A sphere is still pretty straight forward: sqr(x) + sqr(y) + sqr(z) - 1, i.e.
"create a surface where the square of x plus the square of y plus the square of
z minus 1 = 0".
If you're a math-idiot like me, the best way to understand why this works is to
do the math on a few easy points, for example (1,0,0), (-1,0,0), (0,1,0), etc.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
In article <3b6671b7$1@news.povray.org>,
"Tom Melly" <tom### [at] tomandlu co uk> wrote:
> A sphere is still pretty straight forward: sqr(x) + sqr(y) + sqr(z) - 1, i.e.
> "create a surface where the square of x plus the square of y plus the square
> of z minus 1 = 0".
Actually, you may want to use "sqrt(sqr(x) + sqr(y) + sqr(z)) - Radius".
This one is easier to describe as well: sqrt(sqr(x) + sqr(y) + sqr(z))
equals the distance from the origin, so the surface of this function is
created by all the points where the distance from the origin minus a
radius value equals 0...in other words, all points where the distance
from the origin equals the radius.
Your function might be a little faster, since it doesn't have a sqrt()
call...but it also returns the square of the distance instead of the
distance. Because the square of 1 is 1, it still works for a sphere of
radius 1, but you will have to square the radius to use other radii, and
it won't give the expected results if you alter the surface with other
functions ("displacement mapping").
Note that this function starts out with a value of -Radius at the
origin, increases to 0 at the surface of the sphere, and continues to
increase beyond that. If you want it to start out positive and drop
(like the spherical pattern), switch the radius and distance portions
around:
function {Radius - sqrt(sqr(x) + sqr(y) + sqr(z))}
Note: To really mimic the spherical pattern, you would have to prevent
it from going negative by putting it in a call to max().
Basically, POV takes a mathematical function that takes xyz coordinates
and returns a smoothly changing float value. It then steps its way along
each ray passing through the container object for the isosurface,
searching for points where the function is equal (or very close to) the
threshold value, resulting in a surface.
I tend to visualize the functions as density fields, or groups of
density fields that interact. After working with them a while, you will
learn that some functions create specific "shapes" and be able to mix
them together. You don't need to know any trigonometry or calculus,
simple algebra is enough, but it is very helpful to know the graphs of
the trig functions, because these are usually used to change the shapes
of isosurfaces.
--
Christopher James Huff - chr### [at] mac com, http://homepage.mac.com/chrishuff/
TAG: chr### [at] tag povray org, http://tag.povray.org/
<><
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |