Vytváření poskytovatele nastavení kamery

Systém kamery je rozšiřitelný systém pro poskytování podpory pro konfigurace kamery specifické pro platformu. Chcete-li přidat podporu pro novou konfiguraci kamery, může být vyžadován poskytovatel vlastního 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

Zprostředkovatele dat lze distribuovat jedním ze dvou způsobů:

  1. Doplňky třetích stran
  2. Součást Microsoft Mixed reality Toolkit

Proces schválení pro odeslání nových zprostředkovatelů dat do MRTK se bude lišit případ od případu a bude se informovat v okamžiku prvotního návrhu. Návrhy lze odeslat vytvořením nového problému s typem žádosti o funkci.

Doplňky třetích stran

Obor názvů

Poskytovatelé dat musí mít obor názvů pro zmírnění potenciálních kolizí názvů. Doporučuje se, aby obor názvů zahrnoval následující komponenty.

  • Název společnosti, která vytvořila doplněk
  • Oblast funkcí

Například poskytovatel nastavení kamery vytvořený a dodaný společností Contoso může být contoso. MixedReality. Toolkit. Kamera ".

Struktura složek

Doporučuje se, aby byl zdrojový kód pro poskytovatele dat layed v hierarchii složek, jak je znázorněno na následujícím obrázku.

Příklad struktury složek

Kde složka ContosoCamera obsahuje implementaci poskytovatele dat, složka Editor obsahuje inspektora (a jakýkoliv jiný kód specifický pro Editor Unity) a složka profily obsahuje jeden nebo více předem připravených objektů s skriptem.

Odeslání MRTK

Obor názvů

pokud se poskytovatel nastavení kamery odesílá do úložiště ve smíšené realitě 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 nebo zprostředkovateli (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ř. sítí nebo rovin), které bude poskytovat aplikacím.

Všechny objekty prostorových dat musí implementovat IMixedRealityCameraSettingsProvider rozhraní.

Implementace poskytovatele nastavení

Zadat rozhraní nebo dědičnost základní třídy

Všichni zprostředkovatelé nastavení kamery musí implementovat IMixedRealityCameraSettingsProvider rozhraní, které určuje minimální funkčnost, kterou systém kamery vyžaduje. MRTK Foundation obsahuje třídu, BaseCameraSettingsProvider která poskytuje výchozí implementaci požadovaných funkcí.

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

Použít atribut MixedRealityDataProvider

Klíčový krok při vytváření poskytovatele nastavení kamery je použít MixedRealityDataProvider atribut pro třídu. Tento krok umožňuje nastavit výchozí profil a platformy pro poskytovatele dat, pokud je vybraný v profilu systému kamery a také název, cestu ke složce a další.

    [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

Po definování třídy je dalším krokem poskytnutí implementace IMixedRealityDataProvider rozhraní.

Poznámka

BaseDataProviderTřída prostřednictvím BaseService třídy poskytuje prázdná implementace pro IMixedRealityDataProvider metody. Podrobnosti o těchto metodách jsou všeobecně specifické pro konkrétního poskytovatele dat.

Mezi metody, které by měly být implementovány poskytovatelem dat, patří:

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

Poznámka

Ne všechna zprostředkovatelé nastavení budou vyžadovat implementace všech těchto metod. Důrazně doporučujeme, abyste Destroy()Initialize() implementovali minimálně.

Implementace logiky poskytovatele 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řit profil a kontrolora

v Toolkit Mixed Reality jsou poskytovatelé dat nakonfigurováni pomocí profilů.

Definovat profil

Obsah profilu by měl zrcadlit možnosti konfigurace vybrané vývojářem. Všechny konfigurovatelné vlastnosti definované v každém rozhraní by měly být také součástí 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;
    }
}

CreateAssetMenuatribut se dá použít u třídy profile, aby zákazníci mohli vytvořit instanci profilu pomocí nabídky CreateAssetMenu>>>>>> .

Implementace inspektoru

Inspektory profilu jsou uživatelské rozhraní pro konfiguraci a zobrazení obsahu profilu. Každý inspektor profilu by měl tuto BaseMixedRealityToolkitConfigurationProfileInspector třídu zvětšit.

CustomEditorAtribut informuje o Unity typ assetu, na který se inspektor vztahuje.

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

Vytvořit definice sestavení

Mixed Reality Toolkit používá soubory definice sestavení (. asmdef) k určení závislostí mezi komponentami a k usnadnění Unity při zkrácení doby kompilace.

Doporučuje se, aby se soubory definic sestavení vytvořily pro všechny poskytovatele dat a jejich komponenty editoru.

Pomocí struktury složek v předchozím příkladu by existovaly dva soubory. asmdef pro poskytovatele dat ContosoCamera.

První definice sestavení je pro poskytovatele dat. V tomto příkladu se bude volat 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šechna ostatní sestavení, na kterých závisí.

Definice sestavení ContosoCameraEditor bude určovat profil inspektora a jakýkoliv 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 se soubor nachází ve složce ContosoCamera\Editor . Tato definice sestavení bude obsahovat odkaz na ContosoCamera sestavení a také:

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

Registrace poskytovatele dat

Po vytvoření se může zprostředkovatel dat zaregistrovat v systému kamery, který se použije v aplikaci.

Výběr poskytovatele nastavení kamery

Balení a distribuce

Poskytovatelé dat, kteří jsou distribuováni jako komponenty třetích stran, mají konkrétní podrobnosti o balení a distribuci vlevo k předvolbě vývojáře. Nejběžnějším řešením je pravděpodobně vygenerování. unitypackage a distribuce prostřednictvím úložiště assetů Unity.

pokud se poskytovatel dat odešle a přijme jako součást balíčku microsoft Mixed Reality Toolkit, tým Microsoft MRTK ho zabalí a rozešle jako součást nabídek MRTK.

Viz také