Kamerabeállítás-szolgáltató létrehozása – MRTK2

A Kamera rendszer egy bővíthető rendszer, amely támogatja a platformspecifikus kamerakonfigurációkat. Új kamerakonfiguráció támogatásának hozzáadásához szükség lehet egy egyéni beállításszolgáltatóra.

Megjegyzés

Az ebben a példában használt teljes forráskód az MRTK/Providers/UnityAR mappában található.

Névtér és mappastruktúra

Az adatszolgáltatók kétféleképpen terjeszthetők:

  1. Külső bővítmények
  2. A Microsoft Mixed Reality Toolkit része

Az új adatszolgáltatók MRTK-hoz való benyújtásának jóváhagyási folyamata eseti alapon változik, és az eredeti javaslat időpontjában lesz közölve. A javaslatok elküldhetők egy új funkciókérés-típussal kapcsolatos probléma létrehozásával.

Külső bővítmények

Névtér

Az adatszolgáltatóknak névtérrel kell rendelkezniük a lehetséges névütközések mérsékléséhez. Javasoljuk, hogy a névtér tartalmazza a következő összetevőket.

  • A bővítményt létrehozó vállalat neve
  • Funkcióterület

A Contoso vállalat által létrehozott és szállított kamerabeállítás-szolgáltató lehet például a "Contoso.MixedReality.Toolkit.Camera".

Mappastruktúra

Javasoljuk, hogy az adatszolgáltatók forráskódját egy mappahierarchiában helyezze el, az alábbi képen látható módon.

Példamappa szerkezete

Ahol a ContosoCamera mappa tartalmazza az adatszolgáltató implementációját, a Szerkesztő mappában található az inspector (és bármely más Unity-szerkesztőspecifikus kód), a Profiles mappa pedig egy vagy több előre elkészített, szkriptelhető profilobjektumot tartalmaz.

MRTK-beküldés

Névtér

Ha egy kamerabeállítás-szolgáltatót küld a Mixed Reality Eszközkészlet-adattárba, a névtérnek a Microsoft.MixedReality.Toolkit (például Microsoft.MixedReality.Toolkit.CameraSystem) névtérrel kell kezdődnie.

Mappastruktúra

Minden kódnak az MRTK/Szolgáltatók (pl. MRTK/Szolgáltatók/UnityAR) alatti mappában kell lennie.

A kamerabeállítások objektumának definiálása

A kamerabeállítások szolgáltatójának létrehozásának első lépése annak meghatározása, hogy milyen típusú adatokat (például hálókat vagy síkokat) biztosít az alkalmazásoknak.

Minden térbeli adatobjektumnak implementálnia kell az interfészt IMixedRealityCameraSettingsProvider .

A beállításszolgáltató implementálása

Interfész és/vagy alaposztályöröklés megadása

Minden kamerabeállítás-szolgáltatónak implementálnia kell a IMixedRealityCameraSettingsProvider felületet, amely meghatározza a kamerarendszer által igényelt minimális funkcionalitást. Az MRTK-alaprendszer tartalmazza azt a BaseCameraSettingsProvider osztályt, amely a szükséges funkciók alapértelmezett implementálását biztosítja.

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

A MixedRealityDataProvider attribútum alkalmazása

A kamerabeállítás-szolgáltató létrehozásának egyik fő lépése az MixedRealityDataProvider attribútum alkalmazása az osztályra. Ez a lépés lehetővé teszi az adatszolgáltató alapértelmezett profiljának és platformjának beállítását, ha a Kamerarendszer profilban van kiválasztva, valamint a név, a mappa elérési útja stb.

    [MixedRealityDataProvider(
        typeof(IMixedRealityCameraSystem),
        SupportedPlatforms.Android | SupportedPlatforms.IOS,
        "Unity AR Foundation Camera Settings",
        "UnityAR/Profiles/DefaultUnityARCameraSettingsProfile.asset",
        "MixedRealityToolkit.Providers")]
    public class UnityARCameraSettings : BaseCameraSettingsProvider
    { }

Az IMixedRealityDataProvider metódusok implementálása

A osztály definiálása után a következő lépés az interfész implementálásának IMixedRealityDataProvider biztosítása.

Megjegyzés

A BaseDataProvider osztály a BaseService osztályon keresztül üres implementációkat biztosít a metódusokhoz IMixedRealityDataProvider . Ezeknek a módszereknek a részletei általában adatszolgáltató-specifikusak.

Az adatszolgáltató által implementálandó módszerek a következők:

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

Megjegyzés

Nem minden beállításszolgáltatóhoz lesz szükség implementálásra az összes ilyen módszerhez. Erősen ajánlott, és Destroy()Initialize() legalább végre kell hajtani.

Az adatszolgáltatói logika megvalósítása

A következő lépés a beállításszolgáltató logikájának hozzáadása a implementálásával IMixedRealityCameraSettingsProvider. Az adatszolgáltató ezen része általában kamerakonfigurációra jellemző.

A profil és az ellenőr létrehozása

Az Mixed Reality Toolkitben az adatszolgáltatók profilok használatával vannak konfigurálva.

Profil definiálása

A profil tartalmának tükröznie kell a fejlesztő által választható konfigurációs beállításokat. Az egyes felületeken definiált, felhasználó által konfigurálható tulajdonságokat is tartalmaznia kell a profilnak.

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;
    }
}

Az CreateAssetMenu attribútum alkalmazható a profilosztályra, hogy az ügyfelek profilpéldányt hozzanak létre azEszközök>létrehozása>Mixed Reality Eszközkészletprofilok> menü használatával.

Az ellenőr implementálása

A profilfelügyelők a profil tartalmának konfigurálására és megtekintésére szolgáló felhasználói felület. Minden profilfelügyelőnek ki kell terjesztenie az osztályt BaseMixedRealityToolkitConfigurationProfileInspector .

Az CustomEditor attribútum tájékoztatja a Unityt arról, hogy milyen típusú objektumra vonatkozik az ellenőr.

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

Szerelvénydefiníció(k) létrehozása

Mixed Reality Eszközkészlet szerelvénydefiníciós (.asmdef) fájlokat használ az összetevők közötti függőségek meghatározásához, valamint a Unity segít a fordítási idő csökkentésében.

Javasoljuk, hogy a szerelvénydefiníciós fájlokat az összes adatszolgáltatóhoz és azok szerkesztőösszetevőihez hozza létre.

A korábbi példában a mappastruktúrát használva két .asmdef fájl lenne a ContosoCamera adatszolgáltatóhoz.

Az első szerelvénydefiníció az adatszolgáltatóhoz tartozik. Ebben a példában ContosoCamera néven jelenik meg, és a példa ContosoCamera mappájában található. Ennek a szerelvénydefiníciónak meg kell adnia a Microsoft.MixedReality.Toolkit és minden más olyan szerelvény függőségét, amelytől függ.

A ContosoCameraEditor szerelvénydefiníciója határozza meg a profilfelügyelőt és a szerkesztőspecifikus kódot. A fájlnak a szerkesztőkód gyökérmappájában kell lennie. Ebben a példában a fájl a ContosoCamera\Editor mappában található. Ez a szerelvénydefiníció a ContosoCamera szerelvényre mutató hivatkozást, valamint a következőket tartalmazza:

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

Az adatszolgáltató regisztrálása

A létrehozás után az adatszolgáltató regisztrálható az alkalmazásban használni kívánt Kamera rendszerben.

A kamerabeállítások szolgáltatójának kiválasztása

Csomagolás és elosztás

A harmadik féltől származó összetevőkként elosztott adatszolgáltatók a csomagolás és a terjesztés részleteit a fejlesztő előnyben részesítése szerint tekintik meg. Valószínű, hogy a leggyakoribb megoldás egy .unitypackage létrehozása és terjesztése a Unity Asset Store-on keresztül.

Ha egy adatszolgáltatót a Microsoft Mixed Reality Toolkit csomag részeként küld el és fogad el, a Microsoft MRTK csapata az MRTK-ajánlatok részeként csomagolja és terjeszti azt.

Lásd még