leitura do artigo >

29
abr

Usando filtros Pixel Bender (*.pbj)

Uma das novidades do Flash Player 10 foi permitir o uso de filtros Pixel Bender. Esses filtros trabalham com os pixeis das imagens, permitindo assim criar diferentes efeitos que não poderiam ser criados diretamente no Flash.

Comentários (3) Comentários(2) Categorias Action Script3, Destaques, Geral

Uma das novidades do Flash Player 10 foi permitir o uso de filtros Pixel Bender. Ao instalar o Flash, também se instala o Pixel Bender Toolkit. Neste programa você cria um kernel que publicará um arquivo *.pbj, o qual será usado pelo *.swf para aplicar o filtro. A extensão do kernel é *.pbk e a linguagem utilizada é propria deste programa.
[Download id not defined]
Abaixo segue um exemplo de como aplicar um filtro a uma imagem carregada:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package {
    import flash.display.*;
    import flash.filters.*;
    import flash.events.*;
    import flash.net.*;
 
    public class PixelBender extends MovieClip {
 
        private var filterLoader:URLLoader = new URLLoader();
	private var imageLoader:Loader = new Loader();
	private var image:Sprite = new Sprite();
	private var shader:Shader = new Shader();
	private var shaderFilter:ShaderFilter = new ShaderFilter();
 
        public function PixelBender() {
            filterLoader.dataFormat = URLLoaderDataFormat.BINARY;
            filterLoader.addEventListener(Event.COMPLETE, filterLoaderComplete);
            filterLoader.load(new URLRequest("pixelate.pbj"));
        }
 
        private function filterLoaderComplete(event:Event):void {
            shader = new Shader(filterLoader.data);
            shaderFilter = new ShaderFilter(shader)
 
            imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaderComplete)
            imageLoader.load(new URLRequest("imagem.png"))
            addChild(imageLoader)
        }
 
        private function imageLoaderComplete(event:Event):void {
            imageLoader.filters = [shaderFilter]
            //+
        }
    }
}

O filtro do exemplo tem só um parametro: dimension. Ele é responsável pelo tamanho do efeito. No entando, o número de parametros pode variar de um filtro a outro. Os valores mínimo/máximo/padrão de cada parametro são definidos no kernel.

Supondo que no exemplo acima você deseja usar um componente slider para controlar o valor do parametro dimension. Então coloque o componente no palco, nomeie-o com nome de instancia slider e no lugar de //+, coloque o código:

1
2
3
4
5
    slider.addEventListener(Event.CHANGE, mudarValor)
    function mudarValor(e:Event) {
        shader.data["dimension"].value = [e.currentTarget.value]
        imageLoader.filters = [shaderFilter]
    }



Você pode acessar o parametro do filtro usando a classe ShaderParameter. Existem diferentes tipos de parametro e cada tipo requer um determinado número de elementos, os quais são passados através de uma matriz Array indexada. O parametro dimension do exemplo é do tipo int, por isso só requer um elemento. Supondo que exista um parametro do tipo float3, você deverá usar [valor1, valor2, valor3].

Exemplo de Pixel Bender
Baixado 303 vezes
Tamanho 1016.26 KB
Clique para fazer o download

E se quiser ver um aplicativo no qual usei esse tipo de filtro, visite:
http://www.igoramendola.com/photoprofile

Na pasta .\Adobe\Adobe Utilities\Pixel Bender Toolkit\pixel bender files\ você encontra o kernel do filtro usado no exemplo, junto com mais alguns.
Para baixar mais filtros, clique aqui.

Postado em 29-04-2009 por Igor Amendola
em Action Script3, Destaques, Geral

Share/Save/Bookmark

Comentários

  • Bruno disse:
    em 1 de maio de 2009

    Igor, ótima explicação, era dissu q eu tava precisando saber quando vc disse pra eu estudar o PixelBender e o Shader, agora q fui entender como usar os filtro, etc.
    vlw!

  • neyRicardo disse:
    em 5 de julho de 2009

    Flash nãoomeu forte, recoheço, mas com vocês explicando desse jeito simplificado fiquei até animado em voltar a estudar.

    Parabéns pelo post e pelo blog!

 Escreva um Comentário

Seu nome

E-mail (não será publicado) (obrigatório)

Website

Comente

Spam protection by WP Captcha-Free