Content deleted Content added
Atomvinter (talk | contribs) |
|||
(6 intermediate revisions by 4 users not shown) | |||
Line 1:
{{Short description|Section of maths dealing with creating simulations}}
'''Simulation noise''' is a [[function (mathematics)|function]] that creates a [[divergence-free]] vector field. This signal can be used in artistic simulations for the purposes of increasing the perception of extra detail.▼
{{No footnotes|date=October 2024}}
▲'''Simulation noise''' is a [[function (mathematics)|function]] that creates a [[divergence-free]] vector field. This signal can be used in artistic simulations for the
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.
Line 9 ⟶ 12:
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.
== Curl
The vector field is created as follows, for
The
<math>F = (\frac{\partial Gz}{\partial y} - \frac{\partial Gy}{\partial z} ,\frac{\partial Gx}{\partial z} - \frac{\partial Gz}{\partial x},\frac{\partial Gy}{\partial x} - \frac{\partial Gx}{\partial y})</math>
== Bitangent
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:
Line 29 ⟶ 32:
The vector field es created as follows, two scalar fields are calculated <math>\phi</math> and <math>\psi</math> 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
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,
<math>
Line 43 ⟶ 46:
</math>
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 '''
<math>SDN = (\frac{\partial
By construction this vector SDN will point in a tangent direction to
Line 54 ⟶ 57:
==Further reading==
*Patel, M & Taylor, N. December 2005. [https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.611.9001&rep=rep1&type=pdf Simple Divergence-Free Fields for Artistic Simulation]. ''[[Journal of Graphics Tools]]'', Volume 10, Number 4.
*Ivan DeWolf. 2005. [https://www.academia.edu/18125534/Divergence_Free_Noise Divergence-Free Noise].
{{Noise}}
|