top of page

Leap Motion & openFrameworks 指表示

Leap Motionで検出した手・指をopenFrameworksにより、表示させます。openFrameworksでは①ofLeapMotionというアドオンを使う方法と、②Leap MotionのSDKを使う方法があるますが、本ホームページでは②のSDKを用います。理由としては、純正のSDKのほうがアップグレード更新が速いため、最新の機能が使えるためです。下記のページを参考に、プログラムを作っていきます。

http://gndo.blogspot.jp/2013/07/leap-motion-openframeworks.html

PIとDEG_TO_RADとRAD_TO_DEGという定数が、2重定義でビルドエラーが出ますが、上記のURLを参考にifndefでくくると、エラーは出なくなりビルドできます。実行結果は下図の通りです。

フレームの処理はopenFrameworksのdraw()で処理し、一過性のイベント(Leap motionのサービス開始等)はLeap Listerの関数で処理します。そのため、ofAppクラスにLeap::Listernクラスを継承しています。

Leap MotionのSDKでも問題なく動くことができたので、次にジェスチャーにInteractionできるように改造していきたいと思います。

// ofApp.h //////////////////////////////////////////////

#pragma once

#include "ofMain.h" #include "Leap.h"

using namespace Leap;

class ofApp : public ofBaseApp, public Listener{

public: void setup(); void update(); void draw();

void keyPressed(int key); void keyReleased(int key); void mouseMoved(int x, int y ); void mouseDragged(int x, int y, int button); void mousePressed(int x, int y, int button); void mouseReleased(int x, int y, int button); void mouseEntered(int x, int y); void mouseExited(int x, int y); void windowResized(int w, int h); void dragEvent(ofDragInfo dragInfo); void gotMessage(ofMessage msg);

// Leap Motionのコントローラー Controller leap; // カメラ ofCamera camera; // 球体の描画処理 void drawSphere(Leap::Vector vector, float radius);

//----- 一過性のイベントだけListnerから取得 ----------------------------// //----- フレームの処理はdraw()で行う -----------------------------------// void onConnect(const Controller&) { cout << __FUNCTION__ << endl; }

void onDisconnect(const Controller&) { cout << __FUNCTION__ << endl; }

void onFocusGained(const Controller&) { cout << __FUNCTION__ << endl; }

void onFocusLost(const Controller&) { cout << __FUNCTION__ << endl; }

void onServiceConnect(const Controller&) { cout << __FUNCTION__ << endl; }

void onServiceDisconnect(const Controller&) { cout << __FUNCTION__ << endl; } //------------------------------------------------------------//

};

// ofApp.h //////////////////////////////////////////////

#pragma once

#include "ofMain.h" #include "Leap.h"

using namespace Leap;

class ofApp : public ofBaseApp, public Listener{

public: void setup(); void update(); void draw();

void keyPressed(int key); void keyReleased(int key); void mouseMoved(int x, int y ); void mouseDragged(int x, int y, int button); void mousePressed(int x, int y, int button); void mouseReleased(int x, int y, int button); void mouseEntered(int x, int y); void mouseExited(int x, int y); void windowResized(int w, int h); void dragEvent(ofDragInfo dragInfo); void gotMessage(ofMessage msg);

// Leap Motionのコントローラー Controller leap; // カメラ ofCamera camera; // 球体の描画処理 void drawSphere(Leap::Vector vector, float radius);

//----- 一過性のイベントだけListnerから取得 ----------------------------// //----- フレームの処理はdraw()で行う -----------------------------------// void onConnect(const Controller&) { cout << __FUNCTION__ << endl; }

void onDisconnect(const Controller&) { cout << __FUNCTION__ << endl; }

void onFocusGained(const Controller&) { cout << __FUNCTION__ << endl; }

void onFocusLost(const Controller&) { cout << __FUNCTION__ << endl; }

void onServiceConnect(const Controller&) { cout << __FUNCTION__ << endl; }

void onServiceDisconnect(const Controller&) { cout << __FUNCTION__ << endl; } //------------------------------------------------------------//

};

特集記事
後でもう一度お試しください
記事が公開されると、ここに表示されます。
最新記事
アーカイブ
タグから検索
ソーシャルメディア
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page