openFrameworks0.8xをWindowsで触った感想

概要

ちょっとopenFrameworks(以下oFと略す)を触る機会があったので、得られた話をメモします。
バージョンは0.7xについては本も出ているのですが、最近の0.8x系の方がバグフィックスもされてて良いと思います。

僕自身も最初にoFを始めた時 http://trick7.com/2014/02/opneframeworks_memo/
こういった先達のメモがあるおかげでとっかかりになったので、それに末筆ながら追加するつもりで書きます。

目を通すと良い資料

環境

  • openFrameworks 0.8x
  • windows 7
  • VisualStudio 2012Pro
  • C++は、Effective C++を読んで「なるほど~~」って言ってるくらいの力量

ざっくり

標準で付いてくるAdd-onはともかく、他の事をしようと思うと、色々定番があったり、メンテされてない古いのがあったり、Macでしか動作確認してなくてwindowsだとメンテしないと動かなかったり(ハイ、oFはMacユーザー多いですね) するので、VisualStudio自体の使い方を聞ける、分かる環境でないとwindowsでは辛いと思います。
後方互換性とか、移植性とか、そういうのより、動くこと、カッコイイ物が作れるのが正義、みたいな感じは(Add-onによっては)かなり感じます。

Add-on

全体的な選び方と、それぞれのオススメを書きます。

選び方

http://ofxaddons.com/
のサイトを検索して、やりたいことに合わせて探します。 複数の候補があるときは

  • examplesが充実している方
  • リポジトリを見て、活発な方(issueが多いとか)

を選びましょう。
また候補が一つでも、ソースを見てみて嫌な予感がしたら、素直に自前で実装するというのも検討した方が良いように思います(高速でシリアル通信を行う場合、oFアドオンを探すより、他のライブラリを直接使ったほうが安定したりします)

GUI

ofxUIを勧めます。おそらく一番色々出来ます。
標準で付いてくるofxGUIは、基本的なパーツしかない上に、トグルとボタンのデザインが同じで、ユーザーに分かりにくいです。

OpenCV

ofxCvを絶対追加で使いましょう。楽に書けます。ofxOpenCvだけだと、チャラく書けないです。 物体検出とかエフェクトとか、思いつきそうなネタはofxCvにexampleで入ってたりして便利です。
ただ、依存先のOpenCVバージョンが2.3.1と恐ろしく古いので注意が必要です。自前で最新版にする等も検討する必要があります。

MultiWindow

MacだとofxSyphonが強そうですが、僕としてはofxMultiGLFWWindowがオススメです。windowsでも動きます。

https://github.com/charlesveasey/ofxMultiGLFWWindow

以前( http://izm-11.hatenablog.com/entry/2014/07/23/213158 )ofxFensterと戦いましたが、最近のoF環境ではofxMultiGLFWの方が作りが良いです。うまくGLFWを使っているのでコード量も少なく、処理を追いやすいです。

Kinect

WindowsではofxKinectNuiが一番安定していて、またKinectForWindowsとの相性も良いです。 いわゆるKinectSDKでやってることをそのまま書ける感じが良いです。 https://github.com/sadmb/ofxKinectNui

日本語表示

ofxTrueTypeFontUCの、fork先のこれが一番ハマりにくいです。 ofxUIと合わせて使う時には、ofxUI側のofxTrueType依存部分をこちらを参照するようにして、GUIに日本語を追加しています。

https://github.com/iniwap/ofxTrueTypeFontUC

Shader

標準のofShaderでも十分な気がします。glslの使い方を勉強する時も、このofShader越しに触った方が楽かもしれません。

最近困っている事