Vytvoření poskytovatele nastavení kamery – MRTK2
Kamerový systém je rozšiřitelný systém pro poskytování podpory pro konfigurace kamery specifické pro platformu. Pokud chcete přidat podporu pro novou konfiguraci kamery, může se vyžadovat vlastní poskytovatel nastavení.
Poznámka
Úplný zdrojový kód použitý v tomto příkladu najdete ve složce MRTK/Providers/UnityAR .
Obor názvů a struktura složek
Poskytovatelé dat je možné distribuovat jedním ze dvou způsobů:
- Doplňky třetích stran
- Součást sady Microsoft Mixed Reality Toolkit
Postup schvalování pro předložení nových poskytovatelů údajů MRTK se bude případ od případu lišit a bude oznámen v okamžiku původního návrhu. Návrhy je možné odeslat vytvořením nového typu žádosti o funkci.
Doplňky třetích stran
Obor názvů
Poskytovatelé dat musí mít obor názvů, aby se zmírnily případné kolize názvů. Doporučuje se, aby obor názvů zahrnoval následující komponenty.
- Název společnosti vytvářející doplněk
- Oblast funkce
Například poskytovatel nastavení kamery vytvořený a dodávaný společností Contoso může být Contoso.MixedReality.Toolkit.Camera.
Struktura složek
Doporučuje se, aby byl zdrojový kód pro zprostředkovatele dat uspořádaný v hierarchii složek, jak je znázorněno na následujícím obrázku.
Pokud složka ContosoCamera obsahuje implementaci zprostředkovatele dat, složka Editor obsahuje inspektor (a jakýkoli jiný kód specifický pro editor Unity) a složka Profiles obsahuje jeden nebo více předem vytvořených skriptovatelných objektů profilu.
Odeslání MRTK
Obor názvů
Pokud se poskytovatel nastavení kamery odesílá do úložiště Mixed Reality Toolkit, musí obor názvů začínat na Microsoft.MixedReality.Toolkit (např. Microsoft.MixedReality.Toolkit.CameraSystem).
Struktura složek
Veškerý kód musí být umístěný ve složce pod MRTK/Providers (např. MRTK/Providers/UnityAR).
Definování objektu nastavení kamery
Prvním krokem při vytváření poskytovatele nastavení kamery je určení typu dat (například sítí nebo rovin), které bude poskytovat aplikacím.
Všechny objekty prostorových dat musí implementovat IMixedRealityCameraSettingsProvider
rozhraní .
Implementace zprostředkovatele nastavení
Určení dědičnosti rozhraní nebo základní třídy
Všichni poskytovatelé nastavení kamery musí implementovat IMixedRealityCameraSettingsProvider
rozhraní, které určuje minimální funkčnost vyžadovanou kamerovým systémem. Základ MRTK zahrnuje BaseCameraSettingsProvider
třídu, která poskytuje výchozí implementaci požadované funkce.
namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
public class UnityARCameraSettings : BaseCameraSettingsProvider
{ }
}
Použití atributu MixedRealityDataProvider
Klíčovým krokem při vytváření poskytovatele nastavení kamery je použití atributu MixedRealityDataProvider
na třídu . Tento krok umožňuje nastavit výchozí profil a platformy pro poskytovatele dat, pokud je vybraný v profilu kamerového systému, a také název, cestu ke složce a další možnosti.
[MixedRealityDataProvider(
typeof(IMixedRealityCameraSystem),
SupportedPlatforms.Android | SupportedPlatforms.IOS,
"Unity AR Foundation Camera Settings",
"UnityAR/Profiles/DefaultUnityARCameraSettingsProfile.asset",
"MixedRealityToolkit.Providers")]
public class UnityARCameraSettings : BaseCameraSettingsProvider
{ }
Implementace metod IMixedRealityDataProvider
Jakmile je třída definována, dalším krokem je poskytnutí implementace IMixedRealityDataProvider
rozhraní.
Poznámka
Třída BaseDataProvider
prostřednictvím BaseService
třídy poskytuje prázdné implementace metod IMixedRealityDataProvider
. Podrobnosti o těchto metodách jsou obecně specifické pro zprostředkovatele dat.
Zprostředkovatel dat by měl implementovat následující metody:
Destroy()
Disable()
Enable()
Initialize()
Reset()
Update()
Poznámka
Ne všichni poskytovatelé nastavení budou pro všechny tyto metody vyžadovat implementace. Důrazně doporučujeme, aby Destroy()
a Initialize()
byly implementovány minimálně.
Implementace logiky zprostředkovatele dat
Dalším krokem je přidání logiky zprostředkovatele nastavení implementací IMixedRealityCameraSettingsProvider
. Tato část poskytovatele dat bude obvykle specifická pro konfiguraci kamery.
Vytvoření profilu a inspektoru
V Mixed Reality Toolkit se zprostředkovatelé dat konfigurují pomocí profilů.
Definování profilu
Obsah profilu by měl odrážet možnosti konfigurace s možností výběru pro vývojáře. Profil by měl obsahovat také všechny uživatelem konfigurovatelné vlastnosti definované v každém rozhraní.
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;
}
}
Atribut CreateAssetMenu
lze použít u třídy profilu, aby zákazníci mohli vytvořit instanci profilu pomocí nabídky Vytvořit>prostředky>Mixed Reality Profily sady Nástrojů>.
Implementace inspektoru
Kontroly profilů jsou uživatelské rozhraní pro konfiguraci a zobrazení obsahu profilu. Každá kontrola profilu by měla rozšířit BaseMixedRealityToolkitConfigurationProfileInspector
třídu .
Atribut CustomEditor
informuje Unity o typu prostředku, na který se inspektor vztahuje.
namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
[CustomEditor(typeof(UnityARCameraSettingsProfile))]
public class UnityARCameraSettingsProfileInspector : BaseMixedRealityToolkitConfigurationProfileInspector
{ }
}
Vytvoření definic sestavení
sada Mixed Reality Toolkit používá definiční soubory sestavení (.asmdef) k určení závislostí mezi komponentami a také k tomu, aby unity pomohla zkrátit dobu kompilace.
Doporučuje se vytvářet definiční soubory sestavení pro všechny zprostředkovatele dat a jejich součásti editoru.
Při použití struktury složek v předchozím příkladu by pro zprostředkovatele dat ContosoCamera existovaly dva soubory .asmdef.
První definice sestavení je pro zprostředkovatele dat. V tomto příkladu bude mít název ContosoCamera a bude umístěn ve složce ContosoCamera v příkladu. Tato definice sestavení musí určovat závislost na Microsoft.MixedReality.Toolkit a všech ostatních sestaveních, na kterých závisí.
Definice sestavení ContosoCameraEditor určí inspektor profilu a libovolný kód specifický pro editor. Tento soubor musí být umístěn v kořenové složce kódu editoru. V tomto příkladu bude soubor umístěný ve složce ContosoCamera\Editor . Tato definice sestavení bude obsahovat odkaz na sestavení ContosoCamera a také:
- Microsoft.MixedReality.Toolkit
- Microsoft.MixedReality.Toolkit.Editor.Inspectors
- Microsoft.MixedReality.Toolkit.Editor.Utilities
Registrace poskytovatele dat
Jakmile ho vytvoříte, můžete ho zaregistrovat ve kamerovém systému a použít ho v aplikaci.
Balení a distribuce
Poskytovatelé dat, kteří se distribuují jako komponenty třetích stran, mají konkrétní podrobnosti o balení a distribuci ponechány na preferenci vývojáře. Nejběžnějším řešením bude pravděpodobně vygenerovat balíček .unitypackage a distribuovat ho prostřednictvím úložiště prostředků Unity.
Pokud je poskytovatel dat odeslán a přijat jako součást balíčku Microsoft Mixed Reality Toolkit, tým Microsoft MRTK ho zabalí a distribuuje jako součást nabídek MRTK.