Hit-test menempatkan objek virtual di dunia nyata

Panduan khusus platform

Android (Kotlin/Java)

Android NDK (C)

Unity (AR Foundation)

Konten AR harus ditempatkan dan diubah ukurannya dengan benar agar menyatu dengan adegan. Seperti objek dunia nyata, objek virtual yang jauh akan terlihat lebih kecil. Anda dapat melakukan hit-test (atau raycast di AR Foundation for Unity) untuk menentukan penempatan objek 3D yang benar dalam scene. Penempatan yang benar memastikan konten AR dirender dengan ukuran yang sesuai (terlihat).

Hit-test mencari titik potong antara geometri 3D dunia nyata dan sinar virtual yang terdiri dari titik asal dan arah. Sinar dengan kamera perangkat sebagai sumber paling umum digunakan, meskipun ARCore menyertakan API untuk melakukan hit-test dengan sinar arbitrer dalam koordinat ruang dunia.

Bayangkan ada sebuah sinar yang berasal dari kamera perangkat pengguna yang memanjang ke depan hingga mengenai geometri 3D ruang pandang, seperti lantai, dinding, atau objek. Setelah ini terjadi, Anda akan menerima daftar hasil hit, atau persimpangan dengan geometri scene yang terdeteksi. Daftar ini diurutkan berdasarkan jarak dari perangkat, dengan persimpangan terdekat terlebih dahulu. Hal ini penting karena umumnya Anda tidak dapat melihat objek yang terhalang di belakang objek lain, jadi sering kali hasil pertama adalah yang paling signifikan.

Konten hasil hit

Masing-masing hasil hit ditampilkan sebagai daftar dengan informasi berikut untuk setiap hasil:

  • Jarak dari asal sinar, dalam meter
  • Pose (posisi dan orientasi) hasil klik
  • Geometri 3D yang Anda tekan, dalam bentuk Trackable

Anda kemudian dapat menggunakan hasil hit yang diinginkan untuk menempatkan konten 3D secara realistis menggunakan Anchor.

Jenis hasil hit

Ada empat jenis hasil hit: hasil Kedalaman, bidang, titik fitur, dan Penempatan Instan. Masing-masing memiliki kasus penggunaan dan konsekuensinya sendiri, seperti yang ditunjukkan oleh tabel berikut.

Jenis hasil hit Deskripsi Orientasi Kasus penggunaan
Berkesan dalam Menggunakan informasi kedalaman dari seluruh adegan untuk menentukan kedalaman dan orientasi titik yang benar Tegak lurus dengan permukaan 3D Menempatkan objek virtual di permukaan arbitrer (bukan hanya di lantai dan dinding)
Pesawat Menekan permukaan horizontal dan/atau vertikal untuk menentukan kedalaman dan orientasi titik yang benar Tegak lurus dengan permukaan 3D Tempatkan objek pada bidang (lantai atau dinding) menggunakan geometri penuh bidang. Perlu timbangan yang benar segera. Pengganti untuk hit-test Depth
Poin fitur Mengandalkan fitur visual di sekitar titik ketukan pengguna untuk menentukan posisi dan orientasi titik yang benar Tegak lurus dengan permukaan 3D Meletakkan objek di permukaan arbitrer (bukan hanya di lantai dan dinding)
Penempatan Instan (Persistent Raycast) Menggunakan ruang layar untuk menempatkan konten. Awalnya menggunakan perkiraan kedalaman yang disediakan oleh aplikasi. Berfungsi secara instan, tetapi pose dan kedalaman sebenarnya akan berubah setelah ARCore dapat menentukan geometri adegan yang sebenarnya +Y mengarah ke atas, berlawanan dengan gravitasi Letakkan objek di bidang (lantai atau dinding) menggunakan geometri penuh pesawat di mana penempatan yang cepat sangatlah penting, dan pengalaman ini dapat menoleransi kedalaman dan skala awal yang tidak diketahui

Kompatibilitas perangkat

Hit-test berfungsi pada semua perangkat yang didukung ARCore, tetapi hit-test Depth akan memerlukan perangkat yang didukung Depth.

Menggunakan hasil hit untuk menempatkan konten AR

Setelah memiliki hasil hit, Anda dapat menggunakan posenya sebagai input untuk menempatkan konten AR di scene.