Articulo de referencia

Ruido de simulación

El ruido de simulación es una función que crea un campo vectorial sin divergencia . Esta señal puede utilizarse en simulaciones artísticas para aumentar la percepción de detalle...

El ruido de simulación es una función que crea un campo vectorial sin divergencia . Esta señal puede utilizarse en simulaciones artísticas para aumentar la percepción de detalles adicionales.

La función se puede calcular en tres dimensiones dividiendo el espacio en una cuadrícula regular. A cada arista se le asocia un valor aleatorio que indica un componente rotacional del material que gira alrededor de ella. Al seguir el movimiento del material rotacional dentro y fuera de las caras, se puede sumar rápidamente el flujo que atraviesa cada cara de la cuadrícula. Los valores de flujo en las caras de la cuadrícula se interpolan para crear un valor de campo para todas las posiciones.

El ruido de Perlin es la forma más antigua de ruido reticular , que se ha vuelto muy popular en gráficos por computadora . El ruido de Perlin no es adecuado para simulaciones porque no es libre de divergencia.

Los ruidos basados ​​en redes, como el ruido de simulación y el ruido de Perlin, a menudo se calculan a diferentes frecuencias y se suman para formar señales fractales de ancho de banda limitado .

Posteriormente se desarrollaron otros enfoques que utilizan identidades de cálculo vectorial para producir campos libres de divergencia, como el "ruido de rizo" propuesto por Rook Bridson y el "ruido libre de divergencia" de Ivan DeWolf. Estos a menudo requieren el cálculo de gradientes de ruido de red, que a veces no están disponibles fácilmente. Una implementación ingenua llamaría a una función de ruido de red varias veces para calcular su gradiente, lo que resultaría en más cálculos de los estrictamente necesarios. A diferencia de estos ruidos, el ruido de simulación tiene una justificación geométrica además de sus propiedades matemáticas. Simula vórtices dispersos en el espacio para producir su estética agradable.

Ruido de rizo

El campo vectorial se crea de la siguiente manera: para cada punto (x,y,z) en el espacio, se crea un campo vectorial G. Cada componente x, y y z de este campo vectorial (Gx, Gy, Gz) se define mediante una función de ruido Perlin o Simplex tridimensional con x, y y z como parámetros. La derivada parcial de Gx, Gy y Gz con respecto a x, y y z se obtiene a partir del gradiente del ruido Perlin o Simplex mediante diferencias finitas de cálculo implícito dentro del ruido Simplex.

Las derivadas parciales se utilizan para calcular F como el rotacional de G dado por

F=(GRAMOzyGRAMOyz,GRAMOincógnitazGRAMOzincógnita,GRAMOyincógnitaGRAMOincógnitay){\displaystyle 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}})}

Ruido bitangente

Este método se basa en el hecho de que el rotacional del gradiente de un campo escalar es cero y en la identidad que expande la divergencia de un producto vectorial de dos vectores A y B como la diferencia de los productos escalares de cada vector con el rotacional del otro:

×(φ)=0.{\displaystyle \nabla \times (\nabla \varphi )=\mathbf {0} .}

(A×B)= (×A)BA(×B){\displaystyle \nabla \cdot (\mathbf {A} \times \mathbf {B} )=\ (\nabla {\times }\mathbf {A} )\cdot \mathbf {B} \,-\,\mathbf {A} \cdot (\nabla {\times }\mathbf {B} )}

Esto significa que si el rotacional de ambos campos vectoriales es cero, entonces la divergencia del producto de dos vectores que son los gradientes de campos escalares también es cero. Esto da como resultado un campo vectorial sin divergencia por construcción, utilizando únicamente dos funciones de ruido para crear los campos escalares.

El campo vectorial se crea de la siguiente manera, se calculan dos campos escalares.ϕ{\displaystyle \phi }yψ{\displaystyle \psi }Utilizando funciones de ruido perlin o simplex 3D, se calculan los gradientes A y B de cada uno de estos campos, y el producto vectorial de A y B da como resultado un campo vectorial libre de divergencia.

Ruido de distancia con signo

El campo vectorial se crea a partir de una superficie implícita cerrada y diferenciable S = F (x,y,z) = 0. Para cada punto del espacio, frecuentemente fuera o cerca de la superficie, obtenemos un vector g que es normal a la superficie. Este vector es el gradiente de S o las derivadas parciales con respecto a x, y y z. Este vector no es unitario, pero podemos obtener una normal unitaria n dividiendo cada componente del punto por la magnitud del gradiente g . Fuera de la superficie, todas estas normales apuntan en dirección opuesta a la superficie.

gramo=F(incógnita,y,z)=(Fincógnita,Fy,Fz){\displaystyle g=\nabla F(x,y,z)=\left({\frac {\partial F}{\partial x}},{\frac {\partial F}{\partial y}},{\frac {\partial F}{\partial z}}\right)}

norte=gramo(incógnita,y,z)F(incógnita,y,z){\displaystyle \mathbf {n} ={\frac {g(x,y,z)}{\|\nabla F(x,y,z)\|}}}

F(incógnita,y,z)=(Fincógnita)2+(Fy)2+(Fz)2{\displaystyle \|\nabla F(x,y,z)\|={\sqrt {\left({\frac {\partial F}{\partial x}}\right)^{2}+\left({\frac {\partial F}{\partial y}}\right)^{2}+\left({\frac {\partial F}{\partial z}}\right)^{2}}}}

A continuación, calculamos un valor escalar p para ese punto del espacio utilizando una función de ruido Perlin o Simplex tridimensional. Luego, creamos un campo vectorial V = p n que apunta hacia fuera de la superficie. El rotacional de este campo vectorial indica la dirección en cada punto del espacio hacia donde deben moverse las partículas.

SDnorte=(VzyVyz,VincógnitazVzincógnita,VyincógnitaVincógnitay){\displaystyle SDN=({\frac {\partial Vz}{\partial y}}-{\frac {\partial Vy}{\partial z}},{\frac {\partial Vx}{\partial z}}-{\frac {\partial Vz}{\partial x}},{\frac {\partial Vy}{\partial x}}-{\frac {\partial Vx}{\partial y}})}

Por construcción, este vector SDN apuntará en dirección tangente a una isosuperficie al nivel de la distancia con signo a la superficie original y puede utilizarse para limitar los movimientos de las partículas a permanecer en esa superficie.

Referencias

Lecturas adicionales

  • Patel, M y Taylor, N. Diciembre de 2005. Campos simples sin divergencia para simulación artística . Journal of Graphics Tools , Volumen 10, Número 4.
  • Ivan DeWolf. 2005. Ruido sin divergencia .