• 追加された行はこの色です。
  • 削除された行はこの色です。
[[devel]]

* 準備 [#u99fa286]
* ダウンロードとか [#qfebb947]

- Leapmotionのサイトに行ってDEVSから最新のSDKを落としてくる
- インストーラが付いてるのでインストールする


* チェックアウトとか [#p9324ee3]

''KinectSDKも入れてあるのでLibraries全体をチェックアウトしちゃってもいいかも''

+ 以下の構造になるようにLeapSDKフォルダを作る
 Projects
 +- Springhead2
 +- Experiments
 +- Libraries
    +- LeapSDK
+ LeapSDKフォルダに以下のアドレスからSVNチェックアウトする
 svn+ssh://springhead.info/home/svn/lab/Libraries/trunk/LeapSDK
+ Leap.dllにパスを通す
-- Libraries\LeapSDK\lib\x64 のフルパスを環境変数PATHに追加する

* サンプルの実行 [#rf1b16f8]

* Leapmotionの有効化 [#j90728d1]

- 標準ではLeapmotion関連は無効化してあります。
-- Springhead2/src/HumanInterface/HILeap.h 13行目の以下のコメントアウトを外してください。
 // #define USE_LEAP
-- うっかりコメントアウトしたままコミットしないように注意!


* サンプルプログラム [#f52e7566]


- Springhead2\src\Samples\HumanInterface\LeapmotionBoxStack

- 注)LeapMotion用のプロジェクト設定はBoxStack10.slnにしかしてないので他のバージョン使う場合はプロジェクト設定してください。
 追加のライブラリディレクトリに
 ../../../../../Libraries/LeapSDK/lib/x64;
 を入れるだけでいいはず


* UDP対応の道のり [#v05d1054]

- C++でUDPを受取るクラスはくまろぼのプログラムを参考にするとよいです
-- svn+ssh://springhead.info/home/svn/lab/Experiments/trunk/StuffedRobot/PCProgram/PyKumarobo
-- UDPConnection.h と socket.h がそれ
-- 送信はしないのでUDPConnection.hのProtocolPCクラスの受信関連だけ使えばよいとおもう


- SpringheadでのLeapmotion関連ソースは以下の通り
-- include/HumanInterface/SprHILeap.h
-- src/HumanInterface/HILeap.h
-- src/HumanInterface/HILeap.cpp

- 本当はLeap::Controller()のAPIを抽象化するDRLeapクラスを作って、DRLeapUSBとDRLeapUDPを用意してHILeapからはDRLeapUSBかDRLeapUDPのどちらを使うか選べる仕組みにするのがベスト。
-- なのですが、とりあえずHILeapUDPという別クラスを作るのでもよいです(HILeapUDPIf, HILeapUDPDescもつくらないといけないので忘れずに。ファイルは上記3ファイルの中で良いでしょう)。


* Pythonのサンプル [#m9bf9a28]

こんなんでうごく

 import sys
 sys.path.append('/home/mitake/LeapDeveloperKit_2.0.1+15831_linux/LeapSDK/lib')
 sys.path.append('/home/mitake/LeapDeveloperKit_2.0.1+15831_linux/LeapSDK/lib/x64')
 
 import Leap
 
 controller = Leap.Controller()
 
 while True:
     frame = controller.frame()
     hand_cnt = 0
     for hand in frame.hands:
         hand_cnt+=1
 
         finger_cnt = 0
         for finger in hand.fingers:
             finger_cnt+=1
 
             for bone_idx in range(0,4):
                 bone = finger.bone(bone_idx)
                 print(hand_cnt, finger_cnt, bone_idx, bone.center.x, bone.center.y, bone.center.z)





* SprBlenderでのサンプルの実行 [#rf1b16f8]

- Experiments/KogumaBlender/koguma_leap3_delaysel.blend を実行する。