Skapa en kamerainställningsprovider – MRTK2
Kamerasystemet är ett utökningsbart system för att ge stöd för plattformsspecifika kamerakonfigurationer. Om du vill lägga till stöd för en ny kamerakonfiguration kan en anpassad inställningsprovider krävas.
Anteckning
Den fullständiga källkoden som används i det här exemplet finns i mappen MRTK/Providers/UnityAR .
Namnområde och mappstruktur
Dataleverantörer kan distribueras på något av två sätt:
- Tillägg från tredje part
- En del av Microsoft Mixed Reality Toolkit
Godkännandeprocessen för inlämning av nya dataleverantörer till MRTK kommer att variera från fall till fall och kommer att meddelas vid tidpunkten för det ursprungliga förslaget. Förslag kan skickas genom att skapa ett nytt problem av typen Funktionsbegäran.
Tillägg från tredje part
Namnområde
Dataprovidrar måste ha ett namnområde för att minimera potentiella namnkollisioner. Vi rekommenderar att namnområdet innehåller följande komponenter.
- Företagsnamn som producerar tillägget
- Funktionsområde
Till exempel kan en kamerainställningsprovider som skapats och levererats av Contoso-företaget vara "Contoso.MixedReality.Toolkit.Camera".
Mappstrukturen
Vi rekommenderar att källkoden för dataproviders placeras i en mapphierarki enligt följande bild.
Om mappen ContosoCamera innehåller implementeringen av dataprovidern innehåller mappen Editor inspektören (och eventuell annan specifik kod för Unity-redigeraren) och mappen Profiler innehåller ett eller flera färdiga skriptbara profilobjekt.
MRTK-inlämning
Namnområde
Om en kamerainställningsprovider skickas till Mixed Reality Toolkit-lagringsplatsenmåste namnområdet börja med Microsoft.MixedReality.Toolkit (t.ex. Microsoft.MixedReality.Toolkit.CameraSystem).
Mappstrukturen
All kod måste finnas i en mapp under MRTK/Providers (till exempel MRTK/Providers/UnityAR).
Definiera kamerainställningsobjektet
Det första steget i att skapa en leverantör av kamerainställningar är att bestämma vilken typ av data (t.ex. nät eller plan) som den ska tillhandahålla till program.
Alla rumsliga dataobjekt måste implementera IMixedRealityCameraSettingsProvider
gränssnittet.
Implementera inställningsprovidern
Ange arv av gränssnitt och/eller basklass
Alla kamerainställningar måste implementera IMixedRealityCameraSettingsProvider
gränssnittet, vilket anger den minsta funktionalitet som krävs av kamerasystemet. MRTK-grunden innehåller BaseCameraSettingsProvider
klassen som tillhandahåller en standardimplementering av de nödvändiga funktionerna.
namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
public class UnityARCameraSettings : BaseCameraSettingsProvider
{ }
}
Använda attributet MixedRealityDataProvider
Ett viktigt steg i att skapa en kamerainställningsprovider är att tillämpa MixedRealityDataProvider
attributet på klassen . Det här steget gör det möjligt att ange standardprofilen och plattformen för dataprovidern, när de väljs i profilen Kamerasystem samt namn, mappsökväg med mera.
[MixedRealityDataProvider(
typeof(IMixedRealityCameraSystem),
SupportedPlatforms.Android | SupportedPlatforms.IOS,
"Unity AR Foundation Camera Settings",
"UnityAR/Profiles/DefaultUnityARCameraSettingsProfile.asset",
"MixedRealityToolkit.Providers")]
public class UnityARCameraSettings : BaseCameraSettingsProvider
{ }
Implementera metoderna IMixedRealityDataProvider
När klassen har definierats är nästa steg att tillhandahålla implementeringen av IMixedRealityDataProvider
gränssnittet.
Anteckning
Klassen BaseDataProvider
tillhandahåller, via BaseService
klassen, tomma implementeringar för IMixedRealityDataProvider
metoder. Informationen om dessa metoder är vanligtvis dataleverantörsspecifika.
De metoder som ska implementeras av dataprovidern är:
Destroy()
Disable()
Enable()
Initialize()
Reset()
Update()
Anteckning
Alla inställningsleverantörer kräver inte implementeringar för alla dessa metoder. Vi rekommenderar starkt att Destroy()
och Initialize()
implementeras som ett minimum.
Implementera dataproviderlogik
Nästa steg är att lägga till logiken för inställningsprovidern genom att implementera IMixedRealityCameraSettingsProvider
. Den här delen av dataleverantören är vanligtvis kamerakonfigurationsspecifik.
Skapa profilen och kontrollanten
I Mixed Reality Toolkit konfigureras dataprovidrar med hjälp av profiler.
Definiera profilen
Profilinnehållet bör spegla utvecklarens valbara konfigurationsalternativ. Alla användarkonfigurerbara egenskaper som definierats i varje gränssnitt ska också finnas i profilen.
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;
}
}
Attributet CreateAssetMenu
kan tillämpas på profilklassen så att kunder kan skapa en profilinstans med hjälp av menyn Skapa>tillgångar>Mixed Reality Toolkit-profiler>.
Implementera inspektören
Profilkontrollanter är användargränssnittet för att konfigurera och visa profilinnehåll. Varje profilkontroll bör utöka BaseMixedRealityToolkitConfigurationProfileInspector
klassen.
Attributet CustomEditor
informerar Unity om vilken typ av tillgång som kontrollanten gäller för.
namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
[CustomEditor(typeof(UnityARCameraSettingsProfile))]
public class UnityARCameraSettingsProfileInspector : BaseMixedRealityToolkitConfigurationProfileInspector
{ }
}
Skapa sammansättningsdefinitioner
Mixed Reality Toolkit använder sammansättningsdefinitionsfiler (.asmdef) för att ange beroenden mellan komponenter samt för att hjälpa Unity att minska kompileringstiden.
Vi rekommenderar att sammansättningsdefinitionsfiler skapas för alla dataleverantörer och deras redigerarkomponenter.
Med hjälp av mappstrukturen i det tidigare exemplet skulle det finnas två .asmdef-filer för ContosoCamera-dataprovidern.
Den första sammansättningsdefinitionen gäller för dataprovidern. I det här exemplet kallas det ContosoCamera och finns i exemplets ContosoCamera-mapp . Den här sammansättningsdefinitionen måste ange ett beroende för Microsoft.MixedReality.Toolkit och andra sammansättningar som den är beroende av.
Sammansättningsdefinitionen ContosoCameraEditor anger profilkontrollen och eventuell redigeringsspecifik kod. Den här filen måste finnas i rotmappen i redigeringskoden. I det här exemplet finns filen i mappen ContosoCamera\Editor . Den här sammansättningsdefinitionen innehåller en referens till ContosoCamera-sammansättningen samt:
- Microsoft.MixedReality.Toolkit
- Microsoft.MixedReality.Toolkit.Editor.Inspectors
- Microsoft.MixedReality.Toolkit.Editor.Utilities
Registrera dataprovidern
När dataleverantören har skapats kan den registreras med kamerasystemet som ska användas i programmet.
Paketering och distribution
Dataleverantörer som distribueras som komponenter från tredje part har specifik information om paketering och distribution som utvecklare föredrar. Förmodligen är den vanligaste lösningen att generera ett .unitypackage och distribuera via Unity Asset Store.
Om en dataleverantör skickas in och godkänns som en del av Microsoft Mixed Reality Toolkit-paketet paketeras och distribueras Microsoft MRTK-teamet som en del av MRTK-erbjudandena.