POV-Ray : Newsgroups : povray.general : 3dnoise docs Server Time
10 Aug 2024 17:22:32 EDT (-0400)
  3dnoise docs (Message 1 to 10 of 12)  
Goto Latest 10 Messages Next 2 Messages >>>
From: Greg M  Johnson
Subject: 3dnoise docs
Date: 7 Dec 1999 17:30:10
Message: <384D89BC.E40F3EC6@my-dejanews.com>
The version of superpatch that I d/l  had no explanation of 3dnoise.

Do the instructions for this feature exist on the web?


Post a reply to this message

From: Greg M  Johnson
Subject: Re: 3dnoise docs
Date: 9 Dec 1999 07:44:57
Message: <384FA392.DA44408C@my-dejanews.com>
PLEEEEEEASE?????????


Greg M. Johnson wrote:

> The version of superpatch that I d/l  had no explanation of 3dnoise.
>
> Do the instructions for this feature exist on the web?


Post a reply to this message

From: Chris Huff
Subject: Re: 3dnoise docs
Date: 9 Dec 1999 08:09:24
Message: <chrishuff_99-29E48D.08094609121999@news.povray.org>
In article <384FA392.DA44408C@my-dejanews.com>, 
gre### [at] my-dejanewscom wrote:

> PLEEEEEEASE?????????
> 
> 
> Greg M. Johnson wrote:
> 
> > The version of superpatch that I d/l  had no explanation of 3dnoise.
> >
> > Do the instructions for this feature exist on the web?

You probably mean noise3d(). It is just another isosurface function, 
which takes 3 parameters, x, y, and z coordinates for the evaluation 
point.
For example:
isosurface {
    function {noise3d(x*2, y*0.2, cos(z))}
    threshold 0.5
}

-- 
Chris Huff
e-mail: chr### [at] yahoocom
Web page: http://chrishuff.dhs.org/


Post a reply to this message

From: Greg M  Johnson
Subject: Re: 3dnoise docs
Date: 9 Dec 1999 08:53:26
Message: <384FB39F.7E8E599D@my-dejanews.com>
Yes, I'm wondering about the parameters that can go into the equation.  I've
made things that look OK with just linear modifications to x,y,z.  Is there
a source doc or source paragraph somewhere?  I was told that they just plain
forgot to include this in one of the latest releases of superpatch.

I'm also wondering about bounding isosurfaces with isosurfaces.  I actually
wanted a fine-pitch noise3d to show up only where a large scale noise3d
exists.  What I have tried so far (CSG) only leads to the intersecting
surfaces. . .

Chris Huff wrote:

> In article <384FA392.DA44408C@my-dejanews.com>,
> gre### [at] my-dejanewscom wrote:
>
> > PLEEEEEEASE?????????
> >
> >
> > Greg M. Johnson wrote:
> >
> > > The version of superpatch that I d/l  had no explanation of 3dnoise.
> > >
> > > Do the instructions for this feature exist on the web?
>
> You probably mean noise3d(). It is just another isosurface function,
> which takes 3 parameters, x, y, and z coordinates for the evaluation
> point.
> For example:
> isosurface {
>     function {noise3d(x*2, y*0.2, cos(z))}
>     threshold 0.5
> }
>
> --
> Chris Huff
> e-mail: chr### [at] yahoocom
> Web page: http://chrishuff.dhs.org/


Post a reply to this message

From: Ron Parker
Subject: Re: 3dnoise docs
Date: 9 Dec 1999 09:20:48
Message: <384fbac0@news.povray.org>
On Thu, 09 Dec 1999 08:50:23 -0500, Greg M. Johnson wrote:
>Yes, I'm wondering about the parameters that can go into the equation.  I've
>made things that look OK with just linear modifications to x,y,z.  Is there
>a source doc or source paragraph somewhere?  I was told that they just plain
>forgot to include this in one of the latest releases of superpatch.

"They" would be me.  There are a lot of neat tricks you can do with isosurfaces
that aren't documented with the superpatch.

noise3d takes three parameters, x, y, and z.  What you choose to give it for
those parameters is entirely up to you, and limited only by your imagination.
If you want a cyclic noise, for example, you can feed it a cyclic function as
a parameter, such as 

 #declare x_cyclic_noise = fucntion {noise3d( 20*sin(x/20), y, z)}

There is no way to bound an isosurface with anything but a box or a sphere,
due to the way the code is written.  I may try to fix this one day soon,
depending on many factors I won't discuss right now.  You can, however, 
create a function that intersects two isosurfaces without using CSG. Try 
this and see if it's what you're looking for, but I suspect it'll look 
like what you got with intersect:

 #declare noisynoise = function {noise3d( x,y,z) & noise3d(20*x,20*y,20*z)}

-- 
These are my opinions.  I do NOT speak for the POV-Team.
The superpatch: http://www2.fwi.com/~parkerr/superpatch/
My other stuff: http://www2.fwi.com/~parkerr/traces.html


Post a reply to this message

From: Gilles Tran
Subject: Re: 3dnoise docs
Date: 9 Dec 1999 10:54:48
Message: <384FD0CB.5EBA203A@inapg.inra.fr>
If this can be of help (and this is from memory), if you use a simple
noise3d(A*x,B*y,C*z) function
(which is a very restrictive way to use it, because you can put anything
in noise3d(u,v,t))
then the larger A, B and C are the smaller the "bumps" are.
- noise3d(x,y,z) will give you bumps evenly spaced
- noise3d(0.1*x,y,z) will give you bumps scaled by a factor 10 on the x
axis

Multiplying the noise3d by a value will help control how much they affect
the general shape
10*noise3d(x,y,z) -> big effect
0.1*noise3d(x,y,z) -> small effect

Of course "big", "small" are all relative to the other parts of the
isosurface equation and may make no sense at all in many situations.

The best way to test noise3d effects is to make a simple isosurface
primitive (like a sphere or  a box) and then add the noise3d part to it.
//sphere :
isosurface{
        function{x*x+y*y+z*z + 0.1*noise3d(5*x,5*y,5*z)        }
        bounded_by {sphere {0,2}}
        eval            sign 1        threshold 1
        texture{pigment{Red}}
}
//box
isosurface{
        function{abs(x)&abs(y)&abs(z) +0.1*noise3d(5*x,5*y,5*z)}
        bounded_by {box {-2,2}}
        eval            sign 1        threshold 1
        texture{pigment{Red}}
}



G.



"Greg M. Johnson" wrote:

> PLEEEEEEASE?????????
>
> Greg M. Johnson wrote:
>
> > The version of superpatch that I d/l  had no explanation of 3dnoise.
> >
> > Do the instructions for this feature exist on the web?


Post a reply to this message

From: Greg M  Johnson
Subject: Re: 3dnoise docs
Date: 9 Dec 1999 13:15:16
Message: <384FF0FD.2595CE04@my-dejanews.com>
Thanks greatly.
Q1:  Here's a math question.  For what values of the function  will I get "nothing"
to show up? negative??  >>threshold??

For example, if I want the noise3d function to be terminated above y=0, there are a
bunch of ways to do this with CSG. All of these would be a harsh cut.   I am
betting there is a way to make a very smooth termination of the function by playing
with the threshold values.

I guess that something like,
isosurface{
               fucntion {noise3d( x, y+9.5, z)}
               threshold 10
               }
might do it, but I'm not sure.

I have actually received advice on the topic before, but I never got a firm handle
on the actual **MATH** behind the function.

Q2:  So what are the operational thingies that work with the isosurface?
    & is and or intersection,
    . . . . . . . . . . .
    . . . . . . . . . . .


______________
Greg M. Johnson  (Opinions not necessarily those of a povray user).
http://members.xoom.com/gregjohn/animation.html


Ron Parker wrote:

> On Thu, 09 Dec 1999 08:50:23 -0500, Greg M. Johnson wrote:
> >Yes, I'm wondering about the parameters that can go into the equation.  I've
> >made things that look OK with just linear modifications to x,y,z.  Is there
> >a source doc or source paragraph somewhere?  I was told that they just plain
> >forgot to include this in one of the latest releases of superpatch.
>
> "They" would be me.  There are a lot of neat tricks you can do with isosurfaces
> that aren't documented with the superpatch.
>
> noise3d takes three parameters, x, y, and z.  What you choose to give it for
> those parameters is entirely up to you, and limited only by your imagination.
> If you want a cyclic noise, for example, you can feed it a cyclic function as
> a parameter, such as
>
>  #declare x_cyclic_noise = fucntion {noise3d( 20*sin(x/20), y, z)}
>
> There is no way to bound an isosurface with anything but a box or a sphere,
> due to the way the code is written.  I may try to fix this one day soon,
> depending on many factors I won't discuss right now.  You can, however,
> create a function that intersects two isosurfaces without using CSG. Try
> this and see if it's what you're looking for, but I suspect it'll look
> like what you got with intersect:
>
>  #declare noisynoise = function {noise3d( x,y,z) & noise3d(20*x,20*y,20*z)}
>
> --
> These are my opinions.  I do NOT speak for the POV-Team.
> The superpatch: http://www2.fwi.com/~parkerr/superpatch/
> My other stuff: http://www2.fwi.com/~parkerr/traces.html


Post a reply to this message

From: Ron Parker
Subject: Re: 3dnoise docs
Date: 9 Dec 1999 13:38:23
Message: <384ff71f@news.povray.org>
On Thu, 09 Dec 1999 13:12:13 -0500, Greg M. Johnson wrote:

>For example, if I want the noise3d function to be terminated above y=0, there are a
>bunch of ways to do this with CSG. All of these would be a harsh cut.   I am
>betting there is a way to make a very smooth termination of the function by playing
>with the threshold values.

Probably not.  what you need to do is add on some function that stays constant 
below y ~= 10, then drops smoothly as you approach y=10.  I'm not sure there 
are any non-piecewise functions that do that, but you might be able to 
approximate it with the right sort of asymptotic function.  If you're using
the preliminary 3.1g superpatch, you'll find that there's a ?: operator in 
there that might make piecewise functions possible, but that version has 
other problems you might wish to avoid.

>I guess that something like,
>isosurface{
>               fucntion {noise3d( x, y+9.5, z)}
>               threshold 10
>               }
>might do it, but I'm not sure.

Almost definitely not.  The function you've specified there is just the regular 
noise3d function translated downward 9.5 units, but the threshold of 10 will
ensure that you only see a solid block, since the noise3d function never goes 
above ten (it rarely goes above one.)  (I see you mistyped 'function' the
same way I did. :) )

>Q2:  So what are the operational thingies that work with the isosurface?
>    & is and or intersection,

There's also |, which is merge.  I'm not sure what else there is, believe it
or not.

-- 
These are my opinions.  I do NOT speak for the POV-Team.
The superpatch: http://www2.fwi.com/~parkerr/superpatch/
My other stuff: http://www2.fwi.com/~parkerr/traces.html


Post a reply to this message

From: Reinhard Rettelbach
Subject: Re: 3dnoise docs
Date: 9 Dec 1999 16:33:56
Message: <38502008.90A09A76@t-online.de>
Gilles Tran schrieb:
> .................
> The best way to test noise3d effects is to make a simple isosurface
> primitive (like a sphere or  a box) and then add the noise3d part to it.
> //sphere :
> isosurface{
>         function{x*x+y*y+z*z + 0.1*noise3d(5*x,5*y,5*z)        }
>         bounded_by {sphere {0,2}}
>         eval            sign 1        threshold 1
>         texture{pigment{Red}}
> }
> //box
> isosurface{
>         function{abs(x)&abs(y)&abs(z) +0.1*noise3d(5*x,5*y,5*z)}
>         bounded_by {box {-2,2}}
>         eval            sign 1        threshold 1
>         texture{pigment{Red}}
> }

You aren't even restricted to apply noise3d to a basic shape like sphere
or box as a whole, but you also might do so to selected terms, so try
something like that too:

isosurface{function
		{x^2 +(y+0.3*noise3d(1, y/3, 1))^2 +z^2 -3}
		.......}

nor there is any restriction on "mixing up" the noise3d parameters in a
manner like that:

		function{noise3d(y^2+z^2, x^2+y^2, x^2+y^2)}

again, play around with this stuff and enjoy the mostly strange but
sometimes also useful effects, that will occur. That's the best
tutorial.

ReVerSi


Post a reply to this message

From: Chris Huff
Subject: Re: 3dnoise docs
Date: 9 Dec 1999 19:02:15
Message: <chrishuff_99-102C98.19023709121999@news.povray.org>
In article <384FF0FD.2595CE04@my-dejanews.com>, 
gre### [at] my-dejanewscom wrote:

> Q2:  So what are the operational thingies that work with the isosurface?
>     & is and or intersection,

Here is a list of the functions, operators, and keywords available in 
the isosurface functions, I am not sure where I got it or if it is 
complete, though.

x  y  z
abs  sqr  sqrt  cub  exp
sin  asin  sinh  asinh
cos  acos  cosh  acosh
tan  atan  tanh  atanh
min  max  noise3d
+  -  *  /  ^  &  |  %

In the Smellenbergh Multipatch, there is also a if() function. I don't 
know if it is in the Superpatch. I think it is used like:
if(A, B, C)
If A is true, B is used, otherwise, C is used.

& is AND, it is used like: funcA() & funcB(). The resulting isosurface 
is like an intersection of funcA() and funcB().(all points where both 
funcA AND funcB are below threshold)

| is OR, it is used like the same as &. The resulting isosurface is like 
a merge of funcA() and funcB().(all points where either funcA OR funcB 
are below threshold)

^ is not XOR, it is the power operator. a^b means a to the power of b.
% id probably modulus, although I have never used it. a%b is the 
remainder of a/b.

The others are pretty self explanatory or documented functions identical 
to the normal POV versions.

-- 
Chris Huff
e-mail: chr### [at] yahoocom
Web page: http://chrishuff.dhs.org/


Post a reply to this message

Goto Latest 10 Messages Next 2 Messages >>>

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