Kamera ayarları sağlayıcısı oluşturma — MRTK2
Kamera sistemi, platforma özgü kamera yapılandırmaları için destek sağlamaya yönelik genişletilebilir bir sistemdir. Yeni kamera yapılandırması için destek eklemek için özel ayarlar sağlayıcısı gerekebilir.
Not
Bu örnekte kullanılan kaynak kodunun tamamı MRTK/Providers/UnityAR klasöründe bulunabilir.
Ad alanı ve klasör yapısı
Veri sağlayıcıları iki yoldan biriyle dağıtılabilir:
- Üçüncü taraf eklentileri
- Microsoft Karma Gerçeklik Araç Seti'nin bir parçası
Yeni veri sağlayıcılarının MRTK'ye gönderilmesine ilişkin onay süreci, servis talebine göre değişiklik gösterir ve ilk teklif sırasında iletilecektir. Teklifler, yeni bir Özellik İsteği türü sorunu oluşturularak gönderilebilir.
Üçüncü taraf eklentileri
Ad alanı
Veri sağlayıcılarının olası ad çakışmalarını azaltmak için bir ad alanına sahip olması gerekir. Ad alanının aşağıdaki bileşenleri içermesi önerilir.
- Eklentiyi üreten şirket adı
- Özellik alanı
Örneğin, Contoso şirketi tarafından oluşturulan ve gönderilen bir kamera ayarları sağlayıcısı "Contoso.MixedReality.Toolkit.Camera" olabilir.
Klasör yapısı
Veri sağlayıcılarının kaynak kodunun aşağıdaki görüntüde gösterildiği gibi bir klasör hiyerarşisinde düzenlenmesi önerilir.
ContosoCamera klasörü veri sağlayıcısının uygulamasını içerdiğinde, Düzenleyici klasörü denetçiyi (ve unity düzenleyicisine özgü diğer kodları) içerir ve Profiles klasörü bir veya daha fazla önceden oluşturulmuş profil betik yazılabilir nesnesi içerir.
MRTK gönderimi
Ad alanı
Karma Gerçeklik Toolkit deposuna bir kamera ayarları sağlayıcısı gönderiliyorsa, ad alanı Microsoft.MixedReality.Toolkit (örneğin: Microsoft.MixedReality.Toolkit.CameraSystem) ile başlamalıdır.
Klasör yapısı
Tüm kodLAR MRTK/Sağlayıcılar altındaki bir klasörde bulunmalıdır (örneğin: MRTK/Providers/UnityAR).
Kamera ayarları nesnesini tanımlama
Kamera ayarları sağlayıcısı oluşturmanın ilk adımı, uygulamalara sağlayacağı veri türünü (ör. kafesler veya düzlemler) belirlemektir.
Tüm uzamsal veri nesneleri arabirimini IMixedRealityCameraSettingsProvider
uygulamalıdır.
Ayarlar sağlayıcısını uygulama
Arabirim ve/veya temel sınıf devralmayı belirtme
Tüm kamera ayarları sağlayıcıları, IMixedRealityCameraSettingsProvider
kamera sisteminin gerektirdiği minimum işlevselliği belirten arabirimi uygulamalıdır. MRTK temeli, gerekli işlevselliğin BaseCameraSettingsProvider
varsayılan uygulamasını sağlayan sınıfını içerir.
namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
public class UnityARCameraSettings : BaseCameraSettingsProvider
{ }
}
MixedRealityDataProvider özniteliğini uygulama
Kamera ayarları sağlayıcısı oluşturmanın önemli bir adımı özniteliğini MixedRealityDataProvider
sınıfa uygulamaktır. Bu adım, Kamera Sistemi profilinde ve ad, klasör yolu ve daha fazlası seçildiğinde veri sağlayıcısı için varsayılan profil ve platformların ayarlanmasını sağlar.
[MixedRealityDataProvider(
typeof(IMixedRealityCameraSystem),
SupportedPlatforms.Android | SupportedPlatforms.IOS,
"Unity AR Foundation Camera Settings",
"UnityAR/Profiles/DefaultUnityARCameraSettingsProfile.asset",
"MixedRealityToolkit.Providers")]
public class UnityARCameraSettings : BaseCameraSettingsProvider
{ }
IMixedRealityDataProvider yöntemlerini uygulama
Sınıf tanımlandıktan sonra, bir sonraki adım arabiriminin IMixedRealityDataProvider
uygulanmasını sağlamaktır.
Not
BaseDataProvider
sınıfı aracılığıylaBaseService
, yöntemler için IMixedRealityDataProvider
boş uygulamalar sağlar. Bu yöntemlerin ayrıntıları genellikle veri sağlayıcısına özeldir.
Veri sağlayıcısı tarafından uygulanması gereken yöntemler şunlardır:
Destroy()
Disable()
Enable()
Initialize()
Reset()
Update()
Not
Tüm ayar sağlayıcıları bu yöntemlerin tümü için uygulama gerektirmez. En azından uygulanması ve Initialize()
uygulanması kesinlikle önerilirDestroy()
.
Veri sağlayıcısı mantığını uygulama
Sonraki adım, uygulayarak ayarlar sağlayıcısının mantığını eklemektir IMixedRealityCameraSettingsProvider
. Veri sağlayıcısının bu bölümü genellikle kamera yapılandırmasına özgü olur.
Profil ve denetçi oluşturma
Karma Gerçeklik Araç Seti'nde veri sağlayıcıları profiller kullanılarak yapılandırılır.
Profili tanımlama
Profil içeriği, geliştirici tarafından seçilebilen yapılandırma seçeneklerini yansıtmalıdır. Her arabirimde tanımlanan tüm kullanıcı tarafından yapılandırılabilir özellikler de profille birlikte bulunmalıdır.
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;
}
}
CreateAssetMenu
Öznitelik, müşterilerinVarlık>Oluştur>Karma Gerçeklik Araç Seti> Profilleri menüsünü kullanarak profil örneği oluşturmasını sağlamak içinprofil sınıfına uygulanabilir.
Denetçiyi uygulama
Profil denetçileri, profil içeriğini yapılandırmaya ve görüntülemeye yönelik kullanıcı arabirimidir. Her profil denetçisi sınıfını BaseMixedRealityToolkitConfigurationProfileInspector
genişletmelidir.
özniteliği Unity'ye CustomEditor
denetçinin geçerli olduğu varlığın türünü bildirir.
namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
[CustomEditor(typeof(UnityARCameraSettingsProfile))]
public class UnityARCameraSettingsProfileInspector : BaseMixedRealityToolkitConfigurationProfileInspector
{ }
}
Derleme tanımları oluşturma
Karma Gerçeklik Toolkit, bileşenler arasındaki bağımlılıkları belirtmek ve derleme süresini kısaltmak için Unity'ye yardımcı olmak için derleme tanımı (.asmdef) dosyalarını kullanır.
Tüm veri sağlayıcıları ve düzenleyici bileşenleri için derleme tanım dosyalarının oluşturulması önerilir.
Önceki örnekteki klasör yapısı kullanıldığında ContosoCamera veri sağlayıcısı için iki .asmdef dosyası olacaktır.
İlk derleme tanımı veri sağlayıcısına yöneliktir. Bu örnekte ContosoCamera olarak adlandırılır ve örneğin ContosoCamera klasöründe bulunur. Bu derleme tanımı, Microsoft.MixedReality.Toolkit'e ve bağımlı olduğu diğer derlemelere bağımlılığı belirtmelidir.
ContosoCameraEditor derleme tanımı, profil denetçisini ve herhangi bir düzenleyiciye özgü kodu belirtir. Bu dosya düzenleyici kodunun kök klasöründe bulunmalıdır. Bu örnekte, dosya ContosoCamera\Editor klasöründe bulunur. Bu derleme tanımı, ContosoCamera derlemesine bir başvuru da içerir:
- Microsoft.MixedReality.Toolkit
- Microsoft.MixedReality.Toolkit.Editor.Inspectors
- Microsoft.MixedReality.Toolkit.Editor.Utilities
Veri sağlayıcısını kaydetme
Veri sağlayıcısı oluşturulduktan sonra uygulamada kullanılacak Kamera sistemine kaydedilebilir.
Paketleme ve dağıtım
Üçüncü taraf bileşenler olarak dağıtılan veri sağlayıcıları, geliştiricinin tercihine bırakılan paketleme ve dağıtımla ilgili belirli ayrıntılara sahiptir. Büyük olasılıkla en yaygın çözüm bir .unitypackage oluşturmak ve Unity Varlık Deposu aracılığıyla dağıtmaktır.
Microsoft Karma Gerçeklik Toolkit paketinin bir parçası olarak bir veri sağlayıcısı gönderilir ve kabul edilirse, Microsoft MRTK ekibi bunu MRTK tekliflerinin bir parçası olarak paketleyip dağıtır.