POV-Ray : Newsgroups : povray.newusers : f_noise3d/isosurface question Server Time
30 Jul 2024 00:21:37 EDT (-0400)
  f_noise3d/isosurface question (Message 1 to 8 of 8)  
From: Bernard Hatt
Subject: f_noise3d/isosurface question
Date: 27 Jan 2005 16:25:49
Message: <41F95C5E.1609E60A@arkady.demon.co.uk>
I've just created an isosurface object which is a flat block
with a random rippled surface, but there are what appears
to be a grid of creases running across the surface 1 unit
apart.

Is this a feature of the isosurface or f_noise3d() and is
there any way to avoid this ? (I have tried the different
noise generators, and changing the isosurface accuracy and
max_gradient).

Thanks,

Bernard

// example code
#include "functions.inc"

global_settings { noise_generator 2 }

light_source { <0,90,0> color rgb <1,1,1> }

camera {right <image_width/image_height,0,0> location y*7.5 look_at 0 }

isosurface
{
    function{y-f_noise3d(x,0,z)}
    max_gradient 2
    contained_by{ box{<-6,-1,-4>,<6,2,4>}}
    pigment { rgb <0.25,1,0> }
    finish {phong 0.28 phong_size 16}
}


Post a reply to this message

From: Tom Melly
Subject: Re: f_noise3d/isosurface question
Date: 28 Jan 2005 15:26:37
Message: <41fa9ffd$1@news.povray.org>
"Bernard Hatt" <bmh### [at] arkadydemoncouk> wrote in message
news:41F95C5E.1609E60A@arkady.demon.co.uk...
>
> I've just created an isosurface object which is a flat block
> with a random rippled surface, but there are what appears
> to be a grid of creases running across the surface 1 unit
> apart.
>

I rendered the sample-scene and saw what you meant. This rings a vague
bell...

http://news.povray.org/povray.advanced-users/thread/%3C3d14a873%40news.povra
y.org%3E/

but that's from 3.5RC6 days, and implies it was a known issue that would be
resolved, so I'm a bit lost. It seems odd that I've never noticed it - I use
f_noise3d fairly frequently.


Post a reply to this message

From: Slime
Subject: Re: f_noise3d/isosurface question
Date: 28 Jan 2005 20:15:14
Message: <41fae3a2$1@news.povray.org>
> Is this a feature of the isosurface or f_noise3d() and is
> there any way to avoid this ?

This is a "feature" of f_noise3d. Regardless of which noise generator you
use, each one is internally based off of some sort of interpolation between
points on a grid, and this becomes much more apparent when it is used as a
physical surface - especially with reflection or specular highlights.

Your best bet is to somehow modify the pattern so that this isn't a problem.
I had a little luck with adding turbulence to the noise function:

 #declare noisefunc = function { pigment {
  bozo
  color_map {[0 rgb 0][1 rgb 1]}
  warp {
   turbulence 3
   octaves 2
   lambda 4
   omega .2
  }
  scale 4
 } }
 function{y-noisefunc(x,0,z).red}

But of course this looks different and even the turbulence is based off of
the same function as f_noise3d is, so it doesn't completely solve the
problem. Fiddle with the turbulence parameters.

If you can't find another pattern that works well, you can always make your
own in a 2D image editor like Photoshop.

 - Slime
 [ http://www.slimeland.com/ ]


Post a reply to this message

From: Bernard Hatt
Subject: Re: f_noise3d/isosurface question
Date: 30 Jan 2005 01:59:58
Message: <41FC85EB.F2421F3A@arkady.demon.co.uk>
Tom Melly wrote:
> I rendered the sample-scene and saw what you meant. This rings a vague
> bell...
> 
> http://news.povray.org/povray.advanced-users/thread/%3C3d14a873%40news.povra
> y.org%3E/
> 
> but that's from 3.5RC6 days, and implies it was a known issue that would be
> resolved, so I'm a bit lost. It seems odd that I've never noticed it - I use
> f_noise3d fairly frequently.

Thanks for the info, looking at the discussion and the code it is
quite a complex problem...

I can't help feeling there must be an algorithm which doesn't suffer
from these problems, I might have a play around and see if I can
find one..

Regards,

Bernard


Post a reply to this message

From: Bernard Hatt
Subject: Re: f_noise3d/isosurface question
Date: 30 Jan 2005 02:02:39
Message: <41FC868D.699606E4@arkady.demon.co.uk>
Slime wrote:

> This is a "feature" of f_noise3d. Regardless of which noise generator you
> use, each one is internally based off of some sort of interpolation between
> points on a grid, and this becomes much more apparent when it is used as a
> physical surface - especially with reflection or specular highlights.
> 
> Your best bet is to somehow modify the pattern so that this isn't a problem.
> I had a little luck with adding turbulence to the noise function:

[...]

Thanks for the workaround code, it does look quite good. I'll
experiment with it and f_waves/f_ripples to see what I can
produce.

Regards,

Bernard


Post a reply to this message

From: Christopher James Huff
Subject: Re: f_noise3d/isosurface question
Date: 31 Jan 2005 14:27:38
Message: <cjameshuff-0D7CA7.14273931012005@news.povray.org>
In article <41FC85EB.F2421F3A@arkady.demon.co.uk>,
 Bernard Hatt <bmh### [at] arkadydemoncouk> wrote:

> Thanks for the info, looking at the discussion and the code it is
> quite a complex problem...

There are two similar problems. One is a discontinuity in the second 
derivative of the noise function at points on the lattice...this one is 
fixed, as far as I know. The second problem is more fundamental, a 
lattice of points with values near 0.5 (maybe not exact, due to the way 
POV transforms the output range of the noise function)...all POV-Ray's 
noise generators have this problem, and it is not "fixable".


> I can't help feeling there must be an algorithm which doesn't suffer
> from these problems, I might have a play around and see if I can
> find one..

There are algorithms that don't suffer from the lattice artifact. I've 
been polishing up a patch that implements one of them, the Lewis sparse 
convolution noise algorithm. However, there is a tradeoff in speed.

-- 
Christopher James Huff <cja### [at] earthlinknet>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: <chr### [at] tagpovrayorg>
http://tag.povray.org/


Post a reply to this message

From: Tom Melly
Subject: Re: f_noise3d/isosurface question
Date: 31 Jan 2005 15:21:25
Message: <41fe9345@news.povray.org>
"Christopher James Huff" <cja### [at] earthlinknet> wrote in message
news:cjameshuff-0D7CA7.14273931012005@news.povray.org...

> There are two similar problems. One is a discontinuity in the second
> derivative of the noise function at points on the lattice...this one is
> fixed, as far as I know. The second problem is more fundamental, a
> lattice of points with values near 0.5 (maybe not exact, due to the way
> POV transforms the output range of the noise function)...all POV-Ray's
> noise generators have this problem, and it is not "fixable".

I'll take your word for it - I just remain mystified why it's never been a
noticeable artifact in any iso I've made with f_noise. <goes off to play
with f_noise>


Post a reply to this message

From: Bernard Hatt
Subject: Re: f_noise3d/isosurface question
Date: 19 Feb 2005 02:37:26
Message: <4216ECB4.D2439755@arkady.demon.co.uk>
Bernard Hatt wrote:
> Thanks for the workaround code, it does look quite good. I'll
> experiment with it and f_waves/f_ripples to see what I can
> produce.

If anyone is interested, having now played around a bit, a simple
solution was to replace the isosurface with a height_field which
also renders much quicker.

height_field
{
        function 128,128 {f_bozo(x*12+6,y*12-6,z)}
        smooth
        translate <-0.5,0,-0.5>
        scale <12,1,12>
        pigment { rgb <0.25,1,0> }
        finish {phong 0.28 phong_size 16}
}

Regards,

Bernard


Post a reply to this message

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