Pregunta

Yo estaba estudiando ruido de Perlin a través de algunos ejemplos @ http://dindinx.net /OpenGL/index.php?menu=exemples&submenu=shaders y no pudo evitar darse cuenta de que su make3DNoiseTexture() en usos perlin.c noise3(ni) en lugar de PerlinNoise3D(...)

Ahora ¿por qué? No se supone Perlin Noise ser una suma de diferentes frecuencias y amplitudes de ruido?

qestion 2 es lo que hace el soporte para ni, inci, incj, inck? ¿Por qué utilizar ni en lugar de coordenadas x, y? ¿Por qué es ni incrementa con
ni[0]+=inci;
inci = 1.0 / (Noise3DTexSize / frequency);
Veo Hugo Elias creó su Perlin2D con coordenadas x, y, y lo mismo ocurre PerlinNoise3D (...).

Gracias de antemano:)

¿Fue útil?

Solución

ahora entiendo por qué y voy a responder a mi propia pregunta con la esperanza de que ayuda a otras personas.

Ruido de Perlin es en realidad una síntesis de ruidos de gradiente. En su proceso de producción, debemos calcular el producto escalar de un vector que apunta desde una de las esquinas pavimentos el punto de entrada al propio punto de entrada con el vector de gradiente generado aleatoria.

Ahora bien, si el punto de entrada fuera un número entero, tales como las coordenadas XYZ de una textura que desea crear, el producto escalar sería siempre devuelven 0, lo que le daría un ruido plana. Así que en lugar, utilizamos inci, incj, inck como un índice alternativo. Sí, sólo un índice, nada más.

Ahora volviendo a la pregunta 1, hay dos métodos para poner en práctica ruido de Perlin:
1. Calcular los valores de ruido por separado y almacenarlos en las ranuras RGBA en la textura
2.Synthesize los ruidos antes de mano y almacenarlos en una de las ranuras RGBA en la textura

noise3(ni) es la aplicación real de método 1, mientras que PerlinNoise3D(...) sugiere este último.

En mi opinión personal, el método 1 es mucho mejor porque tiene mucha más flexibilidad sobre cómo se utiliza cada octava en sus shaders.

Otros consejos

Mi conjetura sobre la razón para el uso noise3(ni) en su lugar si make3DNoiseTexture() PerlinNoise3D(...) es que cuando se utiliza esa textura ruido en su shader que desea ser capaz de replicar y modificar la funcionalidad de PerlinNoise3D(...) directamente en el sombreado.

Mi conjetura para el razonamiento detrás de ni, inci, incj, inck es que el uso de x, y, z del volumen directamente no dan un resultado bueno por lo escalando el ruido con la frecuencia de cambio, es posible ajustar la resolución del ruido de forma independiente desde el tamaño del volumen.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top