Memahami lingkungan pengguna di AR Foundation Unity

Pelajari cara menggunakan Scene Semantics API di aplikasi Anda sendiri.

Scene Semantics API memungkinkan developer memahami scene di sekitar pengguna, dengan memberikan informasi semantik real-time berbasis model ML. Dengan gambar pemandangan luar ruangan, API akan menampilkan label untuk setiap piksel di seluruh kumpulan class semantik yang berguna, seperti langit, bangunan, pohon, jalan, trotoar, kendaraan, orang, dan lainnya. Selain label piksel, Scene Semantics API juga menawarkan nilai keyakinan untuk setiap label piksel dan cara yang mudah digunakan untuk membuat kueri prevalensi label tertentu di scene luar ruangan.

Dari kiri ke kanan, contoh gambar input, gambar semantik label piksel, dan gambar keyakinan yang sesuai:

Contoh gambar input, gambar semantik, dan gambar keyakinan semantik.

Prasyarat

Pastikan Anda memahami konsep AR dasar dan cara mengonfigurasi sesi ARCore sebelum melanjutkan.

Mengaktifkan Scene Semantics

Dalam sesi ARCore baru, periksa apakah perangkat pengguna mendukung Scene Semantics API. Tidak semua perangkat yang kompatibel dengan ARCore mendukung Scene Semantics API karena keterbatasan daya pemrosesan.

Untuk menghemat resource, Scene Semantics dinonaktifkan secara default di ARCore. Aktifkan mode semantik agar aplikasi Anda menggunakan Scene Semantics API.

Di ARCoreExtensionsConfig, setel Mode Semantik ke Aktif.

Mode semantik ditetapkan ke Aktif.

Jika menggunakan iOS, Semantik juga harus diaktifkan di setelan project:

  1. Buka Edit > Project Settings > XR Plug-In Management > ARCore Extensions.
  2. Di bagian Fitur Opsional, pilih Semantik di iOS.

Semantik di iOS Diaktifkan di Fitur Opsional.

Mendapatkan gambar semantik

Setelah Semantik Scene diaktifkan, gambar semantik dapat diambil. Gambar semantik adalah gambar TextureFormat.R8, dengan setiap piksel sesuai dengan label semantik yang ditentukan oleh SemanticLabel.

Gunakan ArSemanticManager.TryGetSemanticTexture() untuk mendapatkan gambar semantik:

if (semanticManager.TryGetSemanticTexture(out Texture2D semanticImage))
{
    using (semanticImage)
    {
        // Use the semantic image here.
    }
}

Gambar semantik output akan tersedia setelah sekitar 1-3 frame dari awal sesi, bergantung pada perangkat.

Mendapatkan gambar keyakinan

Selain gambar semantik, yang memberikan label untuk setiap piksel, API juga memberikan gambar keyakinan dari nilai keyakinan piksel yang sesuai. Gambar keyakinan adalah gambar TextureFormat.Alpha8, dengan setiap piksel sesuai dengan nilai dalam rentang [0, 255], yang sesuai dengan probabilitas yang terkait dengan label semantik untuk setiap piksel.

Gunakan ArSemanticManager.TryGetSemanticConfidenceTexture() untuk mendapatkan gambar keyakinan semantik:

if (semanticManager.TryGetSemanticConfidenceTexture(out Texture2D semanticConfidenceImage))
{
    using (semanticConfidenceImage)
    {
        // Use the semantic confidence image here.
    }
}

Gambar keyakinan output akan tersedia setelah sekitar 1-3 frame dari awal sesi, bergantung pada perangkat.

Membuat kueri fraksi piksel untuk label semantik

Anda juga dapat membuat kueri fraksi piksel dalam frame saat ini yang termasuk dalam class tertentu, seperti langit. Kueri ini lebih efisien daripada menampilkan gambar semantik dan melakukan penelusuran per piksel untuk label tertentu. Fraksi yang ditampilkan adalah nilai float dalam rentang [0.0, 1.0].

Gunakan ArSemanticManager.GetSemanticLabelFraction() untuk mendapatkan fraksi untuk label tertentu:

var fraction = semanticManager.GetSemanticLabelFraction(SemanticLabel.SKY);