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:
- Dodatki innych firm
- 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.
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.
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.