POV-Ray : Newsgroups : povray.bugreports : Mach artifacts in blob objects : Re: Mach artifacts in blob objects Server Time
13 May 2024 20:15:20 EDT (-0400)
  Re: Mach artifacts in blob objects  
From: Jorge Stolfi
Date: 30 Nov 2009 11:10:01
Message: <web.4b13ed492502658545826d470@news.povray.org>
> So, maybe, instead of a replacement for blob, we need a name for the
> neoblob [...] not a syntax extension of the actual blob
> (no "blob { smoother ...",
> as it would lock together the future evolutions of both mathematical
> beasts (every option of one would have to be available on the other,
> unless you want to confuse the final user. do we want more confusion ?)

I was thinking of adding a optional parameter "order N" (the second
exponent of the current formula) that defaults to "order 2".  That
would be analogous to the "u_steps" parameter of "bezier_patch", or the
"max_intersections" of "isosurface".  An alternative would be a simple
keyword "smooth" or "c2_smooth" that would change N from 2 to 4 (or some
fixed higher number; 6 or 8 may work out better.)

Since the value of N is the *only* difference between the current blob
and the proposed one, I do not think that it justifies creating a separate
primitive. That would be confusing to users, too ("which kind of
blob is best for my needs?") and would be cosiderably harder to
maintain and document.  Also, locking the future evolution of the
two primitives seems a good thing, precisely to reduce user confusion.

> Did you look at the implication on the cylinder-blob ?
> Does the new formula works fine too for them ?

The cylinder-blob has the same problem, even with a single cylinder.

AFAIK, the current implementation defines the density by parts: an
infinite cylindrical density and two spherical densities, sliced
and joined by two planes perpendicular to the axis.
Therefore a blob with a single cylindrical element
already has a discontinuity in curvature where the side wall meets
the spherical cap.  This discontinuity creates the illusion of a
lighter ring adjacent to the seam, and kinks in the reflected
images of straight lines at that seam.  (I owe you pictures of that,
but you can easily check it.)

To fix this problem would require a change in the form of the density
function, at least when N is greater than 2. I cannot give the details
now, but basically one needs the product of (1 - (X^2 + Y^2))^N and
(1 - Z^2)^N within the canonical unit cylinder (with Z axis), and
0 outside it.

This function then should be scaled, rotated and translated so
that the two "endpoints" specified by the user lie *inside*
the transformed canonical cylinder, not on its boundary.

Makes sense?

All the best,

--stolfi


Post a reply to this message

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