Sdílet prostřednictvím


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ů:

  1. Doplňky třetích stran
  2. 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.

Příklad struktury složek

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.

Výběr poskytovatele nastavení kamery

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.

Viz také