LeapMotionのサンプルプログラムで遊んだ
<サンプルプログラムを動かしてみる>
手やモノの動きを検知するデバイスLeapMotionを研究室の先生が購入してきたので,とりあえず,javaのサンプルプログラムを動かしてみる.
参考サイト http://blogkamiuma.blogspot.jp/2013/08/leapmotion-eclipsejava.html
①SDKの入手
https://developer.leapmotion.com/
から,SDKをダウンロード.適当なフォルダで解凍.
②プロジェクト作成
Eclipseに適当なプロジェクトを作成する.
③サンプルプログラムのコピー
/LeapSDK/samples/Sample.java をプロジェクトのsrcにコピー
④ビルド・パスの設定1
ビルド・パスの構成 -> 外部jar追加
から,/LeapSDK/lib/LeapJava.jar をライブラリに追加
⑤ビルド・パスの設定2
追加した LeapJava.jar について
ネイティブ・ライブラリーのロケーション -> 編集
から,LeapJava.dll のあるフォルダを指定
僕の場合は /LeapSDK/lib/x64(32ビットの場合はx86)
⑥実行!
サンプルプログラムを実行すると,認識している手や指,ジェスチャに関する情報がコンソールに出力される.なるほど,この情報を使って何かをするわけですか.
<じゃんけんの手を表示する>
指の数に応じて,じゃんけんの手を表示するプログラムを作ってみた.
~やったこと~
・適当にじゃんけんの手の画像を拾い,gu.jpg,tyoki.jpg,pa.jpgと名付ける.
・AppFrameクラスを追加.
・SampleListenerクラスのonInitメソッドとonFrameメソッドをいじる.
いじった&追加したコードは以下.
class SampleListener extends Listener { AppFrame f; public void onInit(Controller controller) { System.out.println("Initialized"); f = new AppFrame(); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); f.setVisible(true); } public void onFrame(Controller controller) { Frame frame = controller.frame(); System.out.println(frame.fingers().count()); f.setFingerNum(frame.fingers().count()); f.repaint(); } } import java.awt.*; public class AppFrame extends Frame { private Image gu; private Image tyoki; private Image pa; private int fingerNum; public void paint(Graphics g){ switch(fingerNum){ case 0: g.drawImage(gu, 20, 40, 320, 320, this); break; case 2: g.drawImage(tyoki, 20, 40, 320, 320, this); break; case 5: g.drawImage(pa, 20, 40, 320, 320, this); break; default: g.clearRect(0, 0, 360, 380); break; } } AppFrame(){ setSize(360, 380); setLayout(null); gu = getToolkit().getImage("gu.jpg"); tyoki = getToolkit().getImage("tyoki.jpg"); pa = getToolkit().getImage("pa.jpg"); } public void setFingerNum(int fingerNum){ this.fingerNum = fingerNum; } }
結果,ちゃんと表示してくれた.ただし,指の数だけで判定しているので,指が2本と認識されればチョキが表示される.ちなみに,先輩が人形の足をLeapMotionにかざしたときもチョキの画像が表示された.