Pixel Bender Filtrelerinin Kullanımı
14 Ekim 2008 – 18:47Pixel Bender tarafından hazırlanan filtreleri hem Flash hem de Affter Effect içerisinde kullanabiliyoruz. Bu makalede hazırlanan .pbj uzantılı dosyaları Flash içerisine ekleyip filtreyi nasıl kullanabileceğimize değineceğim. Tabii unutmadan değinmek istediğim herhangi bir filtreyi kullanmak için filtreyi sizin yapmış olmanız gerekmez. Başkaları tarafından yapılan veya açık kaynak olan filtreleri de kullanabilirsiniz.
Başlamadan önce değinmek istediğim nokta eğer filtreyi Flash içerisinde kullanacaksanız filtre dosyasını Flash için export etmeniz gereklidir. Pixel Bender içerisinde “File” menüsü altındaki “Export Kernel Filter For Flash Player” seçeneği ile dosyayı ByteCode olarak kayıt etmeniz gerekiyor. Bunu yaptığınız varsayarak Flash içerisinde kullanılacak koda geçiyorum.
Filtrenin Kullanımı
Filtre dosyalarını kullanmak için ilk olarak filtre dosyasını Flash Player içerisine yüklemeniz gerekiyor. Bunun için ise URLLoader sınıfını kullanmamız gerekiyor. İlk olarak yeni bir URLLoader objesi oluşturuyoruz. Daha sonra loader sınıfının load metodu ile yüklenecek dosyanın adını ekliyoruz. Filtre dosyası ByteCode olarak oluşturulduğundan dolayı URLLoaderDataFormat özelliğini BINARY olarak atıyoruz. Son olarak da olay dinleyicisi ile dosyanın yüklenmesini takip ediyoruz. Dosya yüklendiğinde filtreyi kullanabiliriz.
-
var loader = new URLLoader();
-
loader.load(new URLRequest("MyTestFilter.pbj"));
-
loader.dataFormat=URLLoaderDataFormat.BINARY;
-
loader.addEventListener(Event.COMPLETE, filterLoaded);
Şimdi ise ilk olarak yeni Shader ve ShaderFilter objesi oluşturuyoruz. Shader objesi yüklenecek olan veriyi temsil edecek olan objemiz. Yani Pixel Bender içerisinde hazırlanan filtreyi temsil edecek olan sınıf yapısı. ShaderFilter ise bu verinin kullanımını sağlayacak olsn sınıf yapısıdır.
-
var shader:Shader;
-
var shaderFilter:ShaderFilter;
Daha sonrada ise olay dinleyicimizin fonksiyonunu yazıyoruz. Fonksiyon içerisinde shader objesine yüklenen veriyi atıyoruz. Yüklenen veriyi filtre olarak kullanabilmek için shaderFilter objesine atıyoruz. Son olarak da sahnedeki objeye filtreyi atıyoruz ve hepsi bu kadar, artık filtreyi kullanabiliriz.
-
function filterLoaded(event:Event) {
-
shader = new Shader(loader.data);
-
shaderFilter = new ShaderFilter(shader);
-
image_mc.filters = [shaderFilter];
-
}
Not: Bitmap filtreleri hakkında daha fazla bilgi almak için aşağıdaki linke göz atabilirsiniz;
http://enginyoyen.com/blog/tr/index.php/actionscript-30-ile-goruntu-filtrelerini-kullanmak/
Filtre Parametrelerinin Kullanımı
Filtreler içerisinde parametreler olabileceğine daha önceden değinmiştim. Bu parametreler genellikle filtrenin uygulayacağı efekti ne kadar uygulayacağını belirler. Benim örnek olarak hazırladığım filtrede ise sadece bir tane parametre var. Bu parametreye ulaşmak için shader objesinin data özelliğini kullanıyoruz. Bunu bir slider componentine atayarak bu değeri anlık olarak değiştirebiliriz. Böylece resim üzerindeki değişikliği anında görebileceğiz. Aşağıdaki kodu incelediğinizde amount değerinin bir dizi değişkeni olarak atandığını görüyorsunuz. Buradaki mantık şu; Pixel Bender içerisindeki float veri türleri birden fazla değer taşıyor. Aynı veri türü flash içerisinde kullanılmadığından dolayı geçişi dizi değişkeni ile sağlıyoruz. Diğer bir nokta ise image_mc movie clibine filtreyi yeniden atamamız. Bunun sebebide yapılan değişikliği görebilmemiz içindir.
-
slider.addEventListener(SliderEvent.CHANGE, changeAmount);
-
function changeAmount(e:SliderEvent) {
-
shader.data.amount.value = [e.target.value];
-
image_mc.filters = [shaderFilter];
-
}
Kaynak Dosyalar
Buradakikaynak dosyaları kullanabilmeniz için Bilgisayarınızda Flash CS4 yüklü olması gerekiyor.
Pixel Bender Örneği
Kapanış
Filtrelerin flash içerisinde temek kullanımı bu şekilde. Tabii Actionscript içerisinde Filtre içerisindeki tüm bilgilere ulaşabilirsiniz. Bu ve bana benzer diğer bilgileri ileriki makalelerimde değineceğim.
Kolay Gelsin
Engin!
