Giriş sistemi veri sağlayıcısı oluşturma

Karma Gerçeklik araç seti giriş sistemi, giriş cihazı desteğini etkinleştirmeye yönelik genişletilebilir bir sistemdir. Yeni bir donanım platformu desteği eklemek için özel bir giriş veri sağlayıcısı gerekli olabilir.

Bu makalede, giriş sistemi için cihaz yöneticileri olarak da adlandırılan özel veri sağlayıcılarının nasıl oluşturulacağı açıklanmaktadır. Burada gösterilen örnek kod öğesinden WindowsMixedRealityDeviceManager .

Bu örnekte kullanılan kodun tamamı MRTK/Providers/WindowsMixedReality klasöründe bulunabilir.

Ad alanı ve klasör yapısı

Veri sağlayıcıları bir üçüncü taraf eklentisi veya Microsoft karma gerçeklik araç seti 'nin bir parçası olarak dağıtılabilir. Yeni veri sağlayıcılarının MRTK 'a gönderdikleri onay süreci, büyük/küçük harfe göre farklılık gösterir ve ilk teklifin anında iletilecektir.

Önemli

Bir giriş sistemi veri sağlayıcısı karma gerçeklik araç seti deposunagönderiliyorsa , ad alanı Microsoft. mixedreality. Toolkit (ex: Microsoft. Mixedreality. Toolkit. windowsmixedreality) ile başlamalıdır ve kod mrtk/sağlayıcılar altındaki bir klasörde bulunmalıdır (örn: mrtk/Providers/windowsmixedreality).

Ad Alanı

Veri sağlayıcılarının olası ad çakışmalarını hafifletmek için bir ad alanına sahip olması gerekir. Ad alanının aşağıdaki bileşenleri içermesi önerilir.

  • Şirket adı
  • Özellik alanı

Örneğin, contoso şirketi tarafından oluşturulan bir giriş veri sağlayıcısı "contoso. MixedReality. Toolkit. Input" olabilir.

Veri sağlayıcılarının kaynak kodunun, aşağıdaki görüntüde gösterildiği gibi bir klasör hiyerarşisinde kullanıma hazır olması önerilir.

Örnek klasör yapısı

Contosoınput, veri sağlayıcısının uygulamasını içerdiğinde, düzenleyici klasörü Inspector 'ı (ve diğer Unity düzenleyicisine özgü kodu) içerir, dokular klasörü desteklenen denetleyicilerin görüntülerini içerir ve profiller bir veya daha fazla önceden oluşturulmuş profil içerir.

Not

Bazı ortak denetleyici görüntüleri Mixedrealitytoolkit\standardassets\dokuları klasöründe bulunabilir.

Veri sağlayıcısını uygulama

Arabirim ve/veya temel sınıf devralma belirtin

Tüm giriş sistemi veri sağlayıcılarının, IMixedRealityInputDeviceManager giriş sistemi için gereken en düşük işlevi belirten arabirimini uygulaması gerekir. MRTK Foundation, BaseInputDeviceManager Bu gerekli işlevselliğin varsayılan bir uygulamasını sağlayan sınıfını içerir. Unity 'nin UIInput sınıfına göre oluşturan cihazlarda, UnityJoystickManager sınıfı temel sınıf olarak kullanılabilir.

Not

BaseInputDeviceManagerVe UnityJoystickManager sınıfları gerekli IMixedRealityInputDeviceManager uygulamayı sağlar.

public class WindowsMixedRealityDeviceManager :
    BaseInputDeviceManager,
    IMixedRealityCapabilityCheck
{ }

IMixedRealityCapabilityCheck , WindowsMixedRealityDeviceManager bir giriş özellikleri kümesi için destek sağladığını, özellikle de ifade edilen uygulamalı, Gaze ve hareket denetleyicilerini göstermek için tarafından kullanılır.

MixedRealityDataProvider özniteliğini uygulama

Bir giriş sistemi veri sağlayıcısı oluşturmanın temel adımı, MixedRealityDataProvider özniteliğini sınıfına uygulamaktır. Bu adım, giriş sistem profilinde seçildiğinde sağlayıcının varsayılan profilini ve platformunu ayarlamaya izin vermez.

[MixedRealityDataProvider(
    typeof(IMixedRealityInputSystem),
    SupportedPlatforms.WindowsUniversal,
    "Windows Mixed Reality Device Manager")]
public class WindowsMixedRealityDeviceManager :
    BaseInputDeviceManager,
    IMixedRealityCapabilityCheck
{ }

IMixedRealityDataProvider yöntemlerini uygulama

Sınıf tanımlandıktan sonra, bir sonraki adım arabirimin uygulanmasını sağlamaktır IMixedRealityDataProvider .

Not

Sınıfı BaseInputDeviceManager aracılığıyla sınıfı, BaseService Yöntemler için yalnızca boş uygulamalar sağlar IMixedRealityDataProvider . Bu yöntemlerin ayrıntıları genellikle veri sağlayıcısına özeldir.

Veri sağlayıcısı tarafından uygulanması gereken yöntemler şunlardır:

  • Destroy()
  • Disable()
  • Enable()
  • Initialize()
  • Reset()
  • Update()

Veri sağlayıcısı mantığını uygulama

Bir sonraki adım, desteklenen tüm denetleyiciler dahil olmak üzere giriş cihazlarını yönetmeye yönelik mantığı eklemektir.

Denetleyici sınıflarını uygulama

Örneği WindowsMixedRealityDeviceManager aşağıdaki denetleyici sınıflarını tanımlar ve uygular.

Bu sınıfların her birine ait kaynak kodu MRTK/Providers/WindowsMixedReality klasöründe bulunabilir.

  • Windowsmixedrealıyarticulatedhve. cs
  • WindowsMixedRealityController. cs
  • WindowsMixedRealityGGVHand. cs

Not

Tüm cihaz yöneticileri birden çok denetleyici türünü destekleyecektir.

MixedRealityController özniteliğini uygulama

Sonra, MixedRealityController özniteliğini sınıfına uygulayın. Bu öznitelik denetleyicinin türünü (örn: ifade edilen), handedlik (örn. sol veya sağ) ve isteğe bağlı bir denetleyici görüntüsünü belirtir.

[MixedRealityController(
    SupportedControllerType.WindowsMixedReality,
    new[] { Handedness.Left, Handedness.Right },
    "StandardAssets/Textures/MotionController")]
{ }

Etkileşim eşlemelerini yapılandırma

Sonraki adım, denetleyici tarafından desteklenen etkileşim eşlemeleri kümesini tanımlamaktır. Verilerini Unity 'nin giriş sınıfı aracılığıyla alan cihazlarda, Denetleyici eşleme aracı , etkileşimlere atanacak doğru eksen ve düğme eşlemelerini onaylamak için faydalı bir kaynaktır.

Aşağıdaki örnek GenericOpenVRController , MRTK/Providers/OpenVR klasöründe bulunan sınıfından kısaltılmıştır.

public override MixedRealityInteractionMapping[] DefaultLeftHandedInteractions => new[]
{
    // Controller Pose
    new MixedRealityInteractionMapping(0, "Spatial Pointer", AxisType.SixDof, DeviceInputType.SpatialPointer, MixedRealityInputAction.None),
    // Left Trigger Squeeze
    new MixedRealityInteractionMapping(1, "Trigger Position", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_9),
    // Left Trigger Press (Select)
    new MixedRealityInteractionMapping(2, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.TriggerPress, KeyCode.JoystickButton14),
};

Not

ControllerMappingLibrarySınıfı, Unity giriş ekseni ve düğme tanımları için sembolik sabitler sağlar.

Bildirim olayları oluştur

Uygulamaların kullanıcıdan girişe yanıt vermesini sağlamak için, veri sağlayıcısı, ve arabirimlerinde tanımlanan denetleyici durum değişikliklerine karşılık gelen bildirim olaylarını başlatır IMixedRealityInputHandlerIMixedRealityInputHandler<T> .

Dijital (düğme) tür denetimleri için, Onınputup ve Onınputup olaylarını yükseltin.

// inputAction is the input event that is to be raised.
if (interactionSourceState.touchpadPressed)
{
    InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, inputAction);
}
else
{
    InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, inputAction);
}

Analog denetimler (örn: Touchpad konumu) için ınputchanged olayının oluşturulması gerekir.

InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.touchpadPosition);

Unity profil oluşturucu araçları ekleme

Karma gerçeklik uygulamalarında performans kritik öneme sahiptir. Her bileşen, uygulamaların hesaba sahip olması gereken miktarda ek yük ekler. Bu uçta, tüm giriş veri sağlayıcılarının, iç döngüde Unity Profiler araçları ve sık kullanılan kod yolları içermesi önemlidir.

Özel sağlayıcılar düzenlenirken MRTK tarafından kullanılan düzenin uygulanması önerilir.

        private static readonly ProfilerMarker GetOrAddControllerPerfMarker = new ProfilerMarker("[MRTK] WindowsMixedRealityDeviceManager.GetOrAddController");

        private async void GetOrAddController(InteractionSourceState interactionSourceState)
        {
            using (GetOrAddControllerPerfMarker.Auto())
            {
                // Code to be measured.
            }
        }

Not

Profil Oluşturucu işaretçisini tanımlamak için kullanılan ad rastgele bir addır. MRTK aşağıdaki kalıbı kullanır.

"[Product] className. methodName-isteğe bağlı Note"

Özel veri sağlayıcılarının, izlemeleri analiz edilirken belirli bileşen ve yöntemlerin tanımlanmasını basitleştirmeye yardımcı olması için benzer bir model izlemesi önerilir.

Profil ve Inspector oluşturma

Karma Gerçeklik araç setinde, veri sağlayıcıları profillerkullanılarak yapılandırılır.

Ek yapılandırma seçeneklerine (örn. InputSimulationService) sahip veri sağlayıcılarının, müşterilerin, uygulamanın ihtiyaçlarına en iyi şekilde davranışını değiştirmesine izin vermek için bir profil ve denetleyici oluşturması gerekir.

Bu bölümdeki örnekteki kodun tamamı MRTK içinde bulunabilir. Hizmetler/ınputsimülasyon klasörü.

Profili tanımlama

Profil içeriği gözlemci 'nin erişilebilir özelliklerini yansıtmalıdır (örn: güncelleştirme aralığı). Her arabirimde tanımlanan kullanıcı yapılandırılabilir özelliklerinin tümü, profille birlikte bulunmalıdır.

[CreateAssetMenu(
    menuName = "Mixed Reality Toolkit/Profiles/Mixed Reality Simulated Input Profile",
    fileName = "MixedRealityInputSimulationProfile",
    order = (int)CreateProfileMenuItemIndices.InputSimulation)]
public class MixedRealityInputSimulationProfile : BaseMixedRealityProfile
{ }

CreateAssetMenuÖzniteliği, müşterilerin CreateAssetMenu menüsünü kullanarak bir profil örneği oluşturmasını sağlamak için profil sınıfına uygulanabilir.

Inspector 'ı uygulama

Profil denetçiler, profil içeriklerini yapılandırmak ve görüntülemek için kullanıcı arabirimidir. Her profil denetçisi ' Basemixedrealitytoolkitconfigurationprofileınspector sınıfını genişletmelidir.

[CustomEditor(typeof(MixedRealityInputSimulationProfile))]
public class MixedRealityInputSimulationProfileInspector : BaseMixedRealityToolkitConfigurationProfileInspector
{ }

CustomEditorÖznitelik, Unity 'nin Inspector 'ın uyguladığı varlık türünü bilgilendirir.

Derleme tanımları oluştur

Karma Gerçeklik araç seti, bileşenler arasındaki bağımlılıkları belirtmek ve derleme süresini azaltmak için Unity 'ye yardımcı olmak üzere derleme tanımı (. asmdef) dosyalarını kullanır.

Tüm veri sağlayıcıları ve bunların düzenleyici bileşenleri için derleme tanımı dosyalarının oluşturulması önerilir.

Önceki örnekte yer alan klasör yapısını kullanarak, contosoınput veri sağlayıcısı için iki. asmdef dosyası vardır.

İlk derleme tanımı veri sağlayıcısına yöneliktir. Bu örnekte, Contosoınput olarak adlandırılacaktır ve örneğin Contosoınput klasöründe yer alacak. Bu derleme tanımı Microsoft. MixedReality. Toolkit ve bağımlı olduğu diğer derlemeler için bir bağımlılık belirtmelidir.

Contosoınputeditor derleme tanımı profil denetçisini ve düzenleyiciye özgü kodu belirtir. Bu dosya, düzenleyici kodunun kök klasöründe bulunmalıdır. Bu örnekte, dosya Contosoınput\editor klasöründe yer alır. Bu derleme tanımı, Contosoınput derlemesine ve şu şekilde bir başvuru içerecektir:

  • Microsoft. MixedReality. Toolkit
  • Microsoft.MixedReality.Toolkit.Editor.Inspectors
  • Microsoft.MixedReality.Toolkit.Editor.Utilities

Veri sağlayıcısını kaydetme

Oluşturulduktan sonra veri sağlayıcısı giriş sistemine kaydedilebilir ve uygulamada kullanılabilir.

Kayıtlı giriş sistemi veri sağlayıcıları

Paketleme ve dağıtım

Üçüncü taraf bileşenler olarak dağıtılan veri sağlayıcıları, paketleme ve dağıtımla ilgili belirli ayrıntıları geliştiricinin tercihlerine bırakmaktadır. Büyük olasılıkla en yaygın çözüm bir .unitypackage oluşturmak ve Unity Varlık Deposu aracılığıyla dağıtmaktır.

Bir veri sağlayıcısı gönderilirse ve Microsoft Mixed Reality Toolkit paketinin bir parçası olarak kabul edilirse, Microsoft MRTK ekibi bunu MRTK tekliflerinin bir parçası olarak paketler ve dağıtır.

Ayrıca bkz.