POV-Ray : Newsgroups : povray.binaries.images : Isosurface planet: strange artifacts! : Re: Isosurface planet: strange artifacts! Server Time
31 Jul 2024 04:20:02 EDT (-0400)
  Re: Isosurface planet: strange artifacts!  
From: clipka
Date: 8 May 2010 08:19:52
Message: <4be556e8$1@news.povray.org>

> High!
>
> clipka wrote:
>> To me these images look like you definitely have /some/ kind of
>> precision problem there. Looks to me like POV-Ray doesn't get enough
>> "potential difference" for normals computation. Maybe making the
>> isosurface function "sharper" might help somehow (if you know what I
>> mean).
>
> Normals? The texture of the isosurface doesn't contain any normal
> statement... and what do you mean with "sharper"? Adding more
> ruggedness, steeper ridges?

Obviously, with isosurfaces POV-Ray needs to have /some/ way of 
determining which direction the surface is facing at any intersection 
point it finds (the so-called "[unpertubed] surface normal vector").

To do this, AFAIK POV-Ray samples the function value of a few other 
points nearby, and from the difference in the function value computes 
the normal vector.

Now imagine what happens if the nearby points return values like:

  0.00000000000[01235]
  0.00000000000[42260]
  0.00000000001[73450]
-0.00000000000[03345]

(assuming your threshold is 0.0), with the digits in square brackets 
being lost due to rounding issues or some such.

With the function values of the nearby points varying only between 0, 
1e-11 and -1e-11, you can probably imagine that the normals computed 
from these values will be confined to a very small set of directions (I 
guess mainly parallel to the coordinate axes or tilted by 45 degrees), 
and subject to a lot of random noise.

If this should be the cause of your artifacts, it might help to modify 
the functions so that the function values increase in absolute 
magnitude, e.g.:

  0.00000000001[235]
  0.00000000042[260]
  0.00000000073[450]
-0.00000000003[345]

Then again, maybe the rounding happens somewhere else in the function. 
In that case you might need to get a clear picture of where exactly you 
lose precision in there.

(The most "precision-eating" operations in floating-point math are sums 
(or differences) of values with very different orders of magnitude.)


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.