procedural noise

   8963   6   2
User Avatar
Member
86 posts
Joined: Sept. 2008
Offline
hi all..

I'm trying to determine how to use the Noise VOPs to simulate a 3D fluid surface which undulates over time.

As i understand it, the 3D Perlin noise function takes 3 floats as input and outputs a float based on the following settings:
- a first “octave” or “band” with parameters:
- amplitude: the maximum absolute value the noise can attain
- frequency: the number of cycles per unit length
- optionally additional octaves, each derived from its predecessor by:
- lacunarity or persistence: frequency multiplier between octaves
- gain: amplitude multiplier between octaves
I think this means that i pipe the position into, say, the Turbulence VOP and output the noise through a Displace Along Normal VOP.

The Turbulence VOP, with type set to 3D Perlin Noise, has additional parameters which are not described in the VOP help:
- offset: ?
- roughness: ?
- attenuation: ?
- turbulence: ?
If someone can explain what these do, or point me to a reference it would be appreciated.

The fluid surface should undulate over time. The Perlin Noise wikipedia entry states that there is a 4D variant which takes time as a parameter. I notice that Worley and Voronoi generate 4D noise, but it doesn't look like the 4th dimension is time. Is there a good way to get the undulation?

The Turbulence VOP doesn't seem to anti-alias the noise. If not, is there a good way to handle this?

There are a variety of other VOPs available, but i've focussed on Perlin because it seems to be suitable for a variety of tasks. A quick look on the www turns up Wavelet noise and newer variants of Perlin noise. Is there another noise generator that might be better suited?

thanks!
I installed a skylight in my apartment… the people who live above me are furious!
- Steven Wright
User Avatar
Member
86 posts
Joined: Sept. 2008
Offline
I suspect some artists are simply tweaking until satisfied with the look, but if there were standard definitions of these terms relative to the basic parameters then it would make it easier/quicker to reproduce or improve a noise effect developed in another package.

Maybe i'm missing an explanation somewhere in the help system or a relevant paper or even a Rosetta Stone to map effects across packages :roll: .

BTW i can get a form of undulation by key-framing parameters in the various noise VOPs, and the Displace Along Normal VOP help states that the displacement is anti-aliased.
I installed a skylight in my apartment… the people who live above me are furious!
- Steven Wright
User Avatar
Member
373 posts
Joined: March 2009
Offline
Not sure on all of them, but you can animate the noise with the offset. This literally moves / offsets the noise field in space, on x, y, and z.
Ian Farnsworth
User Avatar
Member
86 posts
Joined: Sept. 2008
Offline
Thanks Solitude. That is the method i used with the Turbulence VOP.
I installed a skylight in my apartment… the people who live above me are furious!
- Steven Wright
User Avatar
Member
86 posts
Joined: Sept. 2008
Offline
The Houdini help for Gas Up Res defines turbulence as the number of noise octaves.

From the Houdini help for Fog, roughness is used to multiply the noise frequencies in each octave. A turbulence of 3 with roughness of 0.5 results in the following octaves:

octave frequency
1 base
2 base * 0.5
3 base * 0.25

So roughness is equivalent to lacunarity, with an assumption that the bands are true octaves (frequencies are related by a power of 2). The Gas Up Res assumes that incrementing turbulence doubles the resolution, which is consistent.

Attenuation is TBD.. it seems likely that it's related to gain. Rather dry stuff, but i find that it helps to understand what is going on .
I installed a skylight in my apartment… the people who live above me are furious!
- Steven Wright
User Avatar
Member
1390 posts
Joined: July 2005
Offline
david_aiken
The Houdini help for Gas Up Res defines turbulence as the number of noise octaves.

From the Houdini help for Fog, roughness is used to multiply the noise frequencies in each octave. A turbulence of 3 with roughness of 0.5 results in the following octaves:

octave frequency
1 base
2 base * 0.5
3 base * 0.25

So roughness is equivalent to lacunarity, with an assumption that the bands are true octaves (frequencies are related by a power of 2). The Gas Up Res assumes that incrementing turbulence doubles the resolution, which is consistent.

Attenuation is TBD.. it seems likely that it's related to gain. Rather dry stuff, but i find that it helps to understand what is going on .

Have you seen $HFS/houdini/vex/include/voplib.h file (and gNoise.h)? Lots of relevant information there.

good luck,
skk.
User Avatar
Member
86 posts
Joined: Sept. 2008
Offline
Thanks for the heads up skk.

From voplib.h i get (after subbing in a macro and simplifying a bit):

float
vop_perlinNoiseVF(vector pos; int turb; float amp, rough, atten)
{
float nval = 0;
for (int i = 0; i < turb; i++, pos *= 2.0, amp *= rough)
nval += amp * (float(noise(pos)));
nval = (float(pow(nval, atten)));
return nval;
}

so, at least in this case, the roughness determines the amplitude for each octave. The attenuation is an exponent applied to the summed result. I'm not sure how the initial frequency of the noise is determined, but it's likely that the pos *= 2.0 is doubling it for each band.

I've found these to be helpful too:

- Ken Perlin's “Making Noise” 1999. Quite inspiring. Turbulence is described as the result of summing the absolute amplitude of “fractal” bands i.e.
noise(p) = 1/2( |noise(2p)| ) + 1/4( |noise(4p)| ) + …
which is what vop_perlinNoiseVF(turb >= 2, rough = 1/2) is doing, with the additional attenuation applied.

- Eberly et al “Texturing and Modelling: a Procedural Approach” 2002. Still seems to be one of the best applied books out there.

- Lagae et al “State of the Art in Procedural Noise Functions” 2010. Quite interesting.

I'm sure this is old hat for most, but hope it helps anyone else dipping into Noise..
I installed a skylight in my apartment… the people who live above me are furious!
- Steven Wright
  • Quick Links