UnityでLeap Motionを使う
大目的
Leap Motionを使用して(あるいは別の手段で)、手でコマを動かせる、オンラインに対応した仮想ボードゲームのテーブルを作成する。
目標
UnityにLeap Motionを組み込み、動かしてみる。
サブ目標
ChatGPTを使って、開発を効率的に行う。
工程
1.工程を調べる
![](https://assets.st-note.com/img/1677396203887-i2RQAyrFt9.png?width=1200)
ネットで調べたところ、個人ブログがヒット。chatgptでざっくり知識を得て、裏取りと詳細の調査を行った。
[参考](https://atl-space.recruit.co.jp/2018/01/unity_leap-motion/)
2.Unityでプロジェクトを作成
[参考](https://tech.pjin.jp/blog/2022/08/31/unity-3daction-01)
Unity自体はインストール済みだったので、新規プロジェクトを作成。
[Leap MotionのUnityプラグインドキュメント](https://developer.leapmotion.com/unity)に、
Unity プラグインは、Unity 2020.3 LTS または 2021.3 LTS で開くことを想定しています。
という記述があった。Unityのバージョンがその想定を下回っていたため、2021.3 LTS にアップグレード。(Unity 2021.3.19f1)
インストールしたところ、以下のような画面が。
![](https://assets.st-note.com/img/1677399165885-MkbY9LmdYS.png)
Unity Hubって何?
![](https://assets.st-note.com/img/1677399268605-MnSnzLOgMJ.png?width=1200)
jenvみたいなものか? 今回は必要なさそうなのでスルー。create empty projectを選択。新規にディレクトリを作成。と思ったけど、解説サイトも使っているので使ってみる。
Unity HubとUnity 2021.3.19f1を紐づけしたい。でも、どのファイルを紐づけすれば良いのか分からない。
![](https://assets.st-note.com/img/1677400297895-QL6pflCN7J.png?width=1200)
[locate existing installation]を選択し、参照先にunity.exeを選択。
New projectを選択。3Dを選択。Create projectで新規プロジェクト作成。(プロジェクト名はLearnLeapMotionにした)
![](https://assets.st-note.com/img/1677400664406-PSqzcGFkCy.png?width=1200)
見覚えのある画面までたどり着いた。
![](https://assets.st-note.com/img/1677400875944-q1wKsdcm3D.png?width=1200)
3.Leap Motion SDKをインポート
https://developer.leapmotion.com/unity#setup-unity-packages
![](https://assets.st-note.com/img/1677401188523-a5lL5HcsvI.png?width=1200)
まずUltraleap GeminiをWindowsにインストール。
アカウント作成の必要があった。作ったらすぐに[Ultraleap_Tracking_Installer_5.7.2+2022.09.15.exe]がダウンロードされたのでインストールを実行。
Unityパッケージをダウンロード。
![](https://assets.st-note.com/img/1677401475562-F12ZIao6j0.png?width=1200)
GitHubに飛ばされたのでプラグインを選択。ダウンロードされる。
![](https://assets.st-note.com/img/1677401607732-xMYGP5QLvD.png?width=1200)
ダウンロードしたzipをUnityPluginsに移動。(プラグイン置き場のためにフォルダを作成した。プロジェクト外)
(ChatGPTAより)ssetsウィンドウ内で右クリックし、Import Package -> Custom Packageを選択してSDKを選択。(対象がzipファイルじゃなかったので解凍)
…しようとしたけどファイルが4つある。どれだ?
公式ドキュメントにTracking.unitypackageと記載有り。
![](https://assets.st-note.com/img/1677402181148-Tu3yvy4XNE.png?width=1200)
公式ドキュメントでは特に指定が無いため、全てにチェックが付いた状態でインポート。
4.手を召喚
![](https://assets.st-note.com/img/1677402485050-4m2n5zp2gi.png?width=1200)
![](https://assets.st-note.com/img/1677402591346-Sxc9EmIanL.png?width=1200)
![](https://assets.st-note.com/img/1677402710675-jtH5KHSyiB.png?width=1200)
このプロジェクトのゴールはLeap Motionで手のオブジェクトを動かすところまでなので、SampleSceneを使用する。
![](https://assets.st-note.com/img/1677407716670-C4Wf2cZ3TM.png?width=1200)
[この記事](https://tks2.co.jp/2020/01/22/unity-leapmotion/)にも同様の記述がある。
[公式ドキュメント](https://docs.ultraleap.com/unity-api/The-Prefabs/xr-provider-manager.html)
![](https://assets.st-note.com/img/1677408692635-LWPHkbiZyi.png?width=1200)
HandObjects上で右クリックし、XR Leap Provider Managerを追加。
![](https://assets.st-note.com/img/1677408537196-Wedk4fr8JH.png?width=1200)
手のオブジェクトを追加する。
[参考](https://docs.ultraleap.com/unity-api/The-Prefabs/hand-prefab.html)
![](https://assets.st-note.com/img/1677409103308-Nt6vuLLtSS.png?width=1200)
![](https://assets.st-note.com/img/1677409437844-Dy5tEx6diP.png?width=1200)
手のオブジェクトが追加出来た。ChatGPTでは別の方法を提案されていたが、公式ドキュメントに準拠。プレハブ下のGhostHandsをHierarchyにドラッグ。
召喚できた。が、何故かカメラオブジェクトと一緒に動いてしまう。
![](https://assets.st-note.com/img/1677409864688-2xfL8Qps4b.png)
5.カメラオブジェクトと手が一緒に動いてしまう問題対処
カメラ消して出したら解決。原因は分からず仕舞い。
6.手を動かす
精度に大分不安があるけど一応成功。
まとめ
組み込みには成功。問題点は精度。次回は解決策を探る。