Sumber data frame kamera dan input di Unity —— Sumber frame (Frame Source)
Sumber frame adalah penyedia data frame input di Unity. Artikel ini memperkenalkan konsep dasar, jenis, dan metode pemilihan saat runtime untuk sumber frame.
Sebelum memulai
- Pahami konsep dasar, komposisi, dan alur kerja AR Session.
- Pahami konsep dasar seperti kamera, frame input.
Apa itu sumber frame
Sumber frame (FrameSource) adalah penyedia frame input (InputFrame), yang mengabstraksikan kamera dan perangkat atau fungsi lain yang menyediakan data frame input.
Diagram berikut menunjukkan posisi sumber frame dalam session:
flowchart LR
F[Frame Source]
A((Input Frame))
B[Session]
C([Camera])
O([Origin])
T([Target])
F --> A
A --> B
B -. transform .-> C
B -. transform .-> O
B -. transform .-> T
style F fill:#6e6ce6,stroke:#333,color:#fff
Sumber frame mungkin hanya menyediakan data untuk fungsi AR hilir, atau mungkin mengimplementasikan beberapa fungsi AR itu sendiri, seperti pelacakan gerakan. Beberapa sumber frame menyediakan antarmuka kontrol untuk perangkat kamera, memungkinkan pengguna memilih parameter kamera seperti resolusi, mode fokus, dll.
Jenis sumber frame
Dibedakan berdasarkan paket Unity yang menyediakannya, sumber frame dapat dibagi menjadi dua kategori utama:
- Sumber frame bawaan: Disediakan oleh paket plugin EasyAR Sense Unity, biasanya mendukung sebagian besar skenario penggunaan umum dan beberapa headset.
- Sumber frame eksternal: Disediakan oleh paket ekstensi plugin EasyAR Sense Unity, biasanya digunakan untuk mendukung perangkat headset tertentu. Seringkali, sumber frame eksternal disediakan oleh produsen headset atau pengembang pihak ketiga.
Berbeda dengan sumber frame eksternal, kamera kustom tidak selalu disediakan secara eksternal; beberapa sumber frame bawaan juga termasuk kamera kustom.
Sumber frame dapat menyediakan data gerakan dengan derajat kebebasan berbeda: 0DoF, 3DoF, 5DoF, dan 6DoF. Sumber frame yang sama mungkin menyediakan data gerakan dengan derajat kebebasan berbeda dalam status kerja berbeda.
Tabel berikut mencantumkan sumber frame yang disediakan oleh EasyAR:
| Nama | Bawaan | Kamera kustom | Data gerakan | Deskripsi |
|---|---|---|---|---|
| CameraDeviceFrameSource | Ya | Tidak | Tidak (0DoF) | Kamera biasa, mendukung depan/belakang dan PC |
| EditorCameraDeviceFrameSource | Ya | Tidak | Tidak (0DoF) | Kamera biasa, hanya untuk debugging di editor |
| FramePlayer | Ya | Tidak | Tergantung file | Memutar file EIF, simulasi runtime |
| ThreeDofCameraDeviceFrameSource | Ya | Tidak | 3DoF | Menyediakan kemampuan pelacakan 3DoF |
| InertialCameraDeviceFrameSource | Ya | Tidak | 5DoF | Menyediakan navigasi inersia |
| MotionTrackerFrameSource | Ya | Tidak | 6DoF | Menyediakan pelacakan gerakan yang diimplementasikan EasyAR |
| ARCoreFrameSource | Ya | Tidak | 6DoF | Menyediakan pelacakan gerakan ARCore |
| ARKitFrameSource | Ya | Tidak | 6DoF | Menyediakan pelacakan gerakan ARKit |
| AREngineFrameSource | Ya | Ya | 6DoF | Menyediakan pelacakan gerakan AR Engine |
| VisionOSARKitFrameSource | Ya | Ya | 6DoF | Menyediakan pelacakan gerakan VisionOS ARKit 1 |
| XREALFrameSource | Ya | Ya | 6DoF | Menyediakan pelacakan gerakan perangkat XREAL 1 |
| ARCoreARFoundationFrameSource | Ya | Ya | 6DoF | Menyediakan pelacakan gerakan ARFoundation untuk ARCore |
| ARKitARFoundationFrameSource | Ya | Ya | 6DoF | Menyediakan pelacakan gerakan ARFoundation untuk ARKit |
| PicoFrameSource | Tidak | Ya | 6DoF | Menyediakan pelacakan gerakan perangkat Pico 1 |
| RokidFrameSource | Tidak | Ya | 6DoF | Menyediakan pelacakan gerakan perangkat Rokid 1 |
Pemilihan sumber frame saat runtime
Struktur hierarki scene session berisi satu atau lebih komponen sumber frame. Saat session berjalan, tidak semua komponen sumber frame akan digunakan.
Cuplikan layar berikut menunjukkan struktur hierarki scene dengan satu komponen sumber frame:
![]()
Cuplikan layar berikut menunjukkan struktur hierarki scene dengan beberapa komponen sumber frame:

Setiap sumber data frame memiliki fungsi yang berbeda, yang sekaligus menentukan skenario penggunaan dan perangkat yang sesuai. Saat perakitan sesi, satu dan hanya satu dari komponen ini akan dipilih sebagai sumber data frame untuk sesi tersebut.
Properti AssembleOptions.FrameSourceSelection mendefinisikan metode pemilihan sumber data frame saat sesi berjalan:
| Nama | Metode |
|---|---|
| Auto (default) | Pilih secara otomatis, memilih node anak pertama yang tersedia dan aktif sesuai urutan transform. |
| Manual | Tentukan secara manual. Hanya dapat menentukan node anak sesi. |
| FramePlayer | Gunakan FramePlayer. |
Kiat
Urutan transform objek Unity dapat dinilai menggunakan Transform.GetSiblingIndex(), atau dilihat dari urutan objek di tampilan Hierarchy, tetapi opsi berikut harus dinonaktifkan (secara default dinonaktifkan): Edit > Preferences > General > Enable Alphanumeric Sorting.
Selama proses perakitan sesi, sumber data frame dipilih setelah melalui langkah-langkah berikut:
- Sesi melakukan iterasi melalui node anaknya, mengumpulkan semua komponen sumber data frame yang aktif sesuai urutan transform.
- Menyaring daftar kandidat berdasarkan strategi pemilihan sumber (AssembleOptions.FrameSource) di AssembleOptions:
- Auto (default): Mempertahankan semua kandidat.
- Manual: Hanya mempertahankan sumber data frame yang ditentukan secara manual.
- FramePlayer: Mengganti daftar kandidat dengan FramePlayer.
- Menyaring kembali daftar kandidat, menghapus komponen berikut:
- Komponen yang dinonaktifkan oleh komponen itu sendiri.
- Semua komponen kamera khusus saat kamera khusus dinonaktifkan (AssembleOptions.EnableCustomCamera bernilai false).
- (Platform Android) Jika pengaturan waktu tunggu AssembleOptions.DeviceList lebih besar dari 0, dan daftar kandidat berisi MotionTrackerFrameSource, ARCoreFrameSource, atau AREngineFrameSource, akan mencoba mengunduh daftar dukungan perangkat terbaru yang sesuai. Setelah pembaruan unduhan selesai, ketersediaan sumber data frame ini mungkin berubah. Setelah unduhan selesai atau waktu tunggu habis, lanjutkan ke langkah berikutnya.
- Memeriksa ketersediaan komponen kandidat yang tersisa secara berurutan (memanggil FrameSource.CheckAvailability() dan mengakses FrameSource.IsAvailable).
- Memilih sumber data frame pertama yang hasil pemeriksaannya tersedia.
Di sini, kondisi penonaktifan komponen itu sendiri didefinisikan secara internal oleh komponen, umumnya dalam situasi berikut:
- Berjalan di sistem yang tidak didukung, misalnya AREngineFrameSource pada sistem non-Android akan dinonaktifkan.
- SDK pihak ketiga yang diperlukan tidak terinstal, misalnya XREALFrameSource akan dinonaktifkan jika SDK XREAL tidak terinstal.
- Kondisi konfigurasi tidak terpenuhi, misalnya MotionTrackerFrameSource akan dinonaktifkan jika MotionTrackerCameraDeviceQualityLevel perangkat lebih rendah dari MotionTrackerFrameSource.DeviceQualityLevel.
Jika pada akhirnya tidak ada sumber data frame yang terpilih, sesi akan masuk ke status Broken, dan dalam laporan sesi, nilai bidang BrokenReason adalah NoAvailabileFrameSource.
Catatan
Setelah pembaruan daftar perangkat selesai, jika daftar perangkat berubah, ketersediaan sumber data frame juga mungkin berubah. Silakan merujuk ke dukungan perangkat dan laporan sesi untuk memahami perilaku sesi saat ini.
Langkah selanjutnya
- Coba menambahkan grup sumber frame di scene
Topik terkait
- Dukungan perangkat dan laporan session
- Dukungan headset EasyAR
- Buat sumber frame eksternal untuk menggunakan kamera kustom
-
Dukungan perangkat dapat merujuk ke Dukungan headset EasyAR.↩↩↩↩