Leap Motionの日本語情報は非常に限られているので公式ドキュメントをざっくり日本語訳にしました。誤訳などあったらお知らせください。
本エントリは
https://developer.leapmotion.com/documentation/Languages/CSharpandUnity/Guides/Setup_Unity.html
の日本語訳となります。
Setting up a Unity project
Leap Motionトラッキングデータ用Unityプラグインを使ってLeap Motion SDKをUnityアプリケーションからアクセスすることが出来ます。この記事では、UnityのProバージョンがサポートしているプラグイン昨日を使用する方法について説明します。ネイティブライブラリプラグインをサポートしていないUnityスタンダード版で使うはCreating Leap Motion apps with Unity (standard license)を参照ください。
Topics:
- Leap Motion C# Libraries for Unity
- Create a project
- Accessing the Leap Motion API
- Building 64-bit Windows Unity applications
- Exiting cleanly on Windows with Unity3D 3.5
Leap Motion C# Libraries for Unity
Leap Motion SDKには、プラットフォームごとにアプリケーションのビルドターゲットに応じた複数のバージョンが含まれています。
UnityエディタでLeap Motion SDKを使用するには、アプリケーションのPluginsフォルダに32ビットライブラリを追加する必要があります。Macであれば32bitと64bitでは同じライブラリファイルを使いますが、Windowsの場合は稼動OSのビット数に応じたライブラリを指定する必要があります。
Unityの中で以下のライブラリを使用します:
-
32-bit Windows:
- LeapSDK/lib/UnityAssets/Plugins/LeapCSharp.NET3.5.dll ? Leap Motion C# library for .NET 3.5
- LeapSDK/lib/UnityAssets/Plugins/LeapCSharp.dll ? 32-bit Leap Motion C# library for Windows
- LeapSDK/lib/UnityAssets/Plugins/Leap.dll ? 32-bit Leap Motion library for Windows
-
64-bit Windows:
- LeapSDK/lib/UnityAssets/Plugins/LeapCSharp.NET3.5.dll ? Leap Motion C# library for .NET 3.5
- LeapSDK/lib/x64/LeapCSharp.dll ? 64-bit Leap Motion C# library for Windows
- LeapSDK/lib/x64/Leap.dll ? 64-bit Leap Motion library for Windows
Note: Do not use the 64-bit libraries in the Unity editor on Windows.
-
32- and 64-bit Mac OS:
- LeapSDK/lib/UnityAssets/Plugins/LeapCSharp.NET3.5.dll ? Leap Motion C# library for .NET 3.5
- LeapSDK/lib/UnityAssets/Plugins/LeapCSharp.bundle ? Leap Motion C# bundle for Unity
Create a project
まず、辛苦プロジェクトを作成します:
- Unityエディタを開く
- [ファイル]-[新規プロジェクト]を選択
- 名前と保存場所を選択
- [プロジェクトの作成]をクリック
Leap Motionライブラリをプロジェクトに追加します:
- UnityプロジェクトのAssetsフォルダに移動
- Leap Motion SDKのlibe/UnityAssetsフォルダからUnityプロジェクトのAssetsフォルダのPluginsフォルダにコピー
注意:
暮らすプラットフォームビルドを有効にするためにPlauginsフォルダにMacとWindowsの両方のライブラリを配置することが出来ます。しかし、x64のWindowsプラットフォームに対するx86用ビルドを行うための考慮事項についてはBuilding 64-bit Windows Unity applicationsを参照してください。
Accessing the Leap Motion API
PluginsフォルダにLeap MotionライブラリとAPIを使うスクリプトを追加できます。Leap Motionクラスは、Leap名前空間として定義されます。Leap Motion APIにアクセスする基本的なMonoBehaviorクラスは次のようになります:
VB.NET
Imports UnityEngine Imports System.Collections Imports Leap Public Class LeapBehavior Inherits MonoBehaviour Private _controller As Controller Public Sub Start () _controller = New Controller End Sub Public Sub Update () Dim _frame As Frame = _controller.Frame() 'do something with the tracking data in the frame... End Sub End Class
C#
using UnityEngine; using System.Collections; using Leap; public class LeapBehavior : MonoBehaviour { Controller controller; void Start () { controller = new Controller(); } void Update () { Frame frame = controller.Frame(); // do something with the tracking data in the frame... } }
このサンプルではLeap.Listenerサブクラスを使用していないことに注意してください。Unityアプリケーションの場合、UnityエンジンからUpdateメソッドによりLeap Motionコントローラから現在のフレームを取得することで自然なフレームレートを実現できます。
注意:
Leap.Listenerサブクラスを使う方法だと、UnityエディタとUnityアプリケーションをWindows上で終了しようとするとにフリーズすることがあります。これは、Unityでマネージコードと案マネージコード間でコールバックを使うときに発生するスレッドの問題によるものです。この問題を回避するには「Exiting cleanly on Windows with Unity3D 3.5」を参照ください。
Building 64-bit Windows Unity applications
UnityでLeap対応アプリケーションを構築する場合、Unityエディタは自動的にPluginsフォルダからLeap Motion ライブラリをコピーします。Pluginsフォルダにはクラスプラットフォームビルドが行えるようにWindows x86とMac OSの両方のLeap Motionライブラリをおくことが出来ます。ただし、x86ライブラリとx64ライブラリを共存させることは出来ません。
WindowsではUnityエディタが開発中にアプリケーションを実行するために、32bit(x86プラットフォーム)ライブラリがPluginsフォルダに入れる必要があります。x64ぷラットファーム用にビルドするためには、Unityがアプリケーションの実行ファイルを出力するフォルダに32bitライブラリをコピーするので、その後に手動で32bitライブラリに対してLeap Motion SDKのlib/x64フォルダから64bitバージョンのライブラリを上書きコピーする必要があります。
Macでは、Pluginsフォルダに32bitのWindows Leap Motionライブラリか64bit Windowsライブラリのどちらか一方を配置できます。もし、Macで32bitと64bitの両方のWindowsプラットフォーム用にビルドする場合は、Leap Motionライブラリの正しいバージョンを使用して確認する必要があります。アプリケーションを構築した後に、出力フォルダに正しいライブラリをコピーすることによって確認することが出来ます。
Exiting cleanly on Windows with Unity3D 3.5
Monoはアプリケーション終了時にスレッドを閉じる方法に問題があるため、Unity3DエディタとLeap対応アプリケーションの終了時にハングします。この問題はWindowsコンピュータで発生し、Unity 4を使う別バージョンのMonoでは発生しません。この問題はLeap Motionイベント処理のLeap Motion Listenerを使用する場合のみ発生します。
終了時にハングしないようにするためには、次のコードを追加します:
VB.NET
#If UNITY_STANDALONE_WIN Then_ Shared External Sub mono_thread_exit() #End If Sub OnApplicationQuit() controller.Dispose() listener.Dispose() #If UNITY_STANDALONE_WIN AndAlso Not UNITY_EDITOR AndAlso UNITY_3_5 Then mono_thread_exit() #End If
C#
#if UNITY_STANDALONE_WIN [DllImport("mono", SetLastError=true)] static extern void mono_thread_exit(); #endif void OnApplicationQuit() { controller.Dispose(); listener.Dispose(); #if UNITY_STANDALONE_WIN && !UNITY_EDITOR && UNITY_3_5 mono_thread_exit (); #endif
このコードスニペットを使用する場合、Leap.Listenerサブクラスを使わなければなりません。
Copyright c 2012-2013 Leap Motion, Inc. All rights reserved.
Leap Motion proprietary and confidential. Not for distribution. Use subject to the terms of the Leap Motion SDK Agreement available at https://developer.leapmotion.com/sdk_agreement, or another agreement between Leap Motion and you, your company or other organization.