Creación de texturas con funciones de ruido

Para modificar la apariencia de un mapa de bits, se le puede aplicar un efecto de ruido utilizando para ello los métodos noise() o perlinNoise(). Un efecto de ruido puede asemejarse a la estática que aparece en una pantalla de televisión no sintonizada.

Para aplicar un efecto de ruido a un mapa de bits se utiliza el método noise(). Este método aplica un valor de color aleatorio a los píxeles que se hallan dentro de un área especificada de una imagen de mapa de bits.

Este método acepta cinco parámetros:

En el siguiente ejemplo se crea una imagen de mapa de bits y se le aplica un patrón de ruido azul:

import flash.display.Bitmap;
import flash.display.BitmapData;

var myBitmap:BitmapData = new BitmapData(250, 250,false, 0xff000000);
myBitmap.noise(500, 0, 255, BitmapDataChannel.BLUE,false);
var image:Bitmap = new Bitmap(myBitmap);
addChild(image);

Si se desea crear una textura de apariencia más orgánica, es aconsejable utilizar el método perlinNoise(). El método perlinNoise() produce texturas orgánicas realistas que resultan idóneas para humo, nubes, agua, fuego e incluso explosiones.

Dado que se genera mediante un algoritmo, el método perlinNoise() utiliza menos memoria que las texturas basadas en mapas de bits. Sin embargo, puede repercutir en el uso del procesador y ralentizar el contenido Flash, haciendo que la pantalla se redibuje más lentamente que la velocidad de fotogramas, sobre todo en equipos antiguos. Esto se debe sobre todo a los cálculos en punto flotante que hay que ejecutar para procesar los algoritmos de ruido Perlin.

Este método acepta nueve parámetros (los seis primeros son obligatorios):

En el siguiente ejemplo se crea un objeto BitmapData de 150 x 150 píxeles que llama al método perlinNoise() para generar un efecto de nubes azul y verde:

import flash.display.Bitmap;
import flash.display.BitmapData;

var myBitmapDataObject:BitmapData = new BitmapData(150, 150, false, 0x00FF0000);

var seed:Number = Math.floor(Math.random() * 100);
var channels:uint = BitmapDataChannel.GREEN | BitmapDataChannel.BLUE 
myBitmapDataObject.perlinNoise(100, 80, 6, seed, false, true, channels, false, null);

var myBitmap:Bitmap = new Bitmap(myBitmapDataObject);
addChild(myBitmap);

Flash CS3

 

Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios

Página actual: http://livedocs.adobe.com/flash/9.0_es/main/00000248.html