＄2-1「Leap Motion（ハンドトラッキング）のセットアップをして実際に動かしてみる」【ヘッドマウントディスプレイとUnityでVRとかMRの開発をやってみる．】

#はじめに

VRやAR開発をしていく中でオブジェクトとのやり取りをもっと簡単にできないかと思いまして，研究室に眠っていたLeap Motionを使って色々試作するためのメモ書きです．



環境一覧
[SteamVR](https://store.steampowered.com/app/250820/SteamVR/?l=japanese) 1.16.10
[Unity](https://unity3d.com/jp/get-unity/download) 2019.4.27f1 or 2020.1.17f1（動作確認済み，非対応なSDKあり）

[SteamVR Plugin](https://assetstore.unity.com/packages/tools/integration/steamvr-plugin-32647) 2.7.3
[Vive SRanipalRuntime Plugin](https://hub.vive.com/en-US/download) 1.3.2.0


追加アクセサリー
[VIVEトラッカー2018](https://www.amazon.co.jp/dp/B0748ZY323/ref=cm_sw_r_tw_dp_QDZSM4A3844PSM33DB3R?_encoding=UTF8&psc=1)
[Ovrvision Pro（ステレオカメラ）](https://www.amazon.co.jp/dp/B01N7H8YUM/ref=cm_sw_em_r_mt_dp_6TGRDF5BWQPW2PJ1H4WN)
[Leap Motion](https://www.amazon.co.jp/Leap-Motion-Controller/dp/B075T4MH77/ref=asc_df_B075T4MH77/?tag=jpgo-22&linkCode=df0&hvadid=342463500927&hvpos=&hvnetw=g&hvrand=13721783060484696807&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009320&hvtargid=pla-945077929421&psc=1)


使用PCスペック
インテル® Core™ i7-7700K
NVIDIA GeForce GTX 1070

- **環境作成編**

 #1 [Unityのセットアップをする](https://qiita.com/RyoyaHase/items/5a173b7acbdf9aa2cfff)　2021年 1月更新

 #2 [プロジェクトを作ってみる](https://qiita.com/RyoyaHase/items/7b2148e9034584db7420)　2021年 1月更新

 #3-α [Unity2019でVR開発のための環境を整える（SteamVR Plugin2.7.Xをインストールする）：推奨](https://qiita.com/RyoyaHase/items/36910ec8a0b3d8122f8c)　2021年 6月更新

 #3-β [Unity2020でVR開発のための環境を整える（SteamVR Plugin2.7.Xをインストールする）](https://qiita.com/RyoyaHase/items/b7b5f8a7110810c1c0f1)　2021年 5月更新

 #3-おまけ [UnityでVR開発のための環境を整える（SteamVR Pluginの最新版をインストールする）：非推奨](https://qiita.com/RyoyaHase/items/f8b4fb5b04d9f02aae49)　2021年 2月更新

 #4 [SteamVRのダウングレードと自動アップデートの停止（上級者向け）](https://qiita.com/RyoyaHase/items/0dab278b080f517032a0)　2021年 5月更新


- **コントローラの入力やトラッカー，HMDの位置座標，回転座標を得る＋α**

 #5 [VIVEコントローラのボタン入力を取得する](https://qiita.com/RyoyaHase/items/89ffc9d134b784b8ae50)　2021年 2月更新

 #6 [トリガーの押し具合やトラックパッドの位置情報の入力を取得する](https://qiita.com/RyoyaHase/items/81fa026f68aee02fa5d4)　2021年 2月更新

 #6-おまけ [VIVEコントローラを使った開発をする時のおすすめ設定（独断と偏見）](https://qiita.com/RyoyaHase/items/d622e1bb0e345cf78f4f)　2021年 5月更新

 #7 [ヘッドマウントディスプレイとコントローラの位置座標と回転を取得する](https://qiita.com/RyoyaHase/items/325e7250c01f47e7e63b)　2021年 2月更新

 #8 [VIVEトラッカー2018を有効化してUnity上で位置座標と回転を取得](https://qiita.com/RyoyaHase/items/015bbb8671833ef8e740)　2021年 5月更新

 #9 [VIVEコントローラの振動機能を開発してみる](https://qiita.com/RyoyaHase/items/0690761fed2e71f6d517)　2021年 4月更新


- **VIVE Pro Eyeのアイトラッキングを使ってみる**

 #10 [VIVE Pro Eyeの視線トラッキングを有効化（セットアップ）する](https://qiita.com/RyoyaHase/items/024f3589547d1af84a92)　2021年 4月更新

 #11 [VIVE Pro Eyeのアイトラッキングを使ってUnity上で瞬きや視線のデータを取得する](https://qiita.com/RyoyaHase/items/5af948666a039d48a68d)　2021年 4月更新

 #11-おまけ [VIVE Pro Eyeのアイトラッキングで計測できるデータについて（適宜更新）](https://qiita.com/RyoyaHase/items/044826488e763f896a0f)　2021年 4月更新


- **VIVE Pro Eyeのカメラを使ってみる**

 #12 [VIVE Pro Eyeのフロントカメラの解像度（性能）とAR機能を有効化について](https://qiita.com/RyoyaHase/items/853938ec7c8745ec811c)　2021年 5月更新


- **小技**

 [プレイエリアの境界線（シャペロン境界）が表示されないように設定を変更する](https://qiita.com/RyoyaHase/items/57296d7753877afc6f34)　2021年 6月更新

 [Unity上でカメラを複数台追加してHMDやコントローラの動きを見る](https://qiita.com/RyoyaHase/items/4b4733503d53c8387db4)　2021年 6月更新


- **Ovrvision Pro（ステレオカメラ）を使ってAR開発してみる**

 ＄1-1 [Ovrvision Pro（ステレオカメラ）のセットアップをして実際に動かしてみる](https://qiita.com/RyoyaHase/items/262ad2133ee89d00b3cb)　2021年 6月更新

 ＄1-2 [Ovrvision Pro（ステレオカメラ）とHMDを使ってARアプリ開発する](https://qiita.com/RyoyaHase/items/4abcd90f0f2319c89114)　2021年 6月更新

- **Leap Motionを使ってハンドトラッキングしてみる**

 ＄2-1 [__Leap Motion（ハンドトラッキング）のセットアップをして実際に動かしてみる（この記事）__](https://qiita.com/RyoyaHase/items/6891c21c8c21dcb08b2f)　2021年 6月更新

 ＄2-2 [Leap Motion（ハンドトラッキング）とHMDを使ったインタラクティブなアプリ開発する](https://qiita.com/RyoyaHase/items/b0f6cd1d7474286f99ed)　2021年 6月更新

- **アプリを作ってみる**

  [VR（仮想空間）上に曲面ディスプレイを作成して大画面で広角WEBカメラ映像を見る](https://qiita.com/RyoyaHase/items/cc57e67799c1b14ef15d)　2021年 5月更新

今回の記事では，

1．Leap Motionのドライバをインストールして動作確認をしてみる．
2．Unity上で実際に動かしてみる．
3．HMDを使ったサンプルプログラムを動かしてみる．

という流れ．

#1．Leap Motionのドライバをインストールして動作確認をしてみる．

まずは[Leap Motion公式サイト](https://developer.leapmotion.com/)のトップページにアクセスして"GET STARTED"を押します．
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/69fc5a09-e562-f0d2-a14c-31177ebc1b76.png)

リンク先から少し下にスクロールすると製品が表示されるので今回使うLeap Motion Controller下の"SELECT"を押します．
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/55455bb3-946c-bb7b-6d03-9dbf74a2b0ee.png)

対象OSを聞かれるので今回はWindowsの4.1.0(2021年6月最新版)をダウンロードします．
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/e982976d-a470-922e-4f8a-fe30818f8443.png)

ログインを求められるのでアカウント持ってなければ作成してログインします．
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/ceb88c10-c798-3824-c061-8faf95422ce2.png)

初回に開発者かアカウントかを聞かれるので今回はとりあえず開発者を選んでおきます．
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/d06046bc-b80d-fd1f-c6d2-987ec7b20d3f.png)

ダウンロードが始まります．うまく始まらなかった場合にはログインした状態で手順をやり直してみてください．
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/ab5e03b3-34a8-9acd-bc5d-dc86fef31d7b.png)

さきほどダウンロードしたファイルを解凍すると""というドライバのインストーラーがあるので実行します．
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/d2fdc8b4-c5a1-e240-4f2f-8b2528f2fc93.png)

インストーラーの指示通り進めていきます．
![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/c22a1440-501b-9e92-e6e7-29c3023e8c6e.png)

基本的にデフォルト設定のままで大丈夫です．
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/7aa61896-4886-6998-e33b-70a7641dc133.png)

インストールが完了した状態でLeap MotionをPCに挿すと右下のインジケーターにこのようなアイコンが表示され，画像のように緑に光っていれば問題なく認識されています．
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/cc743e7f-4ec6-e187-ea85-48459c4f1559.png)

ドライバをインストールしたフォルダ内の""を実行します．
特にインストール先を変更していなければ""にあります．
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/8d3d363e-6d83-2d3e-b2f9-e767ff4f6b91.png)

問題なく手がトラッキングされているのが確認できました．範囲はそこまで広くないですが精度はいいので動かしてて楽しいです．
![12.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/bd5b5bb6-6aae-72fb-2d13-19bc552ce097.gif)

#2．Unity上で実際に動かしてみる．

次はUnity用のSDKをダウンロードするために再び[Leap Motion公式サイト](https://developer.leapmotion.com/)のトップページにアクセスして右上のタブから"DEVELOP→UNITY"を押します．
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/b584b609-3988-1b71-0b36-2e91a41f558a.png)

リンク先を下にスクロールしていくと"DOWNLOAD+バージョン番号(Unityの対応バージョン)(FOR WINDOWS)"というダウンロードボタンがあるので押します．
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/b6ea1907-5a9d-2c57-f0e4-441268ffc09c.png)

また開発者かアカウントか聞かれるので開発者にしときます．
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/be4f6889-e18a-5313-0b5b-1a5eef1c357b.png)

1回目は色々宣伝みたいなタブが開くので枠外を押して閉じます．
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/4047ca0d-eba9-fb90-9e43-bc5e6772d5ce.png)

もう一度ダウンロードボタンを押しなおすとダウンロードが始まります．
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/b5a26078-4a67-ef2b-4347-3e0f771436bc.png)

ダウンロードしたファイルはわかりやすい位置に解凍しておきます．
中身は3つの.unitypckageで入っています．
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/a4423e35-dc05-4bc9-4618-9feaf11bf479.png)

いつも通りUnity2020.1.17f1かUnity2019.4.27f1でファイルを作りSteamVR Pluginを入れておきます．
この辺は過去記事の 「#3[UnityでVR開発のための環境を整える（SteamVR Plugin2.7.Xをインストールする）：推奨](https://qiita.com/RyoyaHase/items/b7b5f8a7110810c1c0f1)」か「[＄1-1 Ovrvision Pro（ステレオカメラ）のセットアップをして実際に動かしてみる](https://qiita.com/RyoyaHase/items/262ad2133ee89d00b3cb)」を見てください．（HMDを使わないなら入れなくても大丈夫です．）
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/a9c43e86-bf21-60ed-3daf-8e1981455264.png)

"Assets→Import Package→Custom Package..."から先ほど解凍した3つの.unitypackageを入れていきます．
![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/5d6cabbd-fb51-c909-d12f-ed92ea1b0fbf.png)

一応上からCore→Hands→Interactionの順に入れていきます．
![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/131a38ea-2c36-d763-b0c2-a2a88685f896.png)

インポートするとスキャンするよう言われるのでとりあえず"Scan Current Scene"を押します．
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/39b88394-1cf8-6a5f-9219-4d7450fc7348.png)

最適化についていろいろ言われるので"Auto-fix"で自動修正してもらいます．
![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/fa33c892-5984-4ac4-7aa6-fda3e025a658.png)

警告が全部消えれば大丈夫です．
実行するたびにエラーが出る場合は拒否しちゃっても動きます．（一応その時は警告文の中身を確認してください）
![24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/88057576-cd25-4ce2-2af3-bceb14678678.png)

"Assets→Plugins→LeapMotion→Hands→Examples"にあるHandBindingという名前のサンプルシーンを開きます．
![25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/0a7c945c-37bf-6fbb-f85f-a90b6ba266aa.png)

問題なく動けばUnity上でもLeap Motionがちゃんと認識されています．
![26.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/b7084261-e38a-4af1-3a2f-d60dcf2dac8d.gif)

#3．HMDを使ったサンプルプログラムを動かしてみる．

次にHMDを使ったサンプルを動かしていきます．
とりあえずHMDの前面に張り付けます．今回はとりあえずサンプルなので適当に貼っちゃいます．
![DSC_0297.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/bd8beade-7943-4db8-1870-78be11e5905b.jpeg)

"Assets→Plugins→LeapMotion→Core→Examples"のCapsule Handsを開きます．このサンプルはVRに対応していますのでそのまま実行します．
![28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/92f56e1b-ef6c-7696-237f-a5e92afb5615.png)

貼り付けが適当なので位置がずれていますがとりあえずHMDで手を確認できました．
![29.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/805d1984-1653-1f71-4e56-39cbd1a7be61.gif)

次回は実際にLeapmotionを使ったインタラクションのプログラムを作っていきます．