Bagikan melalui


Membuat penyedia pengaturan kamera — MRTK2

Sistem Kamera adalah sistem yang dapat diperluas untuk memberikan dukungan untuk konfigurasi kamera tertentu 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 layanan 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 dikirimkan dengan membuat masalah jenis Permintaan Fitur baru.

Add-on pihak ketiga

Ruang nama

Penyedia data diharuskan memiliki namespace layanan 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 ditata 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 spesifik 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 terletak 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 mengimplementasikan 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 khusus 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 menjadi konfigurasi kamera khusus.

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 memperpanjang 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 assembly definition (.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 rakitan 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