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 diukur dengan benar agar menyatu dengan scene. Seperti objek dunia nyata, objek virtual yang lebih jauh akan terlihat lebih kecil. Anda dapat melakukan hit-test (atau raycast di AR Foundation untuk Unity) untuk menentukan penempatan yang benar dari objek 3D di scene Anda. Penempatan yang benar memastikan konten AR dirender pada ukuran yang sesuai (tampak).

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

Bayangkan ada sinar yang berasal dari kamera perangkat pengguna yang memanjang ke depan hingga mengenai geometri 3D scene, 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, sehingga sebagian besar waktu hasil pertama adalah yang paling signifikan.

Isi hasil hit

Setiap hasil hit ditampilkan sebagai daftar dengan informasi berikut untuk setiap hasil:

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

Kemudian, Anda 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. Setiap jenis memiliki kasus penggunaan dan kompromi sendiri, seperti yang ditunjukkan oleh tabel berikut.

Jenis hasil hit Deskripsi Orientasi Kasus penggunaan
Kedalaman Menggunakan informasi kedalaman dari seluruh scene untuk menentukan kedalaman dan orientasi yang benar dari suatu titik Tegak lurus terhadap permukaan 3D Tempatkan objek virtual di permukaan arbitrer (tidak hanya di lantai dan dinding)
Bidang Menghitung permukaan horizontal dan/atau vertikal untuk menentukan kedalaman dan orientasi yang benar dari suatu titik Tegak lurus terhadap permukaan 3D Tempatkan objek di bidang (lantai atau dinding) menggunakan geometri lengkap bidang. Perlu skala yang benar segera. Penggantian untuk hit-test Kedalaman
Titik fitur Mengandalkan fitur visual di sekitar titik ketukan pengguna untuk menentukan posisi dan orientasi yang benar dari suatu titik Tegak lurus terhadap permukaan 3D Tempatkan objek di permukaan arbitrer (tidak hanya di lantai dan dinding)
Penempatan Instan (Raycast Persisten) 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 scene sebenarnya +Y mengarah ke atas, berlawanan dengan gravitasi Tempatkan objek di bidang (lantai atau dinding) menggunakan geometri lengkap bidang tempat penempatan cepat sangat penting, dan pengalaman dapat mentolerir kedalaman dan skala awal yang tidak diketahui

Kompatibilitas perangkat

Hit-test berfungsi di semua perangkat yang mendukung ARCore, tetapi hit-test Kedalaman akan memerlukan perangkat yang mendukung Kedalaman.

Menggunakan hasil hit untuk menempatkan konten AR

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