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:
- Külső bővítmények
- 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.
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.
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.