Table of Contents

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:

alt text

Sebelum memulai

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.

alt text

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.

alt text

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.

alt text

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.

alt text

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:

alt text

Langkah selanjutnya

Kontrol eksekusi

Akses komponen dan hasil

Referensi komponen