2012年7月26日木曜日

初めての Open Frameworks

芸大の田所先生が公開されている資料を元に、Open Frameworksのお勉強を始めてみました。授業の資料が公開されているというのは本当にありがたいことです m(__)m

●第一回 Open Frameworksってなんじゃらほい〜インストールして、サンプルアプリを動かしてみて、何ができるのかを見てみるの回。



実はワタクシしょっぱなからつまづきまして。これから始める方にご参考まで:XcodeのバージョンやOSのバージョンが違うと、いろいろ挙動が違ったりするので、4.3.3がオススメです。4.1でエラーが出てあれ?あれ?を繰り返し、Xcodeを4.3.3にしてOS X 10.7.4であれ?あれ?を繰り返し、こちらのブログを参考にBase SDKとbuild targetをOS X 10.6にして実行してみたところ、動きました。(Xcode 4.3.3でOS X 10.7.4で動いたという人もいるので、他にも条件があるかもですが、とりあえず私の例はBase SDKとbuild targetを変えることで解決しました)あと、こちらのブログでも書かれている通り、左上の選択バーでは「openFrameworks」ではなく、「プロジェクト」を選択するのは必須のようです。

動いたら、サンプルアプリがゴマンとあるので、片っ端から動かしてみると、なんとなくどういうことができるのかのイメージがわきます :D

第二回。プロジェクトを作って、図形を描いて、文字を書いて、あれこれいじくってみるの回。



ここでも発生の落とし穴。。。Hamajiさんに教えていただいたのですが、
"ofDrawBitmapString" という関数は、直前の "ofSetColor" の 4 つ目の引数 (alpha、つまり透明度) が 255 でないと、何も表示されないようです。そのまま従う場合は直前で 255 を指定すれば、動きました。修正方法はここに書いてあり(ファイル名間違ってるけど。。。)、"of_0071_osx_release/libs/openFrameworks/graphics/ofBitmapFont.cpp"というファイルを修正すれば、255 以外でも動くようになりました。


あと、ここのサンプルコード中に出てくる "ofFont" というのは、"ofTrueTypeFont" の間違いらしいです。そしてこの "ofTrueTypeFont" ですが、英語なら OK なのですが、マルチバイト文字列に対応していないようです。それを修正するコードを公開している方もいるようです。。。というあたりは Uekawa さんに教えていただきました。


第三回はアニメーションを動かそうの回。がぜん楽しくなってきます。




このレッスンでは、こういうのを作ることができます。





これ見ちゃったらあれですよね、赤・緑・青のあの人に回ってもらいたくなりますよね。というわけで作ってみました!





再度サンプルアプリを動かしてみて、srcフォルダを覗いてみて、やっとなんかわかってきたような気になる。(気になるだけ。。。)

第四回。配列を使ってたくさんの図形を動かします。



openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B from Atsushi Tadokro

ちなみに前回まではスライドからコピペできたんですが、今回からコードが画像になっている。。。というわけでコピペ禁止だったんですね(てへ)

さて、今回のレッスンを経て、こんなものができます。

  

宿題は「これを画像でやってみよう」ということなんですが、当然ライセンスを気にしなくていいあの人の登場ですね。



第五回は外部から画像を取り込んで使うやり方。

実は前回の宿題は画像を取り込めないとできないので、見よう見まねでこのへんはやっちゃってたのでした。




テキストではあの方の画像を使っておられるようです。


心配症な私は、今回もCCライセンスのあの方に登場してもらいました。ほい。



まだまだ道のりは遠いですが、ちょっとずつ。ちょっとずつ。いっぱい教えて頂いた Toyoshima先生、ありがとうございます :D

追記:Xcodeで build できるのに、run できない問題が発生したときは、Product> Edit Scheme>Run で、executableのところにプロジェクトが選択されているか(というか外されていないか)確認すると直るかもしれません。

Disclaimer このブログは山崎富美の個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には一切の関係はありません。