Simulation noise

Short description: Section of maths dealing with creating simulations

This article includes a list of references, related reading or external links, but its sources remain unclear because it lacks inline citations. Please help to improve this article by introducing more precise citations. (October 2024) (Learn how and when to remove this template message)

|

Simulation noise is a function that creates a divergence-free vector field. This signal can be used in artistic simulations for the purpose of increasing the perception of extra detail.

The function can be calculated in three dimensions by dividing the space into a regular lattice grid. With each edge is associated a random value, indicating a rotational component of material revolving around the edge. By following rotating material into and out of faces, one can quickly sum the flux passing through each face of the lattice. Flux values at lattice faces are then interpolated to create a field value for all positions.

Perlin noise is the earliest form of lattice noise, which has become very popular in computer graphics. Perlin Noise is not suited for simulation because it is not divergence-free.

Noises based on lattices, such as simulation noise and Perlin noise, are often calculated at different frequencies and summed together to form band-limited fractal signals.

Other approaches developed later that use vector calculus identities to produce divergence free fields, such as "Curl-Noise" as suggested by Robert Bridson, and "Divergence-Free Noise" due to Ivan DeWolf. These often require calculation of lattice noise gradients, which sometimes are not readily available. A naive implementation would call a lattice noise function several times to calculate its gradient, resulting in more computation than is strictly necessary. Unlike these noises, simulation noise has a geometric rationale in addition to its mathematical properties. It simulates vortices scattered in space, to produce its pleasing aesthetic.

## Contents

* 1 Curl noise
* 2 Bitangent noise
* 3 Signed distance noise
* 4 References
* 5 Further reading

## Curl noise

The vector field is created as follows, for every point (x,y,z) in the space a vector field G is created, every component x, y and z of the vector field (Gx, Gy, Gz) is defined by a 3D perlin or simplex noise function with x, y and z as parameters. The partial derivative of Gx, Gy, and Gz respect to x, y and z is obtained with the gradient of the perlin or simplex noise by finite differences of implicit calculation inside the simplex noise.

The partial derivatives are used to calculate F as the curl of G given by

F=(∂Gz∂y−∂Gy∂z,∂Gx∂z−∂Gz∂x,∂Gy∂x−∂Gx∂y)

## Bitangent noise

This method is based in the fact that the curl of the gradient of scalar field is zero and the identity that expand the divergence of a cross product of two vectors A and B as the difference of the dot products of each vector with the curl of the other:

∇×(∇φ)=𝟎.

∇⋅(𝐀×𝐁)= (∇×𝐀)⋅𝐁−𝐀⋅(∇×𝐁)

which means that if the curl of both vector fields is zero then the divergence of the product of two vectors that are the gradients of scalar fields is zero too. This result in a divergence free vector field by construction only calling two noise functions to create the scalar fields.

The vector field es created as follows, two scalar fields are calculated ϕ and ψ using 3D perlin or simplex noise functions, then the gradients A and B of each of this fields is calculated, the cross product of A and B gives a divergence free vector field.

## Signed distance noise

The vector field is created based on a closed and differentiable implicit surface S = F(x,y,z) = 0. For every point in the space, frequently outside or near the surface, we get a vector g that is normal to the surface, this is the gradient of S or the partial derivatives respect to x, y and z, this vector is not unitary, but we can get a unitary normal n by dividing each component of the point by the magnitude of the gradient g. Outside of the surface all these normals point away from the surface.

g=∇F(x,y,z)=(∂F∂x,∂F∂y,∂F∂z)

𝐧=g(x,y,z)‖∇F(x,y,z)‖

‖∇F(x,y,z)‖=(∂F∂x)2+(∂F∂y)2+(∂F∂z)2

Afterwards we calculate a scalar value p for that point in the space using a 3D perlin or simplex noise function. Now we create a vector field V = pn pointing outside of the surface. The curl of this vector field gives the direction in every point in the space where the particles should move.

SDN=(∂Vz∂y−∂Vy∂z,∂Vx∂z−∂Vz∂x,∂Vy∂x−∂Vx∂y)

By construction this vector SDN will point in a tangent direction to an isosurface at the level of the signed distance to the original surface and can be used to confine the movements of the particles to stay in that surface.

## References

## Further reading

* Patel, M & Taylor, N. December 2005. Simple Divergence-Free Fields for Artistic Simulation. Journal of Graphics Tools, Volume 10, Number 4.
* Ivan DeWolf. 2005. Divergence-Free Noise.

* v
* t
* e

Noise (physics and telecommunications)

General|

* Acoustic quieting
* Distortion
* Noise cancellation
* Noise control
* Noise measurement
* Noise power
* Noise reduction
* Noise temperature
* Phase distortion

Noise in...|

* Audio
* Buildings
* Electronics
* Environment
* Government regulation
* Human health
* Images
* Radio
* Rooms
* Ships
* Sound masking
* Transportation
* Video

Class of noise|

* Additive white Gaussian noise (AWGN)
* Atmospheric noise
* Background noise
* Brownian noise
* Burst noise
* Cosmic noise
* Flicker noise
* Gaussian noise
* Grey noise
* Jitter
* Johnson–Nyquist noise (thermal noise)
* Pink noise
* Quantization error (or q. noise)
* Shot noise
* White noise
* Coherent noise
* Value noise
* Gradient noise
* Worley noise

Engineering
terms|

* Channel noise level
* Circuit noise level
* Effective input noise temperature
* Equivalent noise resistance
* Equivalent pulse code modulation noise
* Impulse noise (audio)
* Noise figure
* Noise floor
* Noise shaping
* Noise spectral density
* Noise, vibration, and harshness (NVH)
* Phase noise
* Pseudorandom noise
* Statistical noise

Ratios|

* Carrier-to-noise ratio (C/N)
* Carrier-to-receiver noise density (C/kT)
* dBrnC
* Eb/N0 (energy per bit to noise density)
* Es/N0 (energy per symbol to noise density)
* Modulation error ratio (MER)
* Signal, noise and distortion (SINAD)
* Signal-to-interference ratio (S/I)
* Signal-to-noise ratio (S/N, SNR)
* Signal-to-noise ratio (imaging)
* Signal to noise plus interference (SNIR)
* Signal-to-quantization-noise ratio (SQNR)
* Contrast-to-noise ratio (CNR)

Related topics|

* List of noise topics
* Acoustics
* Colors of noise
* Interference (communication)
* Noise generator
* Radio noise source
* Spectrum analyzer
* Thermal radiation

Denoise
methods|

| General|

* Low-pass filter
* Median filter
* Total variation denoising
* Wavelet denoising

|

2D (Image)|

* Gaussian blur
* Anisotropic diffusion
* Bilateral filter
* Non-local means
* Block-matching and 3D filtering (BM3D)
* Shrinkage Fields
* Denoising autoencoder (DAE)
* Deep Image Prior

* v
* t
* e

Procedural coherent noise

Approach|

| Lattice based|

| Gradient noise|

* Simplex noise
* OpenSimplex noise
* Perlin noise
* Wavelet noise

|

Value noise|

* Value noise

Point based|

* Worley noise (Voronoi/Cellular noise)

Applications|

* Procedural generation
* Computer graphics
* Video games
* Fractal landscapes

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Simulation noise. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Simulation_noise&oldid=4349043"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template