Más de gamedev.SE descubrimos que el flash implementation of Perlin-noise parece desviarse bastante de otras implementaciones.¿Cómo se implementa el ruido Perlin en flash?
No encontré ningún detalle de implementación en línea, pero me pregunto si alguien puede decir qué algoritmo se está utilizando para Perlin-noise en flash.
Usando bitmapData.perlinNoise(32, 32, 1, 200, false, false, 7, true);
genera imágenes como ésta donde sólo el parámetro numOctaves
se ha cambiado (1
, 2
, 4
de izquierda a derecha):
Sin embargo otras implementaciones de Perlin ruido ven muy diferentes. Por ejemplo, la imagen de la Wikipedia article about Perlin-noise:
también this Actionscript Implementation of Perlin-noise produce resultados muy diferentes, como se puede ver en las siguientes imágenes (Octavas 1
, 2
y 4
de izquierda a derecha):
Lo que más me interesa es el aspecto del ruido con solo una octava. En la implementación del flash puede ver claramente que el ruido se está formando como burbujas separadas.
Importante: El ruido generado en flash usa false
para el parámetro fractalNoise
. Si fractalNoise
se establece en true
, los resultados son en realidad muy similares a los de Wikipedia y otras implementaciones.
La descripción del parámetro dice lo siguiente:
valor booleano. Si el valor es verdadero, el método genera ruido fractal; de lo contrario, genera turbulencia. Una imagen con turbulencia tiene discontinuidades visibles en el gradiente que pueden hacer que se aproxime mejor a los efectos visuales más nítidos, como las llamas y las olas del océano.
Como podemos ver, que hablan de la turbulencia para describir el método que genera el ruido. Así que supongo que la pregunta es: ¿esa salida generada por flash sigue siendo ruido de Perlin? ¿O hay otro nombre para ese tipo de ruido? Y lo más importante: ¿dónde se puede encontrar una implementación para crear ruido como este?
Lo siento, pero eso no es todo. Incluso utilicé el código de uno de sus enlaces para generar las imágenes del ruido en el que no estoy * interesado *. La implementación del flash no es diferente porque está basada en un entero (no lo es) y si se genera una imagen al final, vas a tener números enteros, no hay forma de evitar eso. La implementación del flash le permite elegir entre "turbulencia" y ruido "regular". Lo que me interesa es un algoritmo para ** turbulencia **. Si buscas imágenes de Google para "ruido de turbulencia" y "ruido de perlin", verás la diferencia. – bummzack