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

A Kamera rendszer egy olyan, a platformspecifikus kamerakonfigurációk támogatását biztosító, extenzációs rendszer. Új kamera-konfiguráció támogatásához egyéni beállításszolgáltatóra lehet szükség.

Megjegyzés

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őek:

  1. Külső bővítmények
  2. A Microsoft Mixed Reality eszközkészletének része

Az új adatszolgáltatók MRTK-nak való beküldési folyamata eseti alapon változik, és a kezdeti javaslatkor lesz továbbítva. A javaslatokat egy új funkciókérési típussal kapcsolatos probléma létrehozásával lehet beküldni.

Külső bővítmények

Névtér

Az adatszolgáltatóknak névtérre van szüksége a lehetséges névütközések mérséklése érdekében. Javasoljuk, hogy a névtér a következő összetevőket tartalmazza.

  • A bővítményt előállító cég neve
  • Szolgáltatásterület

Például a Contoso vállalat által létrehozott és kiszállította kamerabeállítás-szolgáltató lehet a "Contoso.MixedReality.Toolkit.Camera".

Mappastruktúra

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

Példamappa szerkezete

Ahol a ContosoCamera mappa tartalmazza az adatszolgáltató implementációját, az Editor mappa tartalmazza az vizsgálót (és bármely más Unity-szerkesztőspecifikus kódot), a Profiles mappa pedig egy vagy több előre készített, parancsfájllal használható profilobjektumot.

MRTK-beküldés

Névtér

Ha egy kamerabeállítás-szolgáltatót ada Mixed Reality Toolkit adattárba, a névtérnek a Microsoft.MixedReality.Toolkittel kell kezdődnie (pl. Microsoft.MixedReality.Toolkit.CameraSystem).

Mappastruktúra

Minden kódnak egy mappában kell lennie az MRTK/Providers alatt (például MRTK/Providers/UnityAR).

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

A kamerabeállítások szolgáltatójának létrehozásának első lépése az alkalmazások számára biztosított adatok (például hálók vagy síkok) típusának meghatározása.

Minden térbeli adatobjektumnak implementálnunk kell a IMixedRealityCameraSettingsProvider felületet.

A beállításszolgáltató implementálja

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

Az összes kamerabeállítás-szolgáltatónak implementálnunk kell a felületet, amely meghatározza a kamerarendszer számára IMixedRealityCameraSettingsProvider minimálisan szükséges funkciókat. Az MRTK alap része a osztály, amely a szükséges funkciók BaseCameraSettingsProvider alapértelmezett implementációjá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 kulcsfontosságú 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 a Kamerarendszer profilban, valamint a név, a mappa elérési útja stb. beállítását.

    [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álva

A osztály definiálás után a következő lépés az interfész IMixedRealityDataProvider implementációja.

Megjegyzés

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

Az adatszolgáltatónak a következő módszereket kell megvalósítania:

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

Megjegyzés

Nem minden beállításszolgáltató igényel implementációt az összes ilyen módszerhez. Erősen ajánlott legalább a és a Destroy()Initialize() megvalósítása.

Az adatszolgáltató logikájának megvalósítása

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

A profil és az inspector létrehozása

A Mixed Reality eszközkészletben az adatszolgáltatók profilok használatával vannak konfigurálva.

A profil meghatározása

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

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 attribútum alkalmazható a profilosztályra, így az ügyfelek létrehozhatnak egy profilpéldányt az Eszközök létrehozása CreateAssetMenuCreateAssetMenu>>>>>>

A vizsgáló implementálja

A profil tartalmának konfigurálásához és megtekintéséhez a profil vizsgálói a felhasználói felület. Minden profil vizsgálónak ki kell terjesztenie az BaseMixedRealityToolkitConfigurationProfileInspector osztályt.

A CustomEditor attribútum tájékoztatja a Unityt az objektumtípusról, amelyre a vizsgáló vonatkozik.

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

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

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

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

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

Az első szerelvénydefiníció az adatszolgáltatóra ért. Ebben a példában a neve ContosoCamera lesz, és a példában található ContosoCamera mappában található. Ennek a szerelvény-definíciónak függőséget kell megadnia a Microsoft.MixedReality.Toolkittől és minden más szerelvénytől, amelytől függ.

A ContosoCameraEditor szerelvénydefiníció megadja a profil vizsgálóját és az összes szerkesztőspecifikus kódot. Ennek a fájlnak a szerkesztőkód gyökérmappában kell lennie. Ebben a példában a fájl a ContosoCamera\Editor mappában található. Ez a szerelvénydefiníció tartalmazni fog egy hivatkozást a ContosoCamera szerelvényre, valamint a következőket:

  • 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ó a Camera (Kamera) rendszerben az alkalmazásban való alkalmazáshoz.

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

Csomagolás és terjesztés

A harmadik féltől származó összetevőkként terjesztett adatszolgáltatók a fejlesztőnek osztják ki a csomagolás és az elosztás részleteit. A leggyakoribb megoldás valószínűleg egy .unitypackage létrehozása és terjesztése a Unity Asset Store-on keresztül.

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

Lásd még