Table of Contents

Membuat dan mengonfigurasi AR session

Untuk menggunakan AR di Unity, pertama-tama Anda perlu membuat dan mengonfigurasi AR session di scene. Artikel ini menjelaskan beberapa cara utama untuk membuat dan mengonfigurasi AR session. Umumnya, setelah berhasil dibuat, Anda akan melihat struktur berikut di tampilan Hierarchy:

alt text

Sebelum mulai

Membuat session dengan konfigurasi default

Di tampilan Hierarchy, klik kanan pada area kosong, lalu gunakan menu EasyAR Sense > [ AR fungsi ] > AR Session ([ fungsi ] Preset) untuk membuat session yang sudah dipra-konfigurasi. Session sudah berisi komponen frame source dan frame filter yang sesuai untuk fungsi tersebut.

Di kode, Anda dapat menggunakan ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset, ARSessionFactory.Resources) untuk membuat session.

Misalnya, melalui EasyAR Sense > Image Tracking > AR Session (Image Tracking Preset) Anda dapat membuat session untuk image tracking.

alt text

Kode yang sesuai adalah sebagai berikut:

ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.ImageTracking);

Perlu diperhatikan bahwa saat menggunakan preset ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder dan ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder, Anda juga perlu meneruskan parameter resource. Misalnya, kode berikut membuat session untuk sparse spatial mapping dan menentukan material point cloud:

ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial });

Jika skrip hanya berjalan di editor, Anda juga dapat memakai resource default editor:

ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, ARSessionFactory.Resources.EditorDefault());

Menu EasyAR Sense > AR Session (Preset) > ** menampilkan semua preset session yang tersedia dan dapat dijadikan referensi.

alt text

Catatan

Beberapa session yang berjalan bersamaan di scene yang sama akan saling konflik, jadi di scene hanya boleh ada satu session yang aktif (GameObject.activeInHierarchy == true) sebagai maksimum.

Menambahkan komponen

Komponen frame source dan frame filter pada session dapat ditambahkan atau dihapus sesuai kebutuhan setelah session dibuat.

Di tampilan Hierarchy, pilih AR Session (EasyAR) lalu klik kanan; kemudian melalui menu EasyAR Sense > [ AR fungsi ] > ** Anda dapat menambahkan komponen frame source dan frame filter yang sesuai untuk fungsi tersebut.

Di kode, 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 EasyAR Sense > Image Tracking > Frame Filter : Image Tracker Anda dapat menambahkan image tracker baru ke session yang dipilih.

alt text

Kode yang sesuai adalah sebagai berikut:

ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
Hati-Hati

Penambahan komponen harus selesai sebelum assemble. Setelah session mulai menjalankan assemble dan setelah assemble selesai, setiap penambahan atau penghapusan komponen akan membuat session masuk ke status Broken dan berhenti bekerja.

Perlu diperhatikan bahwa saat menambahkan SparseSpatialMapBuilderFrameFilter dan DenseSpatialMapBuilderFrameFilter, Anda juga perlu meneruskan parameter resource. Misalnya, kode berikut membuat SparseSpatialMapBuilderFrameFilter untuk sparse spatial mapping dan menentukan material point cloud:

ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial })

Jika skrip hanya berjalan di editor, Anda juga dapat memakai resource default editor:

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 image tracker baru ke session dan mengonfigurasinya dengan parameter preset ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion.

var filter = ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
ARSessionFactory.SetupFrameFilters(new() { filter }, ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion);

Saat dibuat lewat menu, parameter tidak dapat disesuaikan sesuai preset, jadi setelah komponen dibuat Anda perlu mengonfigurasinya sesuai penjelasan komponen masing-masing.

Menghapus komponen

Untuk menghapus komponen dari session, Anda dapat memilih komponen terkait di tampilan Hierarchy dan menekan Delete, atau menghancurkan (Destroy) objek terkait dari skrip.

Catatan

Menonaktifkan GameObject dari komponen dengan SetActive(false) memiliki efek yang sama seperti menghapusnya.

Misalnya, untuk menghapus image tracker dari session, Anda dapat memilih Image Tracker dan menekan Delete.

alt text

Hati-Hati

Penghapusan komponen harus selesai sebelum assemble. Setelah session mulai menjalankan assemble dan setelah assemble selesai, setiap penambahan atau penghapusan komponen akan membuat session masuk ke status Broken dan berhenti bekerja.

Pengaruh urutan komponen

Urutan node anak frame filter pada session tidak memengaruhi eksekusi session.

Urutan node anak frame source memengaruhi urutan pemilihan frame source selama proses assemble. Hanya frame source pertama yang tersedia menurut urutan transform yang akan dipilih sebagai frame source aktual session.

Catatan

Urutan node frame source hanya berlaku jika diubah sebelum assemble. Setelah assemble, mengubah urutan tidak memengaruhi hasil eksekusi.

[Opsional] Membuat session secara bebas

Jika session dengan konfigurasi default tidak memenuhi kebutuhan Anda, Anda juga dapat membuat dan mengonfigurasi session secara bebas sesuai kebutuhan.

Anda dapat menggunakan menu EasyAR Sense > AR Session (Preset) > AR Session (Empty) untuk membuat session kosong tanpa komponen frame source maupun frame filter.

Di kode, Anda dapat menggunakan ARSessionFactory.CreateSession() untuk melakukannya.

ARSessionFactory.CreateSession();

Setelah itu tambahkan komponen frame source dan frame filter yang sesuai dengan kebutuhan nyata.

Misalnya, jika Anda ingin membuat session yang mencakup sparse spatial mapping dan dense spatial mapping, 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 session seperti berikut:

alt text

Langkah berikutnya

Kontrol eksekusi

Akses komponen dan hasil

Referensi komponen