POV-Ray : Newsgroups : povray.beta-test : Isosurface *disappears* at high resolution (fwd) : Re: Isosurface *disappears* at high resolution (fwd) Server Time
31 Jul 2024 04:24:56 EDT (-0400)
  Re: Isosurface *disappears* at high resolution (fwd)  
From: Mike Williams
Date: 26 Sep 2001 13:01:44
Message: <1MkG+AAk5es7Ewzp@econym.demon.co.uk>
Wasn't it Mike Williams who wrote:
>Wasn't it Thorsten Froehlich who wrote:
>>In article <3bb0e726@news.povray.org> , "Marc-Hendrik Bremer" 
>><Mar### [at] t-onlinede> wrote:
>>
>>> It reports something around 95.7 which is probably not too high with a
>>> crackle-function in the Iso. But that max_gradient of 5 is too low in this
>>> case. I don't know why dAWiDi thinks that the object is not complex enough
>>> to go under 10 PPS.
>>
>>No, 95 sounds good for crackle.  So in summary the problem reported by
>>"dAWiDi" <pov### [at] xxs-swpde> is a user error.  The suggested solution is
>>to use an appropriate max_gradient and to read the documentation.
>
>The symptoms don't sound anything remotely like the effects that
>normally occur with an insufficient max_gradient.
>
>There are max_gradient artefacts in the scene (tiny black holes near the
>tips of the crackly bit) but they don't change significantly when the
>render size is changed, and they certainly don't change at all between
>the rendering of a partial scene and rendering the full scene.
>
>I haven't yet tried rendering the full scene at 1024x768 AA, but I did
>try ripping out some of the go-slow features of the scene to see if the
>problem could be reproduced without the fog, the complicated sky pigment
>and the reflective texture on the isosurface. The expected max_gradient
>artefacts were visible, but nothing like the reported problem occurred.
>
>The fact that changing max_gradient happens to fix it may well be
>coincidental, in the same way that removing the sky, fog and reflection
>happen to fix it.

I've now had time to explore the situation more fully. It turns out that
*some* partial renders do exhibit the problem, and I was therefore able
to reproduce the situation in renders that took only a couple of minutes
and experiment with changing aspects of the scene to see when the
problem went away.

Changing the following aspects of the scene had no effect on the
problem:

1.      Removing the fog

2.      Removing the global_settings

3.      Removing the sky_sphere

4.      Removing all but one of the light_sources

5.      Removing #include "textures.inc"

6.      Reducing the image size to 800x600

7.      Increasing the accuracy from 0.0005 to 0.0004

Changing the following aspects of the scene caused the scene to render
without the problem:

8.      Changing the texture of the isosurface from "Silver_Metal" to 
        {pigment {rgb 1}}
        * but adding {finish {reflection 0.25}} caused the problem to 
        recur.

9.      Rendering without anti aliassing

10.     Reducing the image size to 640x480 or less

11.     Increasing max_gradient from 5 to 6

12.     Decreasing max_gradient from 5 to 4

13.     Decreasing the accuracy from 0.0005 to 0.0006

14.     Increasing the accuracy from 0.0005 to 0.0001
        (compare this with point number 7!)

15.     Moving all the #declares outside the isosurface{} block

16.     Simplifying the isosurface function.

17.     Removing the three blank lines between the '//+sc...' and the
        '#include "colors.inc"' (!)

I also noticed that the problem always occurred when the render reached
37% completion. I never saw a render fail before 37%, and if it reached
38% without error it always went on to complete successfully. Once the
render reaches this point, the remaining 63% of the scene renders in
about a further 2 seconds. The lower 63% of the scene is equal to the
background colour.

The symptoms look absolutely nothing like the usual artefacts that you
get when you use an incorrect max_gradient.

Here's my simplified version of the scene which reproduces the problem,
and the command line settings that I used. The partial render,
exhibiting the problem, completes in 67 seconds on my machine, which
should make it easier to work with than the original version.

POV 3.5b4, W98se, AMD K6-2 500, 128Mb.


//+sc0.40 +ec0.42 +h600 +w800 +a0.3



#include "colors.inc"
camera {location <-4,4,-5>
        angle 60
        look_at <0,-.5,0>
        }
light_source {<-15,100,5> color rgb 0.7}

background{color rgb <0,0,1>}

#declare testfunki=function{pattern{crackle}}

object{isosurface{
#declare pattskali=3;
#declare Blob_threshold=0.1;
#declare Funki1=function{ y-1*(sin(x)*cos(z*x/5))}
#declare Funki2=function{ 
sqrt(x^2+(y-.6)^2+z^2)-1.5-.2*testfunki(x*pattskali,y*pattskali,z*pattsk
ali)}
function{(1+Blob_threshold)-Blob_threshold^Funki1(x,y,z)-Blob_threshold^
Funki2(x,y,z)}
contained_by{box{<-5,-1.01,-6>, <18,3,20>}}
max_gradient 5
threshold 0
accuracy 0.0005
}
texture{pigment {rgb 1} finish {reflection 0.25}}
}


Post a reply to this message

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