Houdini 12 Nodes VEX nodes

Can compute three types of 1D and 3D noise with the ability to compute turbulence with roughness and attenuation.

This operator can compute three types of 1D and 3D noise with the ability to compute turbulence with roughness and attenuation:

```Perlin noise              (string value "pnoise")
Original Perlin noise     (string value "onoise")
Sparse Convolution noise  (string value "snoise")
Alligator noise           (string value "anoise")
Simplex noise             (string value "xnoise")
Zero Centered Perlin      (string value "correctnoise")
```

Original Perlin noise is similar to Perlin noise, but marginally less efficient in computation and with different characteristics. The bounds on the noise are roughly (-1, 1).

Perlin noise sums octaves of a noise with range aobut (0, 1), resulting in a non-zero centered result. Thus the zero centered perlin better matches the ranges of the other noise fields.

Sparse Convolution noise is similar to Worley noise. The noise returned is based on the weights of all of the closest points, with each point’s contribution based on a meta-ball like rolloff curve. That is, if the sample point is close to the sphere, its contribution will be greater. The bounds on the noise are roughly (-1.7, 1.7).

Alligator noise is similar to Worley noise. It is currently not possible to simulate Alligator noise using the Worley functions, but it is possible to get a very similar 'look'. The bounds on the noise are roughly (-1, 1).

Simplex noise is very close to Perlin noise, except with the samples on a simplex mesh rather than a grid. This results in less grid artifacts. It also uses a higher order bspline to provide better derivatives.

The relative costs for computing noise of different types is roughly:

```Cost | Noise Type
-----+-------------------------
1.0 | Perlin Noise             (see Periodic Noise operator)
1.1 | Original Perlin Noise
1.8 | Worley Noise             (see Worley Noise operator)
2.1 | Sparse Convolution Noise
2.3 | Alligator Noise
```

Make sure at least the Position (`pos`) input is connected in order to notice any noise. The easiest way to accomplish this is to pipe the global variable `P` into the `pos` input. All global variables are accessible from the Global Variables operator.

## Examples that use this node

Example forExample name

`.../examples/nodes/dop/flipsolver/DensityViscosity.otl`

`.../examples/nodes/dop/magnetforce/MagnetMetaballs.otl`

`.../examples/nodes/dop/rbdglueobject/ChoreographedTubeBreakup.otl`

`.../examples/nodes/dop/rbdpinconstraint/Chainlinks.otl`

`.../examples/nodes/dop/rbdstate/InheritVelocity.otl`

`.../examples/nodes/dop/ripplesolver/RippleGrid.otl`

`.../examples/nodes/dop/smokeobject/RestField.otl`

`.../examples/nodes/dop/voronoifracturesolver/FractureExamples.otl`

`.../examples/nodes/pop/Lorenz/LorenzNoise.otl`

`.../examples/nodes/shop/material/DownHillLavaFlow.otl`

`.../examples/nodes/shop/material/firePitExample.otl`

`.../examples/nodes/sop/clusterpoints/AnimatedSourcePoints.otl`

`.../examples/nodes/sop/dopimport/LowHigh.otl`

`.../examples/nodes/sop/dopimportrecords/dopimportrecordsexample.otl`
`.../examples/nodes/sop/gluecluster/glueclusterexample.otl`
`.../examples/nodes/sop/timeshift/PlateBreak.otl`