PerfumeのモーションキャプチャデータをiOSアプリで動かす 際に使用したアドオン『ofxBvh』のソースを見てみると、
他のアドオンやライブラリにも依存してなくて、ソースも500行程度
と、意外とシンプルで、しかもあまりoFの機能に深く依存してないように見えました。
自分の場合、iOS SDK / Objective-C を母国語とすると、oF / C++ というのは外国語であって、「ObjCを覚えなくてもC++で書ける!」とかはメリットではないし、 oF はラッパーとして必ずしも質がいい実装ばかりではない ので、必要なアドオンだけ oF 抜きで使用 できれば、それに越したことはありません *1。
というわけで、ofxBvhを例にとり、普通の(oFを使用しない) OpenGL プロジェクトで使うためにどの程度修正すればいいのか、検討してみます。
(※ openFrameworks Advent Calendar 2013 - Qiita [キータ] 14日目の記事です)
ofXXXXの洗い出し
まずは ofxBvh.{h,cpp}に含まれている ofXXXX という型やクラスを洗い出してみます。
- ofVec3f
- ofMatrix4x4
- ofQuaternion
- ofToDataPath()
- ofBufferFromFile()
- ofGetFrameNum()
- ofGetLastFrameTime()
- ofSetColor()
- ofCircle()
- ofInRange()
- ofToFloat()
- ofSplitString()
- ofToInt()
ofxBvh.{h,cpp} で定義されているものは除外しています。
それぞれの実装内容を確認
洗い出したクラスやメソッドの実装内容を確認・・・しようと思ってましたが、洗い出してみたクラス名やメソッド名を見ると、 よくあるユーティリティ的なクラスやメソッドばかり なので、何か 特別な専門知識を要する処理とかはなさそう です。
というわけで、ソースの確認はここでは省略。
結論
アドオンによっては可 かと。言い換えると、 oFに依存している部分を自分で書き換えるのに高度な専門知識や労力は必要なさそう です。
ofxBvh のように便利な(門外漢にとっては自分ではどう実装してよいかわからない)アドオンが、oFにとらわれず汎用的に使えるとなるとかなりありがたいです。
次の機会には実際にoF抜きのOpenGLプロジェクトで使ってみるところまでやってみようと思います。
*1:使わないでいいサードパーティ製ライブラリは使わない方がいい、というのはoFに限らず普遍的な話かと。