Membuat penyedia pengaturan kamera — MRTK2

Sistem Kamera adalah sistem yang dapat diperluas untuk memberikan dukungan untuk konfigurasi kamera khusus platform. Untuk menambahkan dukungan untuk konfigurasi kamera baru, penyedia pengaturan kustom mungkin diperlukan.

Catatan

Kode sumber lengkap yang digunakan dalam contoh ini dapat ditemukan di folder MRTK/Providers/UnityAR .

Struktur namespace dan folder

Penyedia data dapat didistribusikan dengan salah satu dari dua cara:

  1. Add-on pihak ketiga
  2. Bagian dari Microsoft Mixed Reality Toolkit

Proses persetujuan untuk pengiriman penyedia data baru ke MRTK akan bervariasi berdasarkan kasus per kasus dan akan dikomunikasikan pada saat proposal awal. Proposal dapat diajukan dengan membuat masalah jenis Permintaan Fitur baru.

Add-on pihak ketiga

Ruang nama

Penyedia data diharuskan memiliki namespace untuk mengurangi potensi tabrakan nama. Disarankan agar namespace menyertakan komponen berikut.

  • Nama perusahaan yang menghasilkan add-on
  • Area fitur

Misalnya, penyedia pengaturan kamera yang dibuat dan dikirim oleh perusahaan Contoso mungkin adalah "Contoso.MixedReality.Toolkit.Camera".

Struktur folder

Disarankan agar kode sumber untuk penyedia data diletakkan dalam hierarki folder seperti yang ditunjukkan pada gambar berikut.

Contoh struktur folder

Di mana folder ContosoCamera berisi implementasi penyedia data, folder Editor berisi pemeriksa (dan kode khusus editor Unity lainnya), dan folder Profil berisi satu atau beberapa objek yang dapat ditulis profil yang telah dibuat sebelumnya.

Pengiriman MRTK

Ruang nama

Jika penyedia pengaturan kamera dikirimkan ke repositori toolkit Mixed Reality, namespace harus dimulai dengan Microsoft.MixedReality.Toolkit (mis: Microsoft.MixedReality.Toolkit.CameraSystem).

Struktur folder

Semua kode harus berada di folder di bawah MRTK/Providers (mis: MRTK/Providers/UnityAR).

Menentukan objek pengaturan kamera

Langkah pertama dalam membuat penyedia pengaturan kamera adalah menentukan jenis data (misalnya: jala atau bidang) yang akan disediakan untuk aplikasi.

Semua objek data spasial harus mengimplementasikan IMixedRealityCameraSettingsProvider antarmuka.

Menerapkan penyedia pengaturan

Tentukan pewarisan kelas antarmuka dan/atau dasar

Semua penyedia pengaturan kamera harus menerapkan IMixedRealityCameraSettingsProvider antarmuka , yang menentukan fungsionalitas minimum yang diperlukan oleh sistem kamera. Fondasi MRTK mencakup BaseCameraSettingsProvider kelas yang menyediakan implementasi default dari fungsionalitas yang diperlukan.

namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
    public class UnityARCameraSettings : BaseCameraSettingsProvider
    { }
}

Menerapkan atribut MixedRealityDataProvider

Langkah utama dalam membuat penyedia pengaturan kamera adalah menerapkan MixedRealityDataProvider atribut ke kelas . Langkah ini memungkinkan pengaturan profil dan platform default untuk penyedia data, ketika dipilih di profil Sistem Kamera serta nama, jalur folder, dan banyak lagi.

    [MixedRealityDataProvider(
        typeof(IMixedRealityCameraSystem),
        SupportedPlatforms.Android | SupportedPlatforms.IOS,
        "Unity AR Foundation Camera Settings",
        "UnityAR/Profiles/DefaultUnityARCameraSettingsProfile.asset",
        "MixedRealityToolkit.Providers")]
    public class UnityARCameraSettings : BaseCameraSettingsProvider
    { }

Menerapkan metode IMixedRealityDataProvider

Setelah kelas ditentukan, langkah selanjutnya adalah menyediakan implementasi IMixedRealityDataProvider antarmuka.

Catatan

Kelas BaseDataProvider , melalui BaseService kelas , menyediakan implementasi kosong untuk IMixedRealityDataProvider metode. Detail metode ini umumnya spesifik untuk penyedia data.

Metode yang harus diimplementasikan oleh penyedia data adalah:

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

Catatan

Tidak semua penyedia pengaturan akan memerlukan implementasi untuk semua metode ini. Sangat disarankan agar Destroy() dan Initialize() diimplementasikan minimal.

Menerapkan logika penyedia data

Langkah selanjutnya adalah menambahkan logika penyedia pengaturan dengan menerapkan IMixedRealityCameraSettingsProvider. Bagian penyedia data ini biasanya akan spesifik untuk konfigurasi kamera.

Membuat profil dan inspektur

Di Mixed Reality Toolkit, penyedia data dikonfigurasi menggunakan profil.

Tentukan profil

Konten profil harus mencerminkan opsi konfigurasi yang dapat dipilih pengembang. Setiap properti yang dapat dikonfigurasi pengguna yang ditentukan di setiap antarmuka juga harus dimuat dengan profil.

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;
    }
}

Atribut CreateAssetMenu dapat diterapkan ke kelas profil untuk memungkinkan pelanggan membuat instans profil menggunakan menu Buat>Aset> Mixed RealityProfilToolkit>.

Mengimplementasikan inspektur

Pemeriksa profil adalah antarmuka pengguna untuk mengonfigurasi dan melihat konten profil. Setiap pemeriksa profil harus memperluas BaseMixedRealityToolkitConfigurationProfileInspector kelas.

Atribut CustomEditor ini memberi tahu Unity jenis aset yang diterapkan inspektur.

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

Membuat definisi perakitan

Mixed Reality Toolkit menggunakan file definisi assembly (.asmdef) untuk menentukan dependensi antar komponen serta untuk membantu Unity dalam mengurangi waktu kompilasi.

Disarankan agar file definisi perakitan dibuat untuk semua penyedia data dan komponen editornya.

Menggunakan struktur folder dalam contoh sebelumnya, akan ada dua file .asmdef untuk penyedia data ContosoCamera.

Definisi perakitan pertama adalah untuk penyedia data. Untuk contoh ini, itu akan disebut ContosoCamera dan akan terletak di folder ContosoCamera contoh. Definisi perakitan ini harus menentukan dependensi pada Microsoft.MixedReality.Toolkit dan rakitan lainnya yang bergantung padanya.

Definisi rakitan ContosoCameraEditor akan menentukan pemeriksa profil dan kode khusus editor apa pun. File ini harus terletak di folder akar kode editor. Dalam contoh ini, file akan terletak di folder ContosoCamera\Editor . Definisi perakitan ini akan berisi referensi ke perakitan ContosoCamera serta:

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

Mendaftarkan penyedia data

Setelah dibuat, penyedia data dapat didaftarkan ke sistem Kamera yang akan digunakan dalam aplikasi.

Memilih penyedia pengaturan kamera

Pengemasan dan distribusi

Penyedia data yang didistribusikan sebagai komponen pihak ketiga memiliki detail spesifik kemasan dan distribusi yang tersisa ke preferensi pengembang. Kemungkinan, solusi yang paling umum adalah menghasilkan .unitypackage dan mendistribusikan melalui Unity Asset Store.

Jika penyedia data dikirimkan dan diterima sebagai bagian dari paket Microsoft Mixed Reality Toolkit, tim MICROSOFT MRTK akan mengemas dan mendistribusikannya sebagai bagian dari penawaran MRTK.

Lihat juga