POV-Ray : Newsgroups : povray.off-topic : Isosurface Server Time
29 Jul 2024 18:30:38 EDT (-0400)
  Isosurface (Message 1 to 2 of 2)  
From: Invisible
Subject: Isosurface
Date: 20 Jul 2011 11:53:15
Message: <4e26f9eb@news.povray.org>
Sticking with the theme of computational computer graphics...

Thanks to Mike, I discovered Mandelbulber, a program which plots various 
3D fractal types, in the manner of POV-Ray's "julia" object. (Indeed, 
that exact object is one of the things it can plot.)

Basically I'm sitting here trying to figure out how it's possible to 
render these images in less than the age on the Universe. Certainly I 
know from bitter experience that as soon as you ask POV-Ray to draw any 
kind of isosurface, the render times become astronomical. And that's 
assuming you ask for a /smooth/ function to be plotted. If you ask for 
something really rough (e.g., the "granite" function), even low-res 
previews become intractably slow.

And yet, even with my ancient PC, Mandelbulber manages to render really 
quite complex images at 1500x1000 pixels with (hard) shadows and 
screen-space ambient occlusion in about 20 minutes or so. And as far as 
I can tell, it's all CPU-based. No GPU trickery at all.

My mind is blown. I literally cannot figure out how it can be anywhere 
near that fast.



As I understand it, what POV-Ray does is "sphere tracing". You specify a 
"maximum gradient" for the function to be traced. Assuming the gradient 
of the function /really is/ always less than this, then for any point in 
space, you can sample the function and compute the minimum distance you 
have to travel to find a zero. This distance than defines the radius of 
a sphere centered at that point which is guaranteed to not contain a 
surface. (Assuming the gradient specified is /correct/!)

 From what I've been able to gather reading between the lines, it seems 
most methods for tracing isosurfaces demand that you analytically know 
the /derivative/ of the function to be plotted. A saw a paper on sphere 
tracing which even notes that one of the main "advantages" is not 
needing to know the derivative, just the maximum gradient.

This is a bit puzzling, since it seems that knowing the maximum gradient 
tells you /more/ than knowing the actual derivative would. Setting 
max_gradient=5 tells you that there exists no point anywhere in space 
for which (the absolute value of) the derivative exceeds 5. Knowing the 
formula for the derivative just lets you sample the derivative at an 
arbitrary point in space.

That seems far less useful. Oh, sure, right /here/ the derivative is 
0.02; but there's absolutely no reason why 2 units further along the ray 
the derivative can't be 10^25.

Even knowing the /second/ derivative doesn't seem to help very much, 
since /that/ can still change arbitrarily abruptly.

On the other hand, the trouble with max_gradient is that you have to set 
it to the most pessimistic value possible in order to get correct 
results. Which is a nuisance if the function is only very steep in a few 
areas. Being able to specify a formula to compute (or even just 
estimate) the gradient seems like it ought to be a win.

Then again, what you want isn't the gradient at /this/ point, it's the 
maximum gradient within whatever radius of this point.



Then again, these fractals are isosurfaces of recursively-defined 
functions. Perhaps that helps somehow?


Post a reply to this message

From: Orchid XP v8
Subject: Re: Isosurface
Date: 25 Jul 2011 15:40:47
Message: <4e2dc6bf$1@news.povray.org>
On 20/07/2011 04:53 PM, Invisible wrote:
> Sticking with the theme of computational computer graphics...
>
> Thanks to Mike, I discovered Mandelbulber, a program which plots various
> 3D fractal types, in the manner of POV-Ray's "julia" object. (Indeed,
> that exact object is one of the things it can plot.)
>
> Basically I'm sitting here trying to figure out how it's possible to
> render these images in less than the age on the Universe.

To give you some idea of what I'm talking about:

http://www.youtube.com/watch?v=bO9ugnn8DbE

I've wasted hours of render time yet never come up with anything even 
slightly worth looking at. I shiver to think what the render time for 
the above video might be...

-- 
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*


Post a reply to this message

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