Posts in Category: processing

やっとこ実用的になったか

FTIRマルチタッチは
赤外線LED、赤外線カメラとこのカメラのタッチ画像を
座標へと変換するソフトが要なのですが、これってやっぱしwinが主でして
macでもあるにはあるんですけど、まともに動くのが無い!

TouchLibはmacだとなんだか相性が悪く、OpenCVのキー取得を呼び出すと落ちゃう。
OpenTouchは、なんとかメモリリーク箇所も発見解消してやっと動いたけど、
CPU負荷が140%となかなか贅沢な処理でファン全開。連続稼働はちょっとなーと。
でも、OpenTouchのexampleにあるcvBlobDetectionはかなり負荷が軽くていいんだけど
Blob認識のみでBlobトラッキング、TUIO送信が実装されていない。

もーmacだとすべてが惜しいんです。
「YOU winでやっちゃいなYO」ってなるんでしょうけど、やっぱしmacでやりたいんです。
なので、まともに動くものプリーズ!
と、欲しがってばかりだと進歩も無いので、どーせなら自前で改造してみました。
すんごい軽いcvBlobDetecionとめちゃ重portBlobDetectionのBlobTracker、TUIOsenderをニコイチに。

C++わっかんねーと悩みつつもなんとかあなたと合体(LeopardでもOK)
するとどうしたことでしょう、、CPU負荷が140%→6%!!
昔のあんたはなんだったの??
何を一所懸命やってたの???
激減にもほどがあります。
画面キャプチャソフトに負荷とられてるので、ほんとは15%くらいですけどね。

元の作者さんに許可とりたいけど、外人さんなので気後れしてしちゃってまだ聞いてない、、
でもま、もしかしたら今のMacでまともに動く唯一のTouch認識(TUIO付き)だったりなんかしてー(広川太一郎)
とりあえず2日くらい起動させっぱなしにして落ちないか検証中ですよ。

Share on Facebook

動画追加

いっこ前に張った動画は、自分のデジカメで録画したものだったけど
このマルチタッチプロジェクトのバンマスがDVカメラでも録画してました
ちゃんと音も合わせて編集しています。
さすがにキレイ・ちゃんとしてるので断然かっちょE!

ちなみにこれオケのBGMっぽいけど
エレピ&タッチしたときに出る音だけの即興です

Share on Facebook

お仲間が増えました

マルチタッチモニタが1台増えましたよ。
(出来たてなのでまだ不安定ですけど)
そしてこのプロジェクトにももうおひと方加わり
実際に2台でデモしました。
幻想的でなかなかイイかんじ・
これからネタを増やしたり
どんな構成にするのか課題はもりもり
touch認識はOpenTouchのportVideoBlobDetecioon
映像はProcessing
音はMax/MSP(maxLink)

Share on Facebook

インタラクションデモ2

準備中
準備中
モニター台新調しました。
機能性高くてナイスです・

flickr.com/photos/recotana/1781160985/" title="Photo Sharing">カメラとプロジェクタ
カメラとプロジェクター
まだ台は無いです。


タッチすると煙のような像がでます
でも血どばーみたい。

Share on Facebook

EclipseでProcessingでマルチクラス

マルチクラスってのもおかしなアレなんですけど
EclipseでProcessingをプログラミングする場合、Processingはタブでクラスを分けて書けるけど、生成されたjavaファイル見てみると、分けて書いたクラスは実はメインのクラスでだらだらーっと組み込まれてるんです。
Eclipseでクラスを分けて書いても、単純にメインのクラスへは組み込むことはできないのでどーしたもんかと悩んでました。
Cみたいな#includeプリプロセッサがあればなんてことはないんだけどなあ

で、ちょっとこんな風にして、マルチクラス(なんか抵抗あるな、この呼び名)やってみました。
インスタンスを作って呼び出す方法と、staticにして呼び出す方法
ちなみにEclipseがインストールされてるとゆー前提で。(ちなみにMacBook Eclipse3.3で日本語化のPleiadesプラグイン入れてます)
No1
まずは新規にプロジェクト作ります。

No2
プロジェクト名を入れて、JREをJVM1.4.2にしして(Processingは1.4じゃないとだめだったよーな)
「次へ>」を押す

No3

No4
ライブラリタグで外部jarを押して、processingのcore.jarを選択
(他に使用するライブラリがあれば適宜選択)
ここまでで下準備は完了

No5
新規にクラスを作ります。

No6
まず、パッケージ名を入力。これは適宜ですけど、
このプロジェクト内全てのクラスに共通な名前にするべきだろか。とりあえず。
名前はこのクラスの名前。
これら頭文字の大文字小文字で注意されるはず。Javaの命名規則で。

No7
最初に作ったのはsetup()やdraw()を入れておくメインのクラスで、
次にprocessingでの他のタブのクラスを
(写真のMultiClass1の1は間違いでMultiClassにしてました)
あともういっこクラスを作ってこんな感じにしてみました。

No8

Mainは

package multiclassTest;

import processing.core.PApplet;

public class Main extends PApplet{

int i=0;

//呼び出したいメソッドのあるクラスのインスタンスを作っとく
//このMainのオブジェクトを渡す(アプレット描画に必要)
MultiClass drawTest = new MultiClass(this);

 public void setup(){

  size(300,300);

  smooth();

 }

 public void draw(){

   background(100);

   if(++i > 200) i=0;

//上で作ったインスタンスでメソッド呼出
   drawTest.drawCircle(50+i,50+i,20,20);

//もういっこのクラスのstaticメソッドを呼出。
//Main(this)=PAppletオブジェクトを渡すのを忘れずに。
//こっちのほうがProcessingぽい気がする。。。
   MultiClassLine.lineTest(this,i,0,200-i,300);

 }

}

次のクラス。
これはインスタンスを作って呼び出す方法
コンストラクタのPApplet _pがキモです。
これ渡しとかないとアプレット内で描画できないんです。

package multiclassTest;

import processing.core.PApplet;

public class MultiClass {

 PApplet parent;

//コンストラクタ 
 public MultiClass(PApplet _p) {

  parent = _p;

 }

  void drawCircle(int _x , int _y , int _a ,int _b){

   parent.ellipse( _x , _y , _a , _b );

  }

}

さらに次のクラス。
いっこめと同じ理由でPApplet _pを渡して描画させてます。
こちらはstaticなやり方

package multiclassTest;

import processing.core.PApplet;

public class MultiClassLine extends Main{

  static void lineTest(PApplet _p, int _x1 , int _y1 , int _x2 , int _y2){

    _p.line(_x1, _y1, _x2, _y2);
  }
}

No9
こんな感じで描画してます

processing使い始めて1ヶ月くらいなので正直これでいいの??って感じで怪しさ満点ですが
なんかここまでやるとさくっと書けるProcessingの良さが薄れまくりです。。。
javaにしたほうがいいんでねの?ってかんじかも???
でもデバッガがあると楽なんですよね〜〜

Share on Facebook