1. ofxOpenNIがだいぶ変わってた

    openframeworksからkinectするときにお世話になるofxOpenNIですが、しばらく触らないうちに使い方が変わっていました。最新版では前のままのコードだと動きません。

    1.以前はbin/data/lib以下に各種ライブラリをコピーする必要がありましたが、最新のだとbin/data/configをコピーする必要があります。



    2.ofxOpenNIContext、ofxDepthGenerator、ofxUserGenerator等々が整理されて、それらの機能へはofxOpenNIクラスからアクセスします。クラス自体なくなってるみたいですね。使い方は付属のサンプル参照。

    3.各ジョイントにアクセスしたい場合、これまでのXN_SKEL_TORSOのようなXN系の名称ではなく、ofxOpenNIUtils.hで定義されているJointのenum名を使用します。具体的にはこんなかんじでアクセスできました。

    ofxOpenNIUser *user = openNIDevice.getTrackedUser(0);
    ofxOpenNIJoint *joint = user.getJoint(JOINT_TORSO);

    4.各Jointのorientationを取得したい場合、
    openNIDevice.setUseOrientationAllUsers(true);

    としてやらないといけません。これで結構はまりました。

    5.4をするとorientation系はまだ実装途中だよ、みたいなログがコンソールに出てきます。実際まだ動きがなんかおかしいような気がしないでもないです。ofxOpenNIJointのprotectedのメンバ変数xnJointOrientationが生のデータっぽいので、それでごにょごにょするとよいかもです。

     

    というところでしょうか。

    ちなみに、XCodeをバージョンアップするとopenframeworksがビルドできない問題ですが、MacOS10.6.sdkを入れると解消できました。あとopenframeworksの0073だとそれも必要ないみたいです。

    Posted by Takeya Hikage on 2013年03月13日
    Categories kinect openframeworks