Artık Hareket ve Ultraleap Kullanma — MRTK2

Bu veri sağlayıcısını kullanmak için artık hareket denetleyicisi gereklidir.

Artık Hareket Veri Sağlayıcısı, VR için ifadeli el izleme sağlar ve düzenleyicide hızlı prototip oluşturma için yararlı olabilir. Veri sağlayıcısı, bir mikrofonlu kulaklığa monte edilen veya masa yukarısına yerleştirilmiş Artık Hareket Denetleyicisi'ni kullanacak şekilde yapılandırılabilir.

LeapMotionIntroGif

Bu sağlayıcı, Tek başına platformdayken düzenleyicide ve cihazda kullanılabilir. UWP platformundayken düzenleyicide de kullanılabilir ancak UWP derlemesinde DEĞİl.

MRTK Sürümü Artık Hareket Unity ModülleriNin Desteklenen Sürümleri
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 (aşağıdaki nota bakın)

Not

Unity Modules 4.9.1, Gemini 5.2 veya üzeri izleme hizmetini gerektirir. Unity eklentisi V4.9.1 yalnızca Unity 2019'da resmi olarak desteklenir. Bkz. 4.9.1 sürüm notları.

Unity Modülleri V5.0.0'da Unity Eklentisi olarak yeniden adlandırıldı.

MRTK Sürümü Desteklenen Ultraleap Unity Eklentisi Sürümleri
2.8.0 5.3.0 (aşağıdaki nota bakın)

Not

Unity Eklentisi 5.0.0, 5.1.0 ve 5.2.0 sürümleri MRTK'nın hiçbir sürümünde desteklenmez . Kullanıcıların 5.3.0 sürümüne yükseltmesi önerilir. Unity Eklentisi 5.3.0, Gemini 5.2 veya üzeri izleme hizmetini gerektirir.

MRTK'da Artık Hareket (Ultraleap tarafından) el izleme kullanma

  1. MRTK ve Artık Hareket Unity Modüllerini İçeri Aktarma / Unity Eklentisi

    • İzleme Hizmeti henüz yüklü değilse almak için en son Artık Hareket İzleme Yazılımını yükleyin
    • Microsoft.MixedReality.Toolkit.Foundation paketini Unity projesine aktarın.
    • Leap Motion Unity Modüllerinin / Unity Eklentisinin en son sürümünü indirip projeye aktarın
      • Unity Modülleri için: Yalnızca proje içindeki Core paketini içeri aktarın
      • Unity Eklentisi için: Yalnızca proje içindeki İzleme paketini içeri aktarın. Şimdilik yalnızca .unitypackage'lar desteklenmektedir.

    Önemli

    Unity, Unity 2019.4.19 sonrasında SelectionMode.OnlyUserModifiable'ı kullanım dışı bırakmıştı ve bu da Ultraleap Kısayol Tuşları.cs betiğinden gelen şu hatayla sonuçlanır: Assets\Plugins\LeapMotion\Core\Editor\Hotkeys.cs(24,91): hata CS0619: 'SelectionMode.OnlyUserModifiable' kullanımdan kaldırıldı: ''OnlyUserModifiable' kullanımdan kaldırıldı. Bunun yerine 'Düzenlenebilir' kullanın. (UnityUpgradeable) -> Editable'.

    Sorunları çözmek için, Plugins/LeapMotion/Core/Editor/Hotkeys.cs içinde bulunan Hotkeys.cs betiğinde SelectionMode.OnlyUserModifiable değerini SelectionMode.Editable olarak değiştirin.

  2. Artık Hareket Unity Modüllerini / Unity Eklentisini MRTK ile Tümleştirme

    • Unity Modülleri / Unity Eklentisi projeye dahil olduktan sonra Karma Gerçeklik>Toolkit>Utilities>Leap Motion>Integrate Leap Motion Unity Modules bölümüne gidin.

    Not

    Unity Modüllerini MRTK ile tümleştirmek projeye 10 derleme tanımı ekler ve Microsoft.MixedReality.Toolkit.Providers.LeapMotion derleme tanımına başvurular ekler. Visual Studio'nun kapalı olduğundan emin olun.

    LeapMotionIntegration

  3. Artık Hareket Veri Sağlayıcısı ekleme

    • Yeni unity görünümü oluşturma
    • Karma Gerçeklik Araç Seti>Sahneye Ekle ve Yapılandır'a giderek mrtk'yi sahneye ekleme
    • Hiyerarşide MixedRealityToolkit oyun nesnesini seçin ve varsayılan karma gerçeklik profilini kopyalamak için Kopyala ve Özelleştir'i seçin.

    LeapMotionProfileClone

    • Giriş Yapılandırma Profili'ni seçin

    Giriş Yapılandırma Profili 1

    • Değişikliği etkinleştirmek için giriş sistemi profilinde Kopyala'yı seçin.

    LeapMotionInputProfileClone

    • Giriş Veri Sağlayıcıları bölümünü açın, üst kısımdan Veri Sağlayıcısı Ekle'yi seçin; listenin sonuna yeni bir veri sağlayıcısı eklenir. Yeni veri sağlayıcısını açın ve Type değerini Microsoft.MixedReality.Toolkit.LeapMotion.Input > LeapMotionDeviceManager olarak ayarlayın

    Artık Veri Ekleme Sağlayıcısı

    • Varsayılan Artık Hareket ayarlarını değiştirmek için Kopyala'yı seçin.

    LeapDataProviderPreClone

    • Artık Hareket Veri Sağlayıcısı, Artık Hareket Denetleyicisi'nin konumu olan özelliğini içerir LeapControllerOrientation . LeapControllerOrientation.Headset denetleyicinin bir mikrofonlu kulaklığa takılı olduğunu gösterir. LeapControllerOrientation.Desk denetleyicinin masaya düz yerleştirildiğine işaret eder. Varsayılan değer olarak LeapControllerOrientation.Headsetayarlanır.

    • Her denetleyici yönlendirmesi uzaklık özellikleri içerir:

      • Kulaklık yönlendirme uzaklığı özellikleri, LeapXRServiceProvider bileşenindeki uzaklık özelliklerini yansıtır. üç LeapVRDeviceOffsetMode seçeneğe sahiptir: Varsayılan, El ile Baş Uzaklığı ve Dönüştürme. Uzaklık modu Varsayılan ise, Artık Hareket Denetleyicisi'ne bir uzaklık uygulanmaz. El ile Baş Uzaklığı modu üç özelliğin değiştirilmesini sağlar: LeapVRDeviceOffsetY, LeapVRDeviceOffsetZ ve LeapVRDeviceTiltX. Eksen uzaklığı özellik değerleri daha sonra varsayılan denetleyici yerleşimine uygulanır. Dönüştürme uzaklık modu, Artık Hareket Denetleyicisi için yeni bir çıkış noktası belirten Transform özelliğini içerir LeapVRDeviceOrigin .

      • Masa yönlendirmesiLeapControllerOffset, masa artık ellerinin yer işareti konumunu tanımlayan özelliği içerir. Uzaklık ana kamera konumuna göre hesaplanır ve ellerin kameranın önünde ve görünümünde görünmesini sağlamak için varsayılan değer (0,-0,2, 0,35) olur.

        Not

        Profildeki uzaklık özellikleri, uygulama başlatıldığında bir kez uygulanır. Çalışma zamanı sırasında değerleri değiştirmek için Artık Hareket Hizmeti Sağlayıcısı'nı Artık Hareket Cihaz Yöneticisi alın:

        LeapMotionDeviceManager leapMotionDeviceManager = CoreServices.GetInputSystemDataProvider<LeapMotionDeviceManager>();
        LeapXRServiceProvider leapXRServiceProvider = leapMotionDeviceManager.LeapMotionServiceProvider as LeapXRServiceProvider; 
        
    • EnterPinchDistance ve ExitPinchDistance sıkıştırma/hava dokunma hareketi algılama için mesafe eşikleridir. Sıkıştırma hareketi, işaret parmağı ucu ile başparmak ucu arasındaki mesafe ölçülerek hesaplanır. Giriş aşağı olayını yükseltmek için varsayılan EnterPinchDistance değer 0,02 olarak ayarlanır. Giriş olayını yükseltmek için (sıkıştırmadan çıkarken), işaret parmağı ucu ile başparmak ucu arasındaki varsayılan uzaklık 0,05'tir.

    LeapControllerOrientation: Kulaklık (Varsayılan)

    LeapHeadsetGif

    LeapHeadsetInspector

    LeapControllerOrientation:Masası

    LeapDeskGif

    LeapDeskInspector

  4. Artık Hareket Veri Sağlayıcısını Test Etme

    • Artık Hareket Veri Sağlayıcısı giriş sistemi profiline eklendikten sonra oynat'a basın, elinizi Artık Hareket Denetleyicisi'nin önüne taşıyın ve elin birleşik temsilini görmeniz gerekir.
  5. Projenizi oluşturma

El eklemlerini alma

Artık Hareket Veri Sağlayıcısı'nı kullanarak eklemleri almak, MRTK Eklemli El için el ekleminin alınmasıyla aynıdır. Daha fazla bilgi için bkz. El İzleme.

Bir birlik sahnesinde MRTK ve Giriş Sistemi profiline Giriş Veri Sağlayıcısı olarak eklenen Artık Hareket Veri Sağlayıcısı ile boş bir oyun nesnesi oluşturun ve aşağıdaki örnek betiği ekleyin.

Bu betik, Artık Hareket Eli'nde avuç içi ekleminin pozunu alma işleminin basit bir örneğidir. Küre sol Artık eli takip ederken, küp sağ Artık eli izler.

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;
        }
    }
}

Unity düzenleyicisi iş akışı ipucu

Artık Hareket Veri Sağlayıcısı'nı kullanmak için VR başlığı gerekmez. MRTK uygulamasında yapılan değişiklikler düzenleyicide artık ellerle kulaklık olmadan test edilebilir.

Leap Motion Hands düzenleyicide vr başlığı takılı olmadan görünür. LeapControllerOrientationMikrofonlu Kulaklık olarak ayarlanırsa Artık Hareket denetleyicisinin kamera ileriye dönük olarak tek elle tutulması gerekir.

Not

Kamera düzenleyicide WASD tuşları kullanılarak taşınırsa ve LeapControllerOrientationMikrofonlu Kulaklık ise, eller kamerayı takip etmeyecektir. Eller yalnızca mikrofonlu kulaklık takılıyken LeapControllerOrientation VR mikrofonlu kulaklığı takılıysa kamera hareketini takip eder. Artık eller, Masaüstü olarak ayarlanmışsa LeapControllerOrientation düzenleyicideki kamera hareketini izler.

Projeden Artık Hareketi Kaldırma

  1. Karma Gerçeklik Araç Seti>Artık Hareket>Ayrı Artık Hareket Unity Modüllerine gidin
    • Unity'nin Microsoft.MixedReality.Toolkit.Providers.LeapMotion.asmdef dosyasında başvuru olarak yenilenmesine izin ver seçeneği bu adımda değiştirilmiştir
  2. Unity'i kapatma
  3. Açıksa Visual Studio'yu kapatın
  4. Dosya Gezgini açın ve MRTK Unity projesinin köküne gidin
    • UnityProjectName/Library dizinini silme
    • UnityProjectName/Assets/Plugins/LeapMotion dizinini silme
    • UnityProjectName/Assets/Plugins/LeapMotion.meta dosyasını silin
  5. Unity'i Yeniden Aç

Unity 2018.4'te Kitaplığı ve Leap Motion Core Varlıklarını sildikten sonra hataların konsolda kalmaya devam ettiğini fark edebilirsiniz. Yeniden açıldıktan sonra hatalar günlüğe kaydedilirse Unity'yi yeniden başlatın.

Sık Karşılaşılan Hatalar

Artık Hareket MRTK ile tümleştirilmemiş

Leap Motion Unity Modüllerinin MRTK ile tümleşik olup olmadığını test etmek için:

  • Karma Gerçeklik Araç Seti > Yardımcı Programları > Artık Hareket > Denetimi Tümleştirme Durumu'na gidin
    • Bu, Leap Motion Unity Modüllerinin MRTK ile tümleştirilip tümleştirilmediği hakkında bir ileti içeren bir açılır pencere görüntüler.
  • İletide varlıkların tümleştirilmediği belirtiliyorsa:
    • Leap Motion Unity Modüllerinin projede olduğundan emin olun
    • Eklenen sürümün desteklendiğinden emin olun, desteklenen sürümler için sayfanın en üstündeki tabloya bakın.
    • Toolkit > Utilities > Leap Motion Integrate Leap Motion > Unity Modüllerini Karma Gerçeklik deneyin

Derleme çok oyunculu HLAPI kopyalanamadı

Leap Motion Unity Core Varlıkları içeri aktarıldıktan sonra bu hata günlüğe kaydedilebilir:

Copying assembly from 'Temp/com.unity.multiplayer-hlapi.Runtime.dll' to 'Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll' failed

Çözüm

  • Unity'yi yeniden başlatmak kısa vadeli bir çözümdür. Daha fazla bilgi için bkz. Sorun 7761 .

Artık Hareket Örnek Sahnesi

Örnek sahne DefaultLeapMotionConfiguration profilini kullanır ve Unity projesinin Artık Hareket Veri Sağlayıcısı'nı kullanmak için doğru yapılandırılıp yapılandırılmadığını belirler.

Örnek sahne, MRTK/Examples/Demos/HandTracking/ dizinindeki Microsoft.MixedReality.Toolkit.Examples paketinde yer alır.

Ayrıca bkz.