POV-Ray : Newsgroups : povray.general : Isosurface and Noise3d Server Time
20 Nov 2024 10:33:22 EST (-0500)
  Isosurface and Noise3d (Message 1 to 8 of 8)  
From: dave
Subject: Isosurface and Noise3d
Date: 3 Oct 2001 12:44:19
Message: <3bbb4063@news.povray.org>
Hello everyone, foudn the world of ISO surfaces

they are nice.. I am getting to the point where I understand them, however there is a
modifier that I can't quite get.  it's tne Noise3d.  I'm having just a little bit a
hard time trying this one out.. does anyone know of a link that has a "good"
explination or tutorial of the Noise3d function.

I'm using a ISO Surface like:

isosurface {
  function { x }
  contained_by { box { <-1, -3, -1>, <1,3,1> } }
}

When I through the Noise Modifier in the function it does some ODD stuff.. 
So I was just looking for a good explination of the noise3d function

Thanks
Dave


Post a reply to this message

From: Christoph Hormann
Subject: Re: Isosurface and Noise3d
Date: 3 Oct 2001 12:53:11
Message: <3BBB4340.54F4C217@gmx.de>
dav### [at] intrepidvoygrcom wrote:
> 
> Hello everyone, foudn the world of ISO surfaces
> 

This is *NOT* 'ISO surface' but 'isosurface'.  It has nothing to do with
the International Organization for Standardization.

> they are nice.. I am getting to the point where I understand them, however there is
a modifier that I can't quite get.  it's tne Noise3d.  I'm having just a little bit a
hard time trying this one out.. does anyone know of a link that has a "good"
explination or tutorial of the Noise3d function.
> 

BTW, could you tell your newsreader to add line breaks? These overlong
lines are quite irritating.

> I'm using a ISO Surface like:
> 
> isosurface {
>   function { x }
>   contained_by { box { <-1, -3, -1>, <1,3,1> } }
> }
> 
> When I through the Noise Modifier in the function it does some ODD stuff..
> So I was just looking for a good explination of the noise3d function
> 

The Povray 3.5 isosurface tutorial explains this in detail (if you use
megapov you will have to convert the syntax to megapov style of course).

See:
http://www.povray.org/working-docs/id000051.html#3_4_4

In short, what you probably want is:

  function { x - noise3d(0, y, z) }


Christoph

-- 
Christoph Hormann <chr### [at] gmxde>
IsoWood include, radiosity tutorial, TransSkin and other 
things on: http://www.schunter.etc.tu-bs.de/~chris/


Post a reply to this message

From: Dave Dunn
Subject: Re: Isosurface and Noise3d
Date: 3 Oct 2001 12:57:33
Message: <3BBB4391.54059C12@aol.com>
Christoph Hormann wrote:

> This is *NOT* 'ISO surface' but 'isosurface'.  It has nothing to do with
> the International Organization for Standardization.

A pity, in a way. If they were ISO 9001-compliant, the documentation would be much
better; the downside, of course, is that said documentation would onlybe good for one
business day  ; }


Post a reply to this message

From: dave
Subject: Re: Isosurface and Noise3d
Date: 3 Oct 2001 14:20:46
Message: <3bbb56fe@news.povray.org>
Sorry about the long lines, my news reader is TIN via a linux chui..

Thank's for the link tho.. I appreciate that.

And once again, sorry about my bad typing.. I'm so used to typing ISO
as it's own word.  

Dave

Christoph Hormann <chr### [at] gmxde> wrote:


> dav### [at] intrepidvoygrcom wrote:
>> 
>> Hello everyone, foudn the world of ISO surfaces
>> 

> This is *NOT* 'ISO surface' but 'isosurface'.  It has nothing to do with
> the International Organization for Standardization.

>> they are nice.. I am getting to the point where I understand them, however there is
a modifier that I can't quite get.  it's tne Noise3d.  I'm having just a little bit a
hard time trying this one out.. does anyone know of a link that has a "good"
explination or tutorial of the Noise3d function.
>> 

> BTW, could you tell your newsreader to add line breaks? These overlong
> lines are quite irritating.

>> I'm using a ISO Surface like:
>> 
>> isosurface {
>>   function { x }
>>   contained_by { box { <-1, -3, -1>, <1,3,1> } }
>> }
>> 
>> When I through the Noise Modifier in the function it does some ODD stuff..
>> So I was just looking for a good explination of the noise3d function
>> 

> The Povray 3.5 isosurface tutorial explains this in detail (if you use
> megapov you will have to convert the syntax to megapov style of course).

> See:
> http://www.povray.org/working-docs/id000051.html#3_4_4

> In short, what you probably want is:

>   function { x - noise3d(0, y, z) }


> Christoph

> -- 
> Christoph Hormann <chr### [at] gmxde>
> IsoWood include, radiosity tutorial, TransSkin and other 
> things on: http://www.schunter.etc.tu-bs.de/~chris/


Post a reply to this message

From: Warp
Subject: Re: Isosurface and Noise3d
Date: 3 Oct 2001 14:59:19
Message: <3bbb6007@news.povray.org>
You can think about f_noise3d() (let's start speaking pov3.5, shall we?-) )
as a "random" number generator which returns values between 0 and 1, inclusive.
  Of course it's not a random number generator, but you can think about it
as if it was.

  This can be used, for example, to "randomly" vary the surface of your
function. For example suppose that you have a sphere of radius 10 defined
like this:

#declare MySphere = function { x^2+y^2+z^2-10^2 }

  Now if you want to displace the surface of the sphere randomly you can
add noise to the radius:

#declare MySphere = function { x^2+y^2+z^2-(10+f_noise3d(x,y,z))^2 }

  This will cause the radius to vary between 10 and 11 in different parts
of the sphere.

  Of course the term "noise" is a bit misleading because it gives you smooth
transitions, not random noise, but you got the idea, didn't you?

  You can adjust the frequency of this "noise" about any axis by modifying
the three parameters given to it. For example if you want noise that is
twice as dense in all directions, you can do it like:

#declare MySphere = function { x^2+y^2+z^2-(10+f_noise3d(x*2,y*2,z*2))^2 }

  If you want less or more noise, you can multiply the return value of the
noise function. For example if you want half of the displacement, you can
do:

#declare MySphere = function { x^2+y^2+z^2-(10+0.5*f_noise3d(x*2,y*2,z*2))^2 }


-- 
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}//                     - Warp -


Post a reply to this message

From: dave
Subject: Re: Isosurface and Noise3d
Date: 3 Oct 2001 15:17:11
Message: <3bbb6437@news.povray.org>
Warp, 
  I'm glad you threw in your 2cents.. I appreciate you taking time to comment.

  Here's the problem I have.. I, after the converstaion today, am fully lucid on the
noise3d function. (Of course I'm using MegaPov, so who knows).  I understand how it
randomly
puts or removes a surface to make it look like noise.  And I understand the function
part
of isosurfaces.  The problem I'm having now is, when I bound my isosurface to a box {}
it only does the noise on one side of teh box.. is there a way to make it round the y
axis?
And Not really round I guess, I'm doing:
  function { x - noise3d(x,y,z) }
And I just want to do the same thing but ont he opposite side.. 

Now would I have to do something like:
  function { x, sqrt(y^2+z^2), z - noise3d(x,y,z) }

Now, I'm still learning, so be gental.

Dave

Warp <war### [at] tagpovrayorg> wrote:
>   You can think about f_noise3d() (let's start speaking pov3.5, shall we?-) )
> as a "random" number generator which returns values between 0 and 1, inclusive.
>   Of course it's not a random number generator, but you can think about it
> as if it was.

>   This can be used, for example, to "randomly" vary the surface of your
> function. For example suppose that you have a sphere of radius 10 defined
> like this:

> #declare MySphere = function { x^2+y^2+z^2-10^2 }

>   Now if you want to displace the surface of the sphere randomly you can
> add noise to the radius:

> #declare MySphere = function { x^2+y^2+z^2-(10+f_noise3d(x,y,z))^2 }

>   This will cause the radius to vary between 10 and 11 in different parts
> of the sphere.

>   Of course the term "noise" is a bit misleading because it gives you smooth
> transitions, not random noise, but you got the idea, didn't you?

>   You can adjust the frequency of this "noise" about any axis by modifying
> the three parameters given to it. For example if you want noise that is
> twice as dense in all directions, you can do it like:

> #declare MySphere = function { x^2+y^2+z^2-(10+f_noise3d(x*2,y*2,z*2))^2 }

>   If you want less or more noise, you can multiply the return value of the
> noise function. For example if you want half of the displacement, you can
> do:

> #declare MySphere = function { x^2+y^2+z^2-(10+0.5*f_noise3d(x*2,y*2,z*2))^2 }


> -- 
> #macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
> rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
> ],13),8)-3,10>#end blob{N(array[6]{11117333955,
> 7382340,3358,3900569407,970,4254934330},0)}//                     - Warp -


Post a reply to this message

From: Ron Parker
Subject: Re: Isosurface and Noise3d
Date: 3 Oct 2001 15:28:07
Message: <slrn9rmpma.jtq.ron.parker@fwi.com>
On 3 Oct 2001 15:17:11 -0400, dav### [at] intrepidvoygrcom wrote:
>And Not really round I guess, I'm doing:
>  function { x - noise3d(x,y,z) }
>And I just want to do the same thing but ont he opposite side.. 

I think what we have here is a misunderstanding of how isosurfaces work.
The function you give first is a plane displaced by a noise value.  That
it happens to resemble a box with noise on one side is an artifact of 
MegaPOV: it renders the edges of the bounding box as solid if they would
fall "inside" the function.  I think you'll find that POV 3.5 doesn't do 
that by default (and by the way, if you're using Windows or MacOS and 
starting to learn Isosurfaces, might I suggest that you use the POV 3.5
beta so you don't have to relearn the parts that are different?)

To get a proper noisy box, I think what you want is


function { (x-.5-.1*noise3d(x,y,z)) &
           (-x+.5-.1*noise3d(x,y,z)) &
           (y-.5-.1*noise3d(x,y,z)) &
           (-y+.5-.1*noise3d(x,y,z)) &
           (z-.5-.1*noise3d(x,y,z)) &
           (-z+.5-.1*noise3d(x,y,z)) }

bounded by a box that's at least as big as box {-.6,.6} and maybe a little
bigger in case noise3d gets outside the 0..1 range a little.

The .1's here are the amount of noise; more will make more noise, as in 
Warp's example.  The .5's are half the edge of the box.

Disclaimer: I haven't tested any of this.  It might not really work.  I 
don't even have MegaPOV anymore, so I couldn't test it if I wanted to.

-- 
#local R=rgb 99;#local P=R-R;#local F=pigment{gradient x}box{0,1pigment{gradient
y pigment_map{[.5F pigment_map{[.3R][.3F color_map{[.15red 99][.15P]}rotate z*45
translate x]}]#local H=pigment{gradient y color_map{[.5P][.5R]}scale 1/3}[.5F
pigment_map{[.3R][.3H][.7H][.7R]}]}}}camera{location.5-3*z}//only my opinions


Post a reply to this message

From: dave
Subject: Re: Isosurface and Noise3d
Date: 4 Oct 2001 13:49:13
Message: <3bbca119@news.povray.org>
Ron,
  So I've been playign with the pigment maps and got a nice looking rock/stone pillar
type of thing.. Now I think I will try to convert it on over to a isosurface and see
if I can get the edges less sharp...  That's the only cavet I have right now.

Think I should use a isosurface or use something like a superellipsoid for the
rounding

Is there signifigant gains on use the Isosurface?

Thanks
D

Ron Parker <ron### [at] povrayorg> wrote:

> I think what we have here is a misunderstanding of how isosurfaces work.
> The function you give first is a plane displaced by a noise value.  That
> it happens to resemble a box with noise on one side is an artifact of 
> MegaPOV: it renders the edges of the bounding box as solid if they would
> fall "inside" the function.  I think you'll find that POV 3.5 doesn't do 
> that by default (and by the way, if you're using Windows or MacOS and 
> starting to learn Isosurfaces, might I suggest that you use the POV 3.5
> beta so you don't have to relearn the parts that are different?)

> To get a proper noisy box, I think what you want is

<<< Function Snipped >>>

> bounded by a box that's at least as big as box {-.6,.6} and maybe a little
> bigger in case noise3d gets outside the 0..1 range a little.

> The .1's here are the amount of noise; more will make more noise, as in 
> Warp's example.  The .5's are half the edge of the box.

> Disclaimer: I haven't tested any of this.  It might not really work.  I 
> don't even have MegaPOV anymore, so I couldn't test it if I wanted to.

> -- 
> #local R=rgb 99;#local P=R-R;#local F=pigment{gradient x}box{0,1pigment{gradient
> y pigment_map{[.5F pigment_map{[.3R][.3F color_map{[.15red 99][.15P]}rotate z*45
> translate x]}]#local H=pigment{gradient y color_map{[.5P][.5R]}scale 1/3}[.5F
> pigment_map{[.3R][.3H][.7H][.7R]}]}}}camera{location.5-3*z}//only my opinions


Post a reply to this message

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