UnityでLeap Motionの手のモデルを表示する方法

Leap Motion とは

Leap Motionは2012年に発売された手をトラッキングできるデバイスです。発売当時は、手のモーションでコンピュータを直感的に操作できると話題になりましたが、多くのユーザは使い道に悩みそのまま埃を被ってしまう状況になってしまいました。
しかし近年VRブームということもあり、このLeap Motionが見直されてきています。Oculus RiftやHTC Viveに、このLeap Motionを取り付けることにより、VR空間にリアルな手を表示させることができ、VR空間の物体を触ることができるようになります。
確かに世には様々なセンサが存在しますが、指の動きまで正確にトラッキングできるのはLeap Motionくらいでしょう。このLeap MotionとVRの組み合わせは非常にマッチしているでしょう。

今回は、このLeap MotionをUnity上で動かすための方法を紹介します。Leap Motionのセットアップは完了しているものとし、以下説明を進めます。セットアップがまだの方は、以下よりLeap Motion SDKをインストールしてください。
https://developer.leapmotion.com/setup

また以下の方法は Unity 5.6 以上のどのプロジェクトにおいても適用可能ですが、本記事では Unity 2019.3.0f3 の新規プロジェクトで説明を進めます。

Leap Motion Core Assets を取得

UnityでLeap Motionを利用するには、Unity Core Assetsが必要になります。下記の「DOWNLOAD UNITY CORE ASSETS X.X.X」をクリックすることでダウンロードすることができます。
https://developer.leapmotion.com/unity

プロジェクトに Leap Motion Core Assets を追加

任意のUnityプロジェクトにおいて、メニュー「 Assets > Import Package > Custom Package ...」よりダウンロードした Leap Motion Core Assets を選択します。

サンプルなども含まれるので、初めてであれば全てインポートするといいでしょう。

シーンに Leap Motion Controller を追加

空の GameObject を作成し、任意の名前 ( Leap Motion Controller など) をつけます。そして「 LeapServiceProvider 」のコンポネントを追加します。「Add Component」をクリック後、「 LeapServiceProvider 」で検索するとすぐに見つかります。

このコンポネントの「 Edit Time Pose 」より適したモードを選択してください。

  • Hand Mounted A
  • Hand Mounted B
  • Desktop Mode A

シーンに手のモデルを追加

最初に手のモデルを管理するためのオブジェクトを用意します。
空の GameObject を作成し、任意の名前 ( Hand Models など) をつけます。そして「 HandModelManager 」のコンポネントを追加します。「Add Component」をクリック後、「 HandModelManager 」で検索するとすぐに見つかります。

次に手のモデルを追加します。
ここでは Leap Motion が用意している Capsule Hand を利用します。これは

Assets > LeapMotion > Core > Prefabs > Capsule Hand Left
Assets > LeapMotion > Core > Prefabs > Capsule Hand Right

に Prefab として用意されています。この2つの Prefab を先ほど作成したオブジェクト「Hand Models」の子として追加します。また「Hand Models」オブジェクトの「Hand Model Manager」の「Model Pool」の「Size」を「1」とし、「Element 0」の「Left Model」と「Right Model」に、それぞれ「Capsule Hand Left」と「Capsule Hand Right」を設定します。また「Is Enabled」と「Can Duplicate」のチェックを「ON」にします。

実行

あとはカメラの位置を調整し手が見えるようにします。これで準備完了です。実行してみましょう。Leap Motionに手をかざすと、シーン画面にもゲーム画面に表示されることがわかるでしょう。

まとめ

Unity上でLeap Motionを表示する方法を紹介しました。Unityはゲームを作成しやすいツールですので、VRの手が表示できるようになることで、その可能性は大きく広がることでしょう。
またLeap Motionが用意している手のモデルはお世辞にもいいとは言えないので、次回手のモデルを変更する方法を紹介したいと思います。

TKS2では、UnityやLeap Motionを用いたプロジェクトも可能ですので、もしお困りのときはぜひお声がけください。