Membuat dan mengonfigurasi sesi AR
Dalam Unity menggunakan AR, perlu membuat dan mengonfigurasi sesi AR di scene terlebih dahulu. Artikel ini memperkenalkan beberapa metode utama untuk membuat dan mengonfigurasi sesi AR. Umumnya setelah berhasil membuat sesi, Anda dapat melihat struktur berikut di tampilan Hierarchy:

Sebelum memulai
- Pahami konsep dasar, komponen, dan alur kerja sesi melalui Pengantar ARSession.
Membuat sesi dengan konfigurasi default
Klik kanan di area kosong pada tampilan Hierarchy, lalu melalui menu EasyAR Sense > [Fungsi AR] > AR Session ([Fungsi] Preset) untuk membuat sesi yang telah dipreset. Sesi ini telah dikonfigurasi sebelumnya dengan komponen frame source dan frame filter yang sesuai untuk fungsi tersebut.
Dalam skrip, Anda dapat menggunakan ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset, ARSessionFactory.Resources) untuk membuat sesi.
Misalnya, melalui menu EasyAR Sense > Image Tracking > AR Session (Image Tracking Preset) dapat membuat sesi untuk pelacakan gambar.

Kode skrip yang sesuai adalah:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.ImageTracking);
Perhatikan bahwa saat menggunakan preset ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder dan ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder, Anda perlu menyertakan parameter sumber daya. Misalnya, kode berikut membuat sesi untuk pembangunan peta spasial renggang dan menentukan material point cloud:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial });
Jika skrip hanya berjalan di editor, Anda juga dapat menggunakan sumber daya editor default:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, ARSessionFactory.Resources.EditorDefault());
Menu EasyAR Sense > AR Session (Preset) > ** mencantumkan semua preset sesi yang dapat digunakan, yang dapat Anda rujuk.

Catatan
Beberapa sesi yang berjalan bersamaan dalam scene yang sama akan saling bertentangan, jadi hanya satu sesi yang diaktifkan (GameObject.activeInHierarchy == true) yang dapat dipertahankan dalam scene.
Menambahkan komponen
Komponen frame source dan frame filter sesi dapat ditambahkan dan dihapus sesuai kebutuhan setelah sesi dibuat.
Di tampilan Hierarchy, pilih AR Session (EasyAR) dan klik kanan, lalu melalui menu EasyAR Sense > [Fungsi AR] > ** untuk menambahkan komponen frame source dan frame filter yang sesuai untuk fungsi tersebut.
Dalam skrip, Anda dapat menggunakan ARSessionFactory.AddFrameSource<Source>(GameObject, bool) untuk menambahkan komponen frame source, atau ARSessionFactory.AddFrameFilter<Filter>(GameObject, ARSessionFactory.Resources) untuk menambahkan komponen frame filter.
Misalnya, melalui menu EasyAR Sense > Image Tracking > Frame Filter : Image Tracker dapat menambahkan pelacak gambar baru ke sesi yang saat ini dipilih.

Kode skrip yang sesuai adalah:
ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
Hati-Hati
Penambahan komponen harus selesai sebelum assemble. Setelah sesi mulai menjalankan assemble atau setelah assemble selesai, penambahan atau penghapusan komponen apa pun akan menyebabkan sesi masuk ke status Broken dan berhenti bekerja.
Perhatikan bahwa saat menambahkan SparseSpatialMapBuilderFrameFilter dan DenseSpatialMapBuilderFrameFilter, Anda perlu menyertakan parameter sumber daya. Misalnya, kode berikut membuat SparseSpatialMapBuilderFrameFilter untuk pembangunan peta spasial renggang dan menentukan material point cloud:
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial })
Jika skrip hanya berjalan di editor, Anda juga dapat menggunakan sumber daya editor default:
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, ARSessionFactory.Resources.EditorDefault());
Setelah membuat frame filter, Anda dapat menggunakan ARSessionFactory.SetupFrameFilters(List<GameObject>, ARSessionFactory.ARSessionPreset) untuk menyesuaikan parameter frame filter sesuai preset.
Misalnya, kode berikut menambahkan pelacak gambar baru ke sesi dan mengonfigurasinya dengan parameter preset ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion.
var filter = ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
ARSessionFactory.SetupFrameFilters(new() { filter }, ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion);
Saat membuat dengan menu, Anda tidak dapat menyesuaikan parameter sesuai preset, jadi Anda perlu mengonfigurasinya setelah pembuatan sesuai dengan penjelasan komponen tertentu.
Menghapus komponen
Untuk menghapus komponen dari sesi, Anda dapat memilih komponen yang sesuai di tampilan Hierarchy dan menekan tombol Delete, atau menghancurkan (Destroy) objek yang sesuai dalam skrip.
Catatan
Menonaktifkan (<xref:UnityEngine.GameObject.SetActive(false)>) GameObject komponen memiliki efek yang sama dengan menghapus komponen.
Misalnya, untuk menghapus pelacak gambar dari sesi, pilih Image Tracker dan tekan Delete.

Hati-Hati
Penghapusan komponen harus selesai sebelum assemble. Setelah sesi mulai menjalankan assemble atau setelah assemble selesai, penambahan atau penghapusan komponen apa pun akan menyebabkan sesi masuk ke status Broken dan berhenti bekerja.
Pengaruh pengurutan komponen
Urutan node frame filter anak sesi tidak berpengaruh pada eksekusi sesi.
Urutan node frame source anak sesi akan memengaruhi urutan pemilihan frame source selama proses assemble. Hanya frame source pertama yang tersedia dalam urutan transform yang akan dipilih sebagai frame source aktual sesi.
Catatan
Urutan node frame source hanya efektif jika dimodifikasi sebelum assemble. Setelah assemble, menyesuaikan urutan tidak akan memengaruhi hasil eksekusi.
[Opsional] Membuat sesi secara bebas
Jika sesi dengan konfigurasi default tidak memenuhi kebutuhan, Anda juga dapat membuat dan mengonfigurasi sesi sesuai kebutuhan.
Anda dapat menggunakan menu EasyAR Sense > AR Session (Preset) > AR Session (Empty) untuk membuat sesi kosong tanpa komponen frame source dan frame filter.
Dalam skrip, Anda dapat menggunakan ARSessionFactory.CreateSession() untuk melakukannya.
ARSessionFactory.CreateSession();
Kemudian tambahkan komponen frame source dan frame filter yang sesuai sesuai kebutuhan.
Misalnya, jika Anda perlu membuat sesi dengan fungsi pembangunan peta spasial renggang dan padat, Anda dapat menggunakan kode berikut:
var session = ARSessionFactory.CreateSession();
var group = new GameObject("Frame Source Group");
group.transform.SetParent(session.transform, false);
ARSessionFactory.AddFrameSource<XREALFrameSource>(session);
ARSessionFactory.AddFrameSource<AREngineFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<VisionOSARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<MotionTrackerFrameSource>(session);
List<GameObject> filters = new();
filters.Add(ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, resources));
filters.Add(ARSessionFactory.AddFrameFilter<DenseSpatialMapBuilderFrameFilter>(session, resources));
ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder);
ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder);
Ini akan membuat struktur sesi seperti ini:

Langkah selanjutnya
Kontrol eksekusi
- Pahami metode dan fungsi inisialisasi
- Pahami cara menentukan ketersediaan dan dukungan perangkat
- Pahami metode mengontrol eksekusi sesi
Akses komponen dan hasil
- Coba akses komponen fungsi AR
- Pahami cara mendapatkan hasil eksekusi sesi
Referensi komponen
- Referensi komponen ARSession