Tworzenie dostawcy ustawień aparatu — MRTK2

System aparatów jest rozszerzalnym systemem zapewniającym obsługę konfiguracji aparatów specyficznych dla platformy. Aby dodać obsługę nowej konfiguracji aparatu, może być wymagany dostawca ustawień niestandardowych.

Uwaga

Kompletny kod źródłowy użyty w tym przykładzie można znaleźć w folderze MRTK/Providers/UnityAR .

Przestrzeń nazw i struktura folderów

Dostawcy danych mogą być dystrybuowani na jeden z dwóch sposobów:

  1. Dodatki innych firm
  2. Część zestawu narzędzi Microsoft Mixed Reality Toolkit

Proces zatwierdzania przesyłania nowych dostawców danych do mrTK będzie się różnić w zależności od przypadku i zostanie przekazany w momencie początkowej propozycji. Propozycje można przesłać, tworząc nowy problem z typem żądania funkcji.

Dodatki innych firm

Obszaru nazw

Dostawcy danych muszą mieć przestrzeń nazw w celu ograniczenia potencjalnych kolizji nazw. Zaleca się, aby przestrzeń nazw zawierała następujące składniki.

  • Nazwa firmy produkująca dodatek
  • Obszar funkcji

Na przykład dostawca ustawień aparatu utworzony i dostarczony przez firmę Contoso może być "Contoso.MixedReality.Toolkit.Camera".

Struktura folderów

Zaleca się, aby kod źródłowy dostawców danych był układany w hierarchii folderów, jak pokazano na poniższej ilustracji.

Przykładowa struktura folderów

Gdzie folder ContosoCamera zawiera implementację dostawcy danych, folder Editor zawiera inspektora (i dowolnego innego kodu specyficznego dla edytora aparatu Unity), a folder Profiles zawiera co najmniej jeden wstępnie utworzony obiekt skryptowy profilu.

Przesyłanie mrTK

Obszaru nazw

Jeśli dostawca ustawień aparatu jest przesyłany do repozytorium zestawu narzędzi Mixed Reality, przestrzeń nazw musi zaczynać się od microsoft.MixedReality.Toolkit (np. Microsoft.MixedReality.Toolkit.CameraSystem).

Struktura folderów

Cały kod musi znajdować się w folderze poniżej zestawu narzędzi MRTK/Providers (np. MRTK/Providers/UnityAR).

Definiowanie obiektu ustawień aparatu

Pierwszym krokiem podczas tworzenia dostawcy ustawień aparatu jest określenie typu danych (np. siatki lub płaszczyzny), które zapewni aplikacjom.

Wszystkie obiekty danych przestrzennych muszą implementować IMixedRealityCameraSettingsProvider interfejs.

Implementowanie dostawcy ustawień

Określanie dziedziczenia interfejsu i/lub klasy bazowej

Wszyscy dostawcy ustawień aparatu muszą zaimplementować IMixedRealityCameraSettingsProvider interfejs, który określa minimalną funkcjonalność wymaganą przez system kamer. Podstawy zestawu narzędzi MRTK obejmują klasę BaseCameraSettingsProvider , która zapewnia domyślną implementację wymaganych funkcji.

namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
    public class UnityARCameraSettings : BaseCameraSettingsProvider
    { }
}

Stosowanie atrybutu MixedRealityDataProvider

Kluczowym krokiem tworzenia dostawcy ustawień aparatu jest zastosowanie atrybutu MixedRealityDataProvider do klasy. Ten krok umożliwia ustawienie domyślnych profilów i platform dla dostawcy danych po wybraniu w profilu systemu aparatu, a także nazwy, ścieżki folderu i nie tylko.

    [MixedRealityDataProvider(
        typeof(IMixedRealityCameraSystem),
        SupportedPlatforms.Android | SupportedPlatforms.IOS,
        "Unity AR Foundation Camera Settings",
        "UnityAR/Profiles/DefaultUnityARCameraSettingsProfile.asset",
        "MixedRealityToolkit.Providers")]
    public class UnityARCameraSettings : BaseCameraSettingsProvider
    { }

Implementowanie metod IMixedRealityDataProvider

Po zdefiniowaniu klasy następnym krokiem jest zapewnienie implementacji interfejsu IMixedRealityDataProvider .

Uwaga

Klasa BaseDataProvider , za pośrednictwem BaseService klasy, udostępnia puste implementacje dla IMixedRealityDataProvider metod. Szczegóły tych metod są ogólnie specyficzne dla dostawcy danych.

Metody, które powinny być implementowane przez dostawcę danych, to:

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

Uwaga

Nie wszyscy dostawcy ustawień będą wymagać implementacji dla wszystkich tych metod. Zdecydowanie zaleca się, aby Destroy() i Initialize() zaimplementować je co najmniej.

Implementowanie logiki dostawcy danych

Następnym krokiem jest dodanie logiki dostawcy ustawień przez zaimplementowanie polecenia IMixedRealityCameraSettingsProvider. Ta część dostawcy danych zazwyczaj będzie specyficzna dla konfiguracji aparatu.

Tworzenie profilu i inspektora

W Mixed Reality Toolkit dostawcy danych są konfigurowani przy użyciu profilów.

Definiowanie profilu

Zawartość profilu powinna odzwierciedlać opcje konfiguracji, które można wybrać dla deweloperów. Wszystkie właściwości konfigurowalne użytkownika zdefiniowane w każdym interfejsie powinny być również zawarte z profilem.

using UnityEngine.SpatialTracking;

namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
    [CreateAssetMenu(
        menuName = "Mixed Reality Toolkit/Profiles/Unity AR Camera Settings Profile",
        fileName = "UnityARCameraSettingsProfile",
        order = 100)]
    public class UnityARCameraSettingsProfile : BaseCameraSettingsProfile
    {
        [SerializeField]
        [Tooltip("The portion of the device (ex: color camera) from which to read the pose.")]
        private ArTrackedPose poseSource = TrackedPoseDriver.TrackedPose.ColorCamera;

        /// <summary>
        /// The portion of the device (ex: color camera) from which to read the pose.
        /// </summary>
        public ArTrackedPose PoseSource => poseSource;

        [SerializeField]
        [Tooltip("The type of tracking (position and/or rotation) to apply.")]
        private ArTrackingType trackingType = TrackedPoseDriver.TrackingType.RotationAndPosition;

        /// <summary>
        /// The type of tracking (position and/or rotation) to apply.
        /// </summary>
        public ArTrackingType TrackingType => trackingType;

        [SerializeField]
        [Tooltip("Specifies when (during Update and/or just before rendering) to update the tracking of the pose.")]
        private ArUpdateType updateType = TrackedPoseDriver.UpdateType.UpdateAndBeforeRender;

        /// <summary>
        /// Specifies when (during Update and/or just before rendering) to update the tracking of the pose.
        /// </summary>
        public ArUpdateType UpdateType => updateType;
    }
}

Atrybut CreateAssetMenu można zastosować do klasy profilu, aby umożliwić klientom tworzenie wystąpienia profilu przy użyciu menu Tworzenie>zasobów> Mixed RealityProfilezestawu narzędzi>.

Implementowanie inspektora

Inspektorzy profilów to interfejs użytkownika służący do konfigurowania i wyświetlania zawartości profilu. Każdy inspektor profilu powinien rozszerzyć klasę BaseMixedRealityToolkitConfigurationProfileInspector .

Atrybut CustomEditor informuje aparat Unity o typie zasobu, do którego ma zastosowanie inspektor.

namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
    [CustomEditor(typeof(UnityARCameraSettingsProfile))]
    public class UnityARCameraSettingsProfileInspector : BaseMixedRealityToolkitConfigurationProfileInspector
    { }
}

Tworzenie definicji zestawów

Mixed Reality Toolkit używa plików definicji zestawu (asmdef) do określania zależności między składnikami, a także pomaga aparatu Unity w skróceniu czasu kompilacji.

Zalecane jest, aby pliki definicji zestawu zostały utworzone dla wszystkich dostawców danych i ich składników edytora.

Korzystając ze struktury folderów we wcześniejszym przykładzie, istnieją dwa pliki asmdef dla dostawcy danych ContosoCamera.

Pierwsza definicja zestawu dotyczy dostawcy danych. W tym przykładzie będzie ona nazywana ContosoCamera i będzie znajdować się w przykładowym folderze ContosoCamera . Ta definicja zestawu musi określać zależność od zestawu Microsoft.MixedReality.Toolkit i innych zestawów, od których zależy.

Definicja zestawu ContosoCameraEditor określi inspektora profilu i dowolny kod specyficzny dla edytora. Ten plik musi znajdować się w folderze głównym kodu edytora. W tym przykładzie plik będzie znajdować się w folderze ContosoCamera\Editor . Ta definicja zestawu będzie zawierać odwołanie do zestawu ContosoCamera, a także:

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

Rejestrowanie dostawcy danych

Po utworzeniu dostawca danych można zarejestrować w systemie Aparatu, który ma być używany w aplikacji.

Wybieranie dostawcy ustawień aparatu

Pakowanie i dystrybucja

Dostawcy danych, którzy są dystrybuowani jako składniki innych firm, mają szczegółowe informacje na temat pakowania i dystrybucji pozostawione preferencjom dewelopera. Prawdopodobnie najbardziej typowym rozwiązaniem będzie wygenerowanie pliku unitypackage i rozpowszechnianie za pośrednictwem magazynu zasobów aparatu Unity.

Jeśli dostawca danych zostanie przesłany i zaakceptowany w ramach pakietu Microsoft Mixed Reality Toolkit, zespół MRTK firmy Microsoft spakuje i rozpowszechnia go w ramach ofert MRTK.

Zobacz też