Tworzenie dostawcy ustawień aparatu

System aparatów to rozszerzalny system zapewniający obsługę konfiguracji kamer specyficznych dla platformy. Aby dodać obsługę nowej konfiguracji aparatu, może być wymagany dostawca ustawień niestandardowych.

Uwaga

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

Przestrzeń nazw i struktura folderów

Dostawców danych można dystrybuować na jeden z dwóch sposobów:

  1. Dodatki innych firm
  2. Część zestawu microsoft Mixed Reality Toolkit

Proces zatwierdzania przesyłania nowych dostawców danych do mrTK będzie się różnić w poszczególnych przypadkach i zostanie o tym zakomunikowany w momencie wstępnej propozycji. Propozycje można przesłać, tworząc nowy problem typu żądania funkcji.

Dodatki innych firm

Przestrzeń nazw

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

  • Nazwa firmy tworząca dodatek
  • Obszar funkcji

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

Struktura folderów

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

Przykładowa struktura folderów

Folder ContosoCamera zawiera implementację dostawcy danych, folder Editor zawiera inspektora (i dowolny inny kod edytora aparatu Unity), a folder Profiles zawiera co najmniej jeden wstępnie wykonany obiekt skryptowy profilu.

Przesyłanie mrTK

Przestrzeń nazw

Jeśli dostawca ustawień aparatu jest przesłany do repozytorium zestawu narzędzi Mixed Reality Toolkit,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 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) zapewnianych aplikacjom.

Wszystkie obiekty danych przestrzennych muszą implementować IMixedRealityCameraSettingsProvider interfejs.

Implementowanie dostawcy ustawień

Określanie interfejsu i/lub dziedziczenia klasy bazowej

Wszyscy dostawcy ustawień aparatu muszą implementować interfejs, który IMixedRealityCameraSettingsProvider określa minimalne funkcje wymagane przez system kamery. Podstawy zestawu mrTK obejmują BaseCameraSettingsProvider klasę , która zapewnia domyślną implementację wymaganych funkcji.

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

Stosowanie atrybutu MixedRealityDataProvider

Kluczowym krokiem podczas tworzenia dostawcy ustawień aparatu jest zastosowanie MixedRealityDataProvider atrybutu do klasy. Ten krok umożliwia ustawienie domyślnych profilów i platform dostawcy danych po wybraniu w profilu System 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 zdefiniować klasę następnym krokiem jest zapewnienie implementacji IMixedRealityDataProvider interfejsu.

Uwaga

Klasa BaseDataProvider , za BaseService pośrednictwem klasy , udostępnia puste implementacje IMixedRealityDataProvider dla metod. Szczegóły tych metod są zwykle 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() zostały zaimplementowane co najmniej.

Implementowanie logiki dostawcy danych

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

Tworzenie profilu i inspektora

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

Definiowanie profilu

Zawartość profilu powinna odzwierciedlać opcje konfiguracji wybierane przez dewelopera. Wszystkie właściwości konfigurowane przez użytkownika zdefiniowane w każdym interfejsie również powinny być zawarte w profilu.

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 można zastosować do klasy profilu, aby umożliwić klientom tworzenie wystąpienia profilu przy użyciu CreateAssetMenu menu Create > Assets Mixed Reality Toolkit Profiles (Tworzenie zasobów i > profilów zestawu > narzędzi).

Implementowanie inspektora

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

Atrybut CustomEditor informuje platformę Unity o typie zasobu, którego dotyczy inspektor.

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

Tworzenie definicji zestawu

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

Zaleca się, 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, byłyby dwa pliki asmdef dostawcy danych ContosoCamera.

Pierwsza definicja zestawu jest dla dostawcy danych. W tym przykładzie będzie on miał nazwę ContosoCamera i będzie się znajdował w folderze ContosoCamera przykładu. 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 się znajdował 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 dostawcy danych można zarejestrować go w systemie aparatów, który będzie używany w aplikacji.

Wybieranie dostawcy ustawień aparatu

Pakowanie i dystrybucja

Dostawcy danych dystrybuowani jako składniki innych firm mają szczegółowe informacje o pakowaniu i dystrybucji pozostawione preferencjom dewelopera. Prawdopodobnie najpopularniejszym rozwiązaniem będzie wygenerowanie .unitypackage i dystrybucja 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ół zestawu narzędzi Microsoft MRTK spakuje go i rozpowszechni w ramach ofert zestawu narzędzi MRTK.

Zobacz też