ofxFaceTrackerをiOSで使用する方法

openFrameworksが好きで良く触っています。
FITC2013に行った時にoF界隈の有名人の話を聞いて使い始めたフレームワークで触り始めて2年弱位経ってますが、まだまだ初心者の域を超えません。

openFrameworksの中でもofxFaceTrackerは見た目のインパクトの大きさから使ってみている方も多いのではないでしょうか。

Face Substitution on Vimeo

僕もその一人なのですが、iOSに導入しようとした時にMac版とは異なるコードが必要になります。
このアドオンを使ってアプリを作ったのは1年半ほど前ですが、地味に苦しんだので情報共有しておきます。

1. ofxFaceTracker.hをインクルードするときの注意

Mac版ではofxCv.hをインクルードしておけば問題なかったのですが、それだとビルドが通りませんでした。

f:id:l94q:20141020003745p:plain

ofxCv.hのインクルードの前にofxOpenCV.hをインクルードすると無事ビルドが通ります。

f:id:l94q:20141020004621p:plain

2. faceTracker.getImageMesh()で取得したメッシュのtexCoordsについて

iOSだとopenGL ESだからかわからないけれど、取得したメッシュがそのままではうまく動きません。
こんな感じで正規化してあげる必要があります。

        ofMesh cameraMesh = cameraFaceTracker.getImageMesh();
        /* texCoordを正規化 */
        for(int i=0; i< cameraMesh.getTexCoords().size(); i++) {
            ofVec2f & texCoord = cameraMesh.getTexCoords()[i];
            texCoord.x /= ofNextPow2(camera.getWidth());
            texCoord.y /= ofNextPow2(camera.getHeight());
        }


是非とも同じようにofxFaceTrackerをiOSで使用しようと考えている方の手助けになればと思います。

以前僕が作成したofxFaceTrackerを用いたアプリはこちら。ダウンロードしてみていただければと思います。

KineticPortrait

KineticPortrait

  • Ryota Katoh
  • エンターテインメント
  • 無料