Kamera ayarları sağlayıcısı oluşturma

Kamera sistemi, platforma özgü kamera yapılandırmalarına yönelik destek sağlamaya yönelik genişletilebilir bir sistemdir. Yeni bir kamera yapılandırmasına yönelik destek eklemek için özel bir ayar sağlayıcısı gerekebilir.

Not

Bu örnekte kullanılan tüm kaynak kodu mrtk/Providers/UnityAR klasöründe bulunabilir.

Ad alanı ve klasör yapısı

Veri sağlayıcıları iki şekilde dağıtılabilir:

  1. Üçüncü taraf eklentileri
  2. Microsoft Mixed Reality araç seti 'nin bir parçası

Yeni veri sağlayıcılarının MRTK 'a gönderdikleri onay süreci, büyük/küçük harfe göre farklılık gösterir ve ilk teklifin anında iletilecektir. Teklifler, yeni bir özellik isteği türü sorunuoluşturularak gönderilebilir.

Üçüncü taraf eklentileri

Ad Alanı

Veri sağlayıcılarının olası ad çakışmalarını hafifletmek 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 sevk edilen 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 kullanıma hazır olması önerilir.

Örnek klasör yapısı

Contosocamera klasörü, veri sağlayıcısı uygulamasını Içerdiğinde, Düzenleyici klasörü Inspector 'ı (ve diğer Unity düzenleyicisine özgü kodu) içerir ve profiller klasörü bir veya daha fazla önceden oluşturulmuş profil komut dosyası nesnesi içerir.

MRTK gönderimi

Ad Alanı

Bir kamera ayarları sağlayıcısı karma gerçeklik araç seti deposunagönderiliyorsa , ad alanı Microsoft. mixedreality. Toolkit (ex: Microsoft. Mixedreality. Toolkit. CameraSystem) ile başlamalıdır.

Klasör yapısı

Tüm kodun MRTK/sağlayıcılar altındaki bir klasörde bulunması gerekir (örn: MRTK/Providers/UnityAR).

Kamera ayarları nesnesini tanımlama

Kamera ayarları sağlayıcısı oluşturmanın ilk adımı, uygulamalara sağlanacak olan veri türünü (örn: kafesler veya düzler) belirler.

Tüm uzamsal veri nesnelerinin arabirimini uygulaması gerekir IMixedRealityCameraSettingsProvider .

Ayarlar sağlayıcısını uygulama

Arabirim ve/veya temel sınıf devralma belirtin

Tüm kamera ayarları sağlayıcılarının, IMixedRealityCameraSettingsProvider kamera sistemi için gereken en düşük işlevi belirten arabirimini uygulaması gerekir. MRTK Foundation, BaseCameraSettingsProvider gerekli işlevselliğin varsayılan bir 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şturma bölümünde temel bir adım, MixedRealityDataProvider özniteliğini sınıfına uygulamaktır. Bu adım, kamera sistem profilinde ve ad, klasör yolu ve daha fazlasını seçtiğinizde veri sağlayıcısı için varsayılan profili ve platformu ayarlamaya izin verir.

    [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 arabirimin uygulanmasını sağlamaktır IMixedRealityDataProvider .

Not

Sınıfı BaseDataProvider aracılığıyla sınıfı, BaseService Yöntemler için boş uygulamalar sağlar IMixedRealityDataProvider . 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 ayarlar sağlayıcıları bu yöntemlerin hepsi için uygulama gerektirmez. Kesinlikle önerilir Destroy() ve Initialize() en azından uygulanmalıdır.

Veri sağlayıcısı mantığını uygulama

Bir sonraki adım, uygulama tarafından ayarları sağlayıcının mantığını eklemektir IMixedRealityCameraSettingsProvider . Veri sağlayıcısının bu bölümü, genellikle kamera yapılandırmasına özgüdür.

Profil ve Inspector oluşturma

Karma Gerçeklik araç setinde, veri sağlayıcıları profillerkullanılarak yapılandırılır.

Profili tanımlama

Profil içerikleri, geliştirici seçilebilir yapılandırma seçeneklerini yansıtmalıdır. Her arabirimde tanımlanan tüm kullanıcı yapılandırılabilir özellikleri, profille de 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Özniteliği, müşterilerin CreateAssetMenu>>>>>> Oluştur menüsünü kullanarak bir profil örneği oluşturmasını sağlamak için profil sınıfına uygulanabilir.

Inspector 'ı uygulama

Profil denetçiler, profil içeriklerini yapılandırmak ve görüntülemek için kullanıcı arabirimidir. Her profil denetçisi, sınıfını genişletmelidir BaseMixedRealityToolkitConfigurationProfileInspector .

CustomEditorÖznitelik, Unity 'nin Inspector 'ın uyguladığı varlık türünü bilgilendirir.

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

Derleme tanımları oluştur

Karma Gerçeklik araç seti, bileşenler arasındaki bağımlılıkları belirtmek ve derleme süresini azaltmak için Unity 'ye yardımcı olmak üzere derleme tanımı (. asmdef) dosyalarını kullanır.

Tüm veri sağlayıcıları ve bunların düzenleyici bileşenleri için derleme tanımı dosyalarının oluşturulması önerilir.

Önceki örnekte yer alan klasör yapısını kullanarak contosocamera veri sağlayıcısı için iki. asmdef dosyası vardır.

İlk derleme tanımı veri sağlayıcısına yöneliktir. Bu örnekte, ContosoCamera olarak adlandırılacaktır ve örneğin contosocamera klasöründe yer alacak. Bu derleme tanımı Microsoft. MixedReality. Toolkit ve bağımlı olduğu diğer derlemeler için bir bağımlılık belirtmelidir.

ContosoCameraEditor derleme tanımı, profil denetçisini ve 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 yer alır. Bu derleme tanımı, ContosoCamera derlemesine ve şu şekilde bir başvuru içerecektir:

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

Veri sağlayıcıyı kaydetme

Oluşturulduktan sonra veri sağlayıcısı, uygulamada kullanılacak kamera sistemine kaydedilebilir.

Kamera ayarları sağlayıcısını seçme

Paketleme ve dağıtım

Üçüncü taraf bileşenleri olarak dağıtılan veri sağlayıcılarının, geliştiriciye ve dağıtıma yönelik belirli ayrıntıları, geliştirici tercihine göre yapılır. Büyük olasılıkla, en yaygın çözüm bir. unitypackage oluşturmak ve Unity varlık deposu aracılığıyla dağıtmanız olacaktır.

Microsoft karma gerçeklik araç seti paketinin bir parçası olarak bir veri sağlayıcısı gönderilip kabul edilirse, Microsoft MRTK ekibi, bunu MRTK tekliflerinin bir parçası olarak paketleyip dağıtacaktır.

Ayrıca bkz.