トレーニング
モジュール
Mixed Reality Toolkit の概要 - プロジェクトを設定してハンド インタラクションを使う - Training
このコースでは、MRTK のすべての基本要素の基本的な理解をユーザーに提供します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
このデータ プロバイダーを使用するには、Leap Motion Controller が必要です。
Leap Motion Data Provider を使用すると、VR 用の多関節ハンド トラッキングを利用でき、エディターでの迅速なプロトタイプ作成に役立ちます。 このデータ プロバイダーは、ヘッドセットにマウントした、または机の上に表向きに置かれた Leap Motion Controller を使用するように構成できます。
このプロバイダーは、スタンドアロン プラットフォーム上のエディターおよびデバイスで使用できます。 UWP プラットフォーム上のエディターでも使用できますが、UWP ビルド内では使用できません。
MRTK バージョン | Leap Motion Unity Modules のサポート対象バージョン |
---|---|
2.6.x | 4.5.0、4.5.1 |
2.7.0 から 2.7.2 | 4.5.0、4.5.1、4.6.0、4.7.0、4.7.1、4.8.0 |
2.7.3 | 4.5.0、4.5.1、4.6.0、4.7.0、4.7.1、4.8.0、4.9.1 (下記の注を参照) |
注意
Unity モジュール 4.9.1 には 、Gemini 5.2 以降の追跡サービスが必要です。 Unity プラグイン V4.9.1 は、Unity 2019 でのみ正式にサポートされています。 4.9.1 のリリース ノートを参照してください。
Unity モジュールの名前が V5.0.0 の Unity プラグインに変更されました。
MRTK バージョン | サポートされている Ultraleap Unity プラグインのバージョン |
---|---|
2.8.0 | 5.3.0 (下記の注を参照) |
注意
Unity プラグイン バージョン 5.0.0、5.1.0、5.2.0 は、MRTK のどのバージョンでもサポート されていません 。 ユーザーは 5.3.0 にアップグレードすることをお勧めします。 Unity プラグイン 5.3.0 には 、Gemini 5.2 以降の追跡サービスが必要です。
MRTK と Leap Motion Unity モジュールのインポート / Unity プラグイン
重要
Unity では、Unity 2019.4.19 以降、SelectionMode.OnlyUserModifiable が非推奨とされました。そのため、Ultraleap Hotkeys.cs スクリプトで次のエラーが発生します: Assets\Plugins\LeapMotion\Core\Editor\Hotkeys.cs(24,91): error CS0619: 'SelectionMode.OnlyUserModifiable' is obsolete: ''OnlyUserModifiable' is obsolete. Use 'Editable' instead. (UnityUpgradeable) -> Editable'.
この問題を解決するには、Plugins/LeapMotion/Core/Editor/Hotkeys.cs にある Hotkeys.cs スクリプト内の SelectionMode.OnlyUserModifiable を SelectionMode.Editable に変更します。
Leap Motion Unity モジュール/Unity プラグインを MRTK と統合する
注意
Unity モジュールを MRTK に統合すると、プロジェクトに 10 個のアセンブリ定義が追加され、Microsoft.MixedReality.Toolkit.Providers.LeapMotion アセンブリ定義への参照が追加されます。 Visual Studio を終了していることを確認します。
Leap Motion Data Provider を追加する
Leap Motion Data Provider に含まれる LeapControllerOrientation
プロパティは、Leap Motion Controller の場所を示します。
LeapControllerOrientation.Headset
は、コントローラーがヘッドセットにマウントされていることを示します。
LeapControllerOrientation.Desk
は、コントローラーが机の上に平らに置かれていることを示します。 既定値は LeapControllerOrientation.Headset
に設定されています。
各コントローラーの向きには、オフセット プロパティが含まれます。
Headset の向きのオフセット プロパティには、LeapXRServiceProvider コンポーネントのオフセット プロパティが反映されます。
LeapVRDeviceOffsetMode
には、既定、手動ヘッド オフセット、変換の 3 つのオプションがあります。 オフセット モードが既定の場合、オフセットは Leap Motion Controller に適用されません。 手動ヘッド オフセット モードを使用すると、LeapVRDeviceOffsetY
、LeapVRDeviceOffsetZ
、LeapVRDeviceTiltX
の 3 つのプロパティを変更できます。 軸のオフセット プロパティの値は既定のコントローラーの配置に適用されます。 変換オフセット モードには、Leap Motion Controller の新しい向きを指定する LeapVRDeviceOrigin
変換プロパティが含まれます。
Desk の向きには、デスク リープ ハンドのアンカー位置を定義する LeapControllerOffset
プロパティが含まれます。 オフセットは、メイン カメラの位置を基準として計算され、既定値は、ハンドがカメラのビュー内の正面に確実に表示される (0、-0.2、0.35) です。
注意
プロファイル内のオフセット プロパティは、アプリケーションの起動時に 1 回適用されます。 実行時に値を変更するには、Leap Motion Device Manager から Leap Motion Service Provider を取得します。
LeapMotionDeviceManager leapMotionDeviceManager = CoreServices.GetInputSystemDataProvider<LeapMotionDeviceManager>();
LeapXRServiceProvider leapXRServiceProvider = leapMotionDeviceManager.LeapMotionServiceProvider as LeapXRServiceProvider;
EnterPinchDistance
と ExitPinchDistance
は、ピンチまたはエアタップのジェスチャ検出の距離のしきい値です。 ピンチ ジェスチャは、人差し指先端と親指先端の距離を測定して計算されます。 入力時ダウン イベントを発生させるには、既定の EnterPinchDistance
を 0.02 に設定します。 入力時アップ イベント (ピンチの終了) を発生させるには、人差し指先端と親指先端の間の既定の距離を 0.05 にします。
LeapControllerOrientation
: Headset (既定)
LeapControllerOrientation
: Desk
Leap Motion Data Provider をテストする
プロジェクトをビルドする
Leap Motion Data Provider を使用した関節の取得は、MRTK の多関節ハンドの関節取得と同じです。 詳細については、「ハンド トラッキング」を参照してください。
Unity シーンに MRTK、入力システム プロファイルに入力データ プロバイダーとして Leap Motion Data Provider を追加して、空のゲーム オブジェクトを作成し、次のサンプル スクリプトを添付します。
このスクリプトは、Leap Motion Hand で手のひらの関節のポーズを取得する方法のシンプルなサンプルです。 球体は左の Leap ハンドを、立方体は右の Leap ハンドを追従します。
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
using Microsoft.MixedReality.Toolkit.Utilities;
using System.Collections.Generic;
using UnityEngine;
public class LeapHandJoints : MonoBehaviour, IMixedRealityHandJointHandler
{
private GameObject leftHandSphere;
private GameObject rightHandCube;
private void Start()
{
// Register the HandJointHandler as a global listener
CoreServices.InputSystem.RegisterHandler<IMixedRealityHandJointHandler>(this);
// Create a sphere to follow the left hand palm position
leftHandSphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
leftHandSphere.transform.localScale = Vector3.one * 0.03f;
// Create a cube to follow the right hand palm position
rightHandCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
rightHandCube.transform.localScale = Vector3.one * 0.03f;
}
public void OnHandJointsUpdated(InputEventData<IDictionary<TrackedHandJoint, MixedRealityPose>> eventData)
{
if (eventData.Handedness == Handedness.Left)
{
Vector3 leftHandPalmPosition = eventData.InputData[TrackedHandJoint.Palm].Position;
leftHandSphere.transform.position = leftHandPalmPosition;
}
if (eventData.Handedness == Handedness.Right)
{
Vector3 rightHandPalmPosition = eventData.InputData[TrackedHandJoint.Palm].Position;
rightHandCube.transform.position = rightHandPalmPosition;
}
}
}
Leap Motion Data Provider を使用する場合、VR ヘッドセットは必要ありません。 MRTK アプリに対する変更は、ヘッドセットを使用せずに Leap ハンドを使用して、エディターでテストできます。
VR ヘッドセットが接続されていない状態で、エディターに Leap Motion Hands が表示されます。
LeapControllerOrientation
を Headset に設定した場合は、カメラが正面になる状態で Leap Motion Controller を片手で持ち上げる必要があります。
注意
エディターで WASD キーを使用してカメラが動き、LeapControllerOrientation
が Headset の場合、ハンドはカメラを追従しません。
LeapControllerOrientation
を Headset に設定している間は、VR ヘッドセットが接続されている場合、ハンドはカメラの動きのみを追従します。
LeapControllerOrientation
を Desk に設定すると、エディターで Leap ハンドはカメラの動きを追従します。
Unity 2018.4 では、ライブラリと Leap Motion Core Assets を削除した後もコンソールにエラーが引き続き表示される可能性があります。 再度開いた後にエラーが記録された場合は、もう一度 Unity を再起動します。
Leap Motion Unity Modules が MRTK と統合されているかどうかをテストするには、次のようにします。
Leap Motion Unity Core Assets のインポート時に、このエラーがログに記録される可能性があります。
Copying assembly from 'Temp/com.unity.multiplayer-hlapi.Runtime.dll' to 'Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll' failed
ソリューション
このサンプル シーンでは、DefaultLeapMotionConfiguration プロファイルを使用して、Unity プロジェクトが、Leap Motion Data Provider を使用するように正しく構成されているかどうかを判断します。
このサンプル シーンは、MRTK/Examples/Demos/HandTracking/ ディレクトリにある Microsoft.MixedReality.Toolkit.Examples パッケージに含まれています。
トレーニング
モジュール
Mixed Reality Toolkit の概要 - プロジェクトを設定してハンド インタラクションを使う - Training
このコースでは、MRTK のすべての基本要素の基本的な理解をユーザーに提供します。