PixelBenderをとりあえず触ってみた。


7月のSpark project勉強会#1の時から知識としてはあった、PixelBenderなんですが、Spark project勉強会#2、そして、今日のAPMT4で3回目でやっと触ることにしました。特に、今日のAPMT4のプレゼンテーターのマインドのすごさに圧倒されて、「オレやべえ」を感じたのがきっかけですが。

とりあえず、ここからダウンロードhttp://labs.adobe.com/wiki/index.php/Pixel_Bender_Toolkit#Known_Issues

f:id:bao_bao:20080831232831j:image

僕はWindows環境なので、Windowsバージョンをダウンロードして>インストール>起動。

f:id:bao_bao:20080831233210j:image

起動すると上のような画面になります。

何もないので、

File>new Kernel Filter

を選択。

基本セットみたいなスクリプトが表示されます。

http://download.macromedia.com/pub/labs/pixelbender/filter_writing_tutorial.pdf

上のチュートリアルにしたがってスクリプトを書いていきます。

最終的に、

<languageVersion : 1.0;>
kernel bao_baoFilter
< namespace : "bao_bao";
vendor : "";
version : 1;
description : "bao_baoTestFilter";
>
{
//以下の4という数値は、R、G、B、Aの意味っぽい
 input image4 src;
 output pixel4 dst;

//parameterはglobalScopeでないとエラーになります。
//parameterメソッド?で右側にスライドバーを表示。
//ここではexposureという変数を変化させます。
 parameter float exposure
 <
 //minValue 最小値
 //maxValue 最大値
 //defaultValue 初期値

  minValue:float(-0.5);  
  maxValue:float(0.5);
  defaultValue:float(0.0);
 >;


//evaluatePixelメソッドで出力?かな
void evaluatePixel()
 {
  float4 inputColor = sampleNearest(src, outCoord());
  dst.rgb = pow(inputColor.rgb, float3(1.0 - exposure));
  dst.a = inputColor.a;
 }
}

というスクリプトになります。完全にチュートリアルから引用(9/1)コメントを編集


File>Load Imageを選択して、画像を適当に読み込みます。

右下のRunを押すとコンパイル?されてフィルターが画像に適用されます。

チュートリアルは、まあまあ読めて、大体理解したと思うのですが、その先がさっぱり。

http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&exc=26&loc=en_us

ここから、いろいろなサンプルをダウンロードして勉強していきます。

自分で好きなフィルタをインタラクティブに使えるのは、表現の幅が広がる気がします。

最初は、遊びがてらでやっていこうと思います。まずは、英語の壁が・・・・。


上のスクリプトで現状分からないメソッド?プロパティ?

(解決済み)float

・outCoord

floatとは、浮動小数点数を表す 4 バイトの型のこと。



<追記9/26>

ヘルプやブログを読んでみると、Cの文法だということを理解しました。

まあ、Cも書いた事も見た事も無いです・・・。

ActionScriptしか知らないですが、何となく分かった部分もありました。

void evaluatePixel(){
  //処理内容
}

上記は、ActionScriptだと以下

function evaluatePixel():void
{
  //処理内容
}

違う言語というのは、文法も全然違うのかなーっとこの年で新発見したわけで。PixelBenderは使いこなしてみたいため、Cの勉強もやろうと思いました。