Perlin Noise

Out 3, 2010 by Paulo Afonso    3 Comments    Posted under: Flash

No FlashCamp 2010 a apresentação que levei conjuntamente com o Jorge Varandas recaiu sobre três temas sendo eles: Perlin Noise, SEO for Flash, Inverse Kinematics.
Neste artigo vou escrever sobre o primeiro tema, Perlin Noise.

O Perlin Noise é uma função matemática que gera uma pseudo-random textura que podemos descrever como um grandient noise.
O autor desta função foi Ken Perlin, desenvolveu-a para o filme clássico TRON em 1982 e melhorou-a em 2002. Valeu-lhe uns prémios e merecido reconhecimento.

No Flash o PerlinNoise é um método da classe bitmapdata e têm uma grande utilidade nas mais variadas situações, onde a nossa imaginação é o limite. É muito usada em efeitos como nuvens, fogo, água corrente, backgrounds .. etc

This movie requires Flash Player 8

Os parâmetros da função:
- baseX e baseY: permitem definir a frequência horizontal e vertical respectivamente.
- numOctave: corresponde ao numero de funções individuais a aplicar, poderá ser visto como layers.
- randomSeed: se todos os outros parâmetros forem iguais podemos ter um resultado diferente alterando este valor,
- stitch: permite gera texturas para padrões tile, uma imagem emenda nela própria sem notarmos onde fica a união. Neste caso usei o sitch para criar uma imagem de background.
-fractalNoise: true para um efeito mais suave, a false temos um efeito de turbulência. No exemplo se clicarmos em webcam pode-se visualizar a distorção da imagem e perceber o impacto do parâmetro fractalNoise.
- grayscale: força uma textura a ficar a preto e branco (neste caso só poderemos usar o canal do alpha, os restantes serão ignorados), ou então se usarmos false, podemos escolher os canais de cor que pretendemos usar com o channelOptions (para combinar distintos canais ou somamos ou usamos o operador lógico or)
- os offsets é um array de pontos que corresponde aos x,y para cada octave.

Dica: O perlinnoise é intensivo para o processador proporcionalmente ao tamanho do bitmap e aos parâmetros como por exemplo o numero de octavas etc.. para resolver este problema é usual usar um bitmapdata pequeno e depois fazer scale.

Exemplos de aplicação profissional do perlinnoise em projectos:



NEVOEIRO

Com meia duzia de linhas usando o alpha Channel e uma mascara criamos o efeito de nevoeiro

This movie requires Flash Player 8




PAPAGAIO

À mais ou menos 2 anos desenvolvemos um m-rec extensível para a Opel onde o utilizador podia interagir com um papagaio. Distorcemos as fitas do papagaio usando perlinnoise para dar uma sensação de vento.

This movie requires Flash Player 8




JATO DE LIQUIDOS E EXPLOSÕES

No caso do jato de líquidos existe uma animação simples de scale e alpha a um png onde é aplicado uma distorção, é o mapa da distorção que é gerado com o perlinnoise.
Já nas explosões o perlinnoise serve de mapa de fluxo das partículas.

This movie requires Flash Player 8




EXPLOSÃO NOME

This movie requires Flash Player 8




MAPA DE FLUXO

O mapa de fluxo é um perlinnoise que é modificado de 5 em 5 segundos, dai a variação das partículas mais acentuada neste intervalo de tempo.
Este mapa serve para encontrar o vector de deslocação de cada partícula, retirando-o através das informações do canais de cor. Com 4 canais (ARGB) podemos fazer corresponder 4 variáveis com variação entre valores inteiros de 0 a 255.
Para termos reacção ao rato bastou desenhar no mapa de fluxo um circulo na posição correspondente ao Mouse.

This movie requires Flash Player 8




APLICAÇÃO DO EFEITO NO SITE COFIDIS MOBILE

This movie requires Flash Player 8




Se gostares deixa-me uma mensagem :)



3 Comments + Add Comment

  • [...] This post was mentioned on Twitter by Paulo Afonso, Hugo Fernandes. Hugo Fernandes said: Muito bom RT @semmais: Transcrevi a minha apresentação sobre #perlinnoise para um post no meu blog http://bit.ly/arEr8L #flashcampportugal [...]

  • Muito bom Paulo! Gostei imenso da tua apresentação com o Perlin Noise e é uma coisa que vou explorar sem dúvida! São esses pequenos truques que transformam os sites de Flash que são interessantes, em sites de topo.

  • Obrigado Mauro :). Foi pouco tempo mas penso que deu para fazer uma introdução ao assunto.

Paulo Afonso

Me SEMMAIS é o nome que utilizo para apresentar o meu trabalho.


Curriculum: linkedin
Pessoal: facebook
Email: paulo@semmais.com

Tel: (+351) 93 89 45 683