Motionも機材として提供されています。Motionは2012年から発売されているので目新しさは感じないものの、手のジェスチャーによってコンピューターを操作するためのデバイスの筆頭としてVR/ARとも連携して活用されることもあるかと思います。Motionを使うやり方を紹介したいと思います。Motionを使うためには、2016年にLeapから提供されたOrionというライブラリを利用するのが通例です。Motionを動かすために、Coreと呼ばれるUnity用アセットを使用します。この「Core」をUnityに読み込めば、Unity上に手を表示させて動かしたり、オブジェクトを指で押すといった物理表現ができます。Motionが提供する機能拡張モジュールを追加で組み込んでいけば、できることが広がります。2018年1月時点でモジュールは以下の3種が提供されています。Engine(1.1.0)Coreの機能だけだと、オブジェクトを掴んだりしようとすると衝突判定が過敏すぎて、対象オブジェクトが弾き飛んでいったりします。Engineモジュールを使うことで、Unity物理空間と現実の手とのインタラクションをより自然に表現できます。Motionで物を掴んだり投げたり、指でボタンを押したり等の手を使ったインタラクティブ表現をやるなら導入すると良いです。Renderer(0.1.1)モバイル用途やVR/AR検証用に、Unityのドローコールを減らすことができるモジュール。Module(2.1.1)リアルな手、ローポリの手、悪魔の爪のような手や半透明の手などなど、いろんな手のモデルを使いたい場合のモジュール。MotionのUnity用パッケージは、Unity自体のバージョンアップの影響もあって更新頻度も多く、Web上の過去記事を参考にすると内容が変わってしまっていることもありますので、基本はLeapMotionが提供する公式ドキュメントを参考にすると良いでしょう。MotionをPCで使うために、PCにデベロッパーキットをインストールしておく必要があります。Motionを動かすために、先述のCoreをUnityに読み込みます。4.3.3(2018.1.10現在)」ボタンからCoreパッケージをダウンロードし、解凍しておきます。※ダウンロードするためにはログインユーザーになる必要があるので、未登録の人はここでメールアドレスを使ってユーザー登録する必要があります。PackageからOrionをインポートすると、ProjectウインドウにLeapMotionフォルダが読み込まれます。サンプルシーンも用意されています。Prefabフォルダの中に後述するコントローラーや手のモデルが入っています。Motionとしては全体的にVR/ARとの併用を重要視しています。Motionだけを使うための設定例を書きます。Motionで認識した手を制御するためのコントローラーとして「LeapHandController」というPrefabをステージ上に配置します。(※デスクトップアプリの場合はLeapHandControllerを用います。Pool項目で、左手と右手に対してどのモデルを使用するかを指定します。Poolスロットに設定しました。DuplicateのチェックはONにしますドキュメントを読むと、手のモデルはHandModels(名前は任意でOKです)という空の親オブジェクトの子オブジェクトとしてまとめて置くことが推奨されています。Parentスロットに設定しておくことで、複数人の手を同時に表示させる際に役立つそうです。←と書かれていますが、このままでは3つ目の手は表示されないみたいので、さらに何か実装する必要があるかも、、。Motionで認識した手が表示されます。お好みで、Cameraオブジェクトの中にLeapHandControllerとHandModelsを入れ子にして位置調整すれば、ゲームプレビュー画面上で一人称視点で手を表示しているようなアングルにできます。お好みで、Planeで床を作成し、Cubeで立方体を配置してRigidBodyを設定してやると、Cubeと手とで衝突判定できますので、指で押したりできるようになります。PoolスロットのSizeを2に増やして、そこに追加します。LoPoly_Rigged...は文字通りローポリの手のモデル。Rigid...は衝突判定用の手のモデルでポリゴンとしては見えないモデルですいくつかサンプルシーンも用意されています。Prefabフォルダの中に後述するコントローラーや手のモデルが入っています。Sizeを増やして手のモデルを追加することで、手のモデルをいくつも重ねて表示できます。この場合はスロット1でポリゴンモデル、スロット2で衝突用リジッドモデルを設定しているわけですただし冒頭で書いたように、Cubeを掴んだりしようとすると、Core機能だけでは衝突判定がデリケート過ぎるために、Cubeがあらぬ方向に弾け飛んでいったりすると思います。Engineモジュールを追加してやるのですが、これは次回の記事で説明したいと思います。指でCubeを押せました。Motionで認識させた手をUnity上で表示させることができたかと思います。この時点でも手を使った面白いデスクトップアプリが作れるでしょうし、次のステップとして、物体を掴んだり投げたり、あるいはVR/AR連携させてみたりと、発展させていくこともできますね。Motionでやりたいことがモジュール機能として提供されていないかを公式サイトで確認し、実装における参考資料としては公式ドキュメントを読みつつ、何か困ったらフォーラムを覗いてみるといいでしょう。