日曜日, 7月 26, 2009

openframeworksでaddonを試す

FATで入ってるaddonはいいとして、他のaddonを使う時はどういう方法がいいのかなと思って試してみました。かなり愚直なやり方です。

ofxMSAPhysicsを使ってみる。
processingのtraer physics(いつの間にかソースが公開されている!)に似たAPI。

1.ダウンロード
svnがわかる人は
svn checkout http://ofxmsaof.googlecode.com/svn/trunk/ ofxmsaof-read-only

わからない人はミラーからダウンロードできます。
ofxPhysics以外にも色々入ってます。

2.プロジェクトを作る

apps/examples/emptyexamplesフォルダをコピーしてペースト。フォルダの名前をPhysicsTestとする。その中にaddonsというフォルダを作り、ダウンロードしたフォルダの中からofxMSAPhysicsとofxObjcPointerをコピーしてaddonsフォルダの中にペースト。srcフォルダ以外を消しておく。
ofxObjcPointerはメモリ管理に使っているらしい。

xcodeprojファイルを開いて、Finderからaddonsフォルダをドラッグして「Groups & Files」にドロップ。日本語環境だと「グループとファイル」。僕は調子こいて英語にしています。

ダイアログが出てくるので多分そのままOKすればいい。上の方にフォルダをコピーするかどうかチェックする項目があるけど、今回はプロジェクト内に既にコピーしてあるのでチェックは外しておく。ラジオボタンは「Recursively Create Groups for any added folders(追加したフォルダに再帰的にグループを作成する)」方で。src以外を消したのはここで変なことにならないため。

これで準備完了。

3.コードを書く
examplesの中身をコピーしてもいいですが、複雑なので使い方を覚える意味でも必要そうなところを抜き出して改変しました。マウスをクリックしたらボールが落ちてくるサンプルです。キーボードを押すと消えます。

ofxMSAPhysics physics;
でofxMSAPhysicsクラス型を宣言して、physics.makeParticle(x,y,z)でパーティクルの生成。
p->xとかが何なのかわからない場合はSBAW09の第11回目とかOF for Processing usersとかOoops!を参照。

ソースコードがうまく貼付けられなかったのでプロジェクトごとアップしました。
physicsTest.zip
---
*2.についてもう少しましなやり方を後日知った

月曜日, 7月 20, 2009

hysyskとかmrrychとかいい加減にしよう

myfye.net
丸尾君の新作。おんぶにだっこのだっこ担当(クライアントサイド)。おんぶ担当(サーバーサイド/normal version)はnajimi.jpのyamakk。

撮った写真がカメラからそのままネットにアップロードされ、撮影の間隔が12秒以内の場合、指定された濃度で自動的に乗算合成されて一枚になります。

このような仕組みが、どう撮るものに影響してくるのか楽しみです。

HTMLからSWFに値を渡す方法、スライダーなどのユーザーインターフェース、ビットマップの操作など色々勉強になりました。

最近読み始めた「ActionScript 3.0デザインパターン」の内容を習得できればもっと綺麗に書き直せそうです。
Foundation Actionscript 3.0 Image Effect」も買ったので今後のバージョンアップに活かせそうです。

金曜日, 7月 17, 2009

openframeworksの始め方

去年YCAMでのワークショップに参加したopenframeworksですが、その後iPhone版(ofxiphone, mobileframeworks)が出たり、多摩美の授業SBAW09が公開されてたしているので、再び勉強してみようと考えています。Mac OS10.5.7 Xcode3.1.3です。買ったばっかりのMacBook Proです。

openframeworksはここからダウンロードできます。FATというのはOpenCVなどがaddonとして組み込まれているバージョンです。通常はこちらをダウンロードして使えばいいと思います。

一番最初にopenframeworksに触れた時は、Xcodeの使い方がわからないこともあり、何からどうすればいいのか全くわかりませんでした。

普通のプログラム開発は、ライブラリなどを必要に応じて追加していくことが多いと思うのですが、openframeworksの場合は逆です。必要となる環境が予め用意されていて、高度なc++の知識なしにアプリケーションを作ることができます。

zipファイルを展開してできたof_preRelease_v0.06_xcode_FATフォルダ内に、appsというフォルダがあります。その中にexamplesフォルダとaddonsExamplesというフォルダがあり、名前の通りそれぞれのサンプルコードになっています。openFrameworks.xcodeprojというファイルを開き、Build and Go(ビルドして進行)でアプリケーションができ上がるはずです。

of_preRelease_v0.06_xcode_FATフォルダはどこにあってもいいですが、僕の場合はホーム以下にdevというフォルダを作り、言語毎に分けているので、ofというフォルダを作ってそこに入れてあります。
このようなファイルの管理方法も今後よく考えていく必要があります。

新しく自分でプログラムを書く時は、通常のものならばemptyExample、addonを使う場合はalladdonsExampleを複製して使います。apps以下に新しくフォルダを作り(僕はsketchというフォルダ名にしています)、複製したフォルダを格納します。apps以下のフォルダも、複製してできたフォルダも名前は何でもいいですが、libsフォルダやaddonsフォルダを読み込むため、階層構造はexamplesなどと同じにしておきます。.xcodeprojという拡張子のついたプロジェクトファイル名を変更する場合は.plistファイル名も変更し、中身の編集も必要です。方法はSBAW09の第五回に書いてあり、テンプレートも作って下さっています。僕は変更しないで作ってます。

よくネット上でサンプルコードが配られていたりしますが、これらの仕組みを知らなかったので動かし方がわかりませんでした。Xcodeのドキュメントなども読む必要がありますね。

processingなどに比べていいことは、速いのは勿論、ソースコードを辿りやすいということです。例えばofRectという四角を描画する関数は、libsフォルダの中のopenframeworks/graphics/ofGraphics.cppに書いてあります。これを読めばどのような処理を行っているかがわかります。なので勉強にもいいです(あまり良い書き方がされていないという声も聞きますが僕にはまだわかりません)。