Bagikan melalui


Pemetaan spasial

Pemetaan spasial memberikan representasi terperinci dari permukaan dunia nyata di lingkungan di sekitar HoloLens, memungkinkan pengembang untuk menciptakan pengalaman realitas campuran yang meyakinkan. Dengan menggabungkan dunia nyata dengan dunia virtual, aplikasi dapat membuat hologram tampak nyata. Aplikasi juga dapat lebih alami selaras dengan harapan pengguna dengan menyediakan perilaku dan interaksi dunia nyata yang akrab.


Dukungan perangkat

Fitur HoloLens (generasi ke-1) HoloLens 2 Headset imersif
Pemetaan spasial ✔️ ✔️

Mengapa pemetaan spasial penting?

Pemetaan spasial memungkinkan untuk menempatkan objek di permukaan nyata. Ini membantu jangkar objek di dunia pengguna dan memanfaatkan isyarat kedalaman dunia nyata. Menggabungkan hologram Anda berdasarkan hologram lain dan objek dunia nyata membantu meyakinkan pengguna bahwa hologram ini benar-benar berada di ruang mereka. Hologram yang mengambang di ruang atau bergerak dengan pengguna tidak akan terasa nyata. Jika memungkinkan, tempatkan item untuk kenyamanan.

Visualisasikan permukaan saat menempatkan atau memindahkan hologram (gunakan kisi yang diproyeksikan). Ini membantu pengguna mengetahui di mana mereka dapat menempatkan hologram mereka dengan sebaik-baiknya, dan menunjukkan apakah tempat mereka mencoba menempatkan hologram tidak dipetakan. Anda dapat "billboard item" terhadap pengguna jika mereka berakhir di terlalu banyak sudut.

Ringkasan konseptual

Permukaan jala menutupi ruangan
Contoh jala pemetaan spasial yang mencakup ruangan

Dua jenis objek utama yang digunakan untuk pemetaan spasial adalah 'Pengamat Permukaan Spasial' dan 'Permukaan Spasial'.

Aplikasi ini menyediakan Pengamat Permukaan Spasial dengan satu atau beberapa volume pembatas, untuk menentukan wilayah ruang tempat aplikasi ingin menerima data pemetaan spasial. Untuk masing-masing volume ini, pemetaan spasial akan menyediakan aplikasi dengan satu set Permukaan Spasial.

Volume ini mungkin stasioner (di lokasi tetap berdasarkan dunia nyata) atau dapat dilampirkan ke HoloLens (mereka bergerak, tetapi tidak berputar, dengan HoloLens saat bergerak melalui lingkungan). Setiap permukaan spasial menggambarkan permukaan dunia nyata dalam volume ruang yang kecil, direpresentasikan sebagai jala segitiga yang melekat pada sistem koordinat spasial yang terkunci di dunia.

Saat HoloLens mengumpulkan data baru tentang lingkungan, dan ketika perubahan pada lingkungan terjadi, permukaan spasial akan muncul, menghilang, dan berubah.

Demo konsep desain Kesadaran Spasial

Jika Anda ingin melihat konsep desain Kesadaran Spasial dalam tindakan, lihat demo video Merancang Hologram - Kesadaran Spasial kami di bawah ini. Setelah selesai, lanjutkan untuk menyelami topik tertentu yang lebih rinci.

Video ini diambil dari aplikasi HoloLens 2 "Merancang Hologram". Unduh dan nikmati pengalaman lengkapnya di sini.

Pemetaan Spasial vs. Pemahaman Adegan WorldMesh

Untuk HoloLens 2, dimungkinkan untuk mengkueri versi statis data pemetaan spasial menggunakan SDK pemahaman Adegan (pengaturan EnableWorldMesh). Berikut adalah perbedaan antara dua cara mengakses data pemetaan spasial:

  • API Pemetaan Spasial:
    • Rentang terbatas: data pemetaan spasial yang tersedia untuk aplikasi dalam ukuran terbatas yang di-cache 'gelembung' di sekitar pengguna.
    • Memberikan pembaruan latensi rendah dari wilayah jala yang diubah melalui peristiwa SurfacesChanged.
    • Tingkat detail variabel yang dikendalikan oleh parameter Segitiga Per Meter Kubik.
  • SDK pemahaman adegan:
    • Rentang tak terbatas - menyediakan semua data pemetaan spasial yang dipindai dalam radius kueri.
    • Menyediakan rekam jepret statis dari data pemetaan spasial. Mendapatkan data pemetaan spasial yang diperbarui memerlukan menjalankan kueri baru untuk seluruh jala.
    • Tingkat detail yang konsisten dikontrol oleh pengaturan RequestedMeshLevelOfDetail.

Apa yang memengaruhi kualitas pemetaan spasial?

Beberapa faktor, yang dirinci di sini, dapat memengaruhi frekuensi dan tingkat keparahan kesalahan ini. Namun, Anda harus merancang aplikasi Anda sehingga pengguna dapat mencapai tujuan mereka bahkan jika ada kesalahan dalam data pemetaan spasial.

Skenario penggunaan umum

Ilustrasi skenario penggunaan Pemetaan Spasial umum: Penempatan, Oklusi, Fisika, dan Navigasi

Penempatan

Pemetaan spasial memberi aplikasi kesempatan untuk menyajikan bentuk interaksi yang alami dan akrab bagi pengguna; apa yang bisa lebih alami daripada meletakkan telepon Anda di atas meja?

Membatasi penempatan hologram (atau lebih umum, setiap pemilihan lokasi spasial) untuk berbaring di permukaan memberikan pemetaan alami dari 3D (titik dalam ruang) ke 2D (titik di permukaan). Penempatan ini mengurangi jumlah informasi yang perlu diberikan pengguna ke aplikasi dan membuat interaksi pengguna lebih cepat, lebih mudah, dan lebih tepat. Ini benar karena 'jarak jauh' bukanlah sesuatu yang biasa kita komunikasikan secara fisik dengan orang lain atau ke komputer. Ketika kita menunjuk dengan jari kita, kita menentukan arah tetapi tidak jarak.

Peringatan penting di sini adalah bahwa ketika aplikasi menyimpulkan jarak dari arah (misalnya dengan melakukan raycast di sepanjang arah tatapan pengguna untuk menemukan permukaan spasial terdekat), ini harus menghasilkan hasil yang dapat diprediksi pengguna dengan andal. Jika tidak, pengguna akan kehilangan rasa kontrol mereka dan ini dapat dengan cepat menjadi frustrasi. Salah satu metode yang membantu dengan ini adalah melakukan beberapa raycast, bukan hanya satu. Hasil agregat harus lebih halus dan lebih mudah diprediksi, kurang rentan terhadap pengaruh dari hasil 'outlier' sementara (seperti yang dapat disebabkan oleh sinar yang melewati lubang kecil atau mengenai bit geometri kecil yang tidak diketahui pengguna). Agregasi atau penghalusan juga dapat dilakukan dari waktu ke waktu; misalnya, Anda dapat membatasi kecepatan maksimum di mana hologram dapat bervariasi dalam jarak dari pengguna. Cukup membatasi nilai jarak minimum dan maksimum juga dapat membantu, sehingga hologram yang dipindahkan tidak tiba-tiba terbang jauh ke kejauhan atau datang menabrak kembali ke wajah pengguna.

Aplikasi juga dapat menggunakan bentuk dan arah permukaan untuk memandu penempatan hologram. Kursi holografik tidak boleh menembus dinding dan harus duduk memerah dengan lantai bahkan jika sedikit tidak merata. Fungsionalitas semacam ini kemungkinan akan mengandalkan penggunaan tabrakan fisika daripada raycast, namun kekhawatiran serupa akan berlaku. Jika hologram yang ditempatkan memiliki banyak poligon kecil yang mencuat, seperti kaki di kursi, mungkin masuk akal untuk memperluas representasi fisika poligon tersebut ke sesuatu yang lebih luas dan lebih halus sehingga mereka lebih dapat meluncur di atas permukaan spasial tanpa tersangkut.

Pada ekstremnya, input pengguna dapat disederhanakan sepenuhnya dan permukaan spasial dapat digunakan untuk melakukan penempatan hologram yang sepenuhnya otomatis. Misalnya, aplikasi dapat menempatkan sakelar cahaya holografik di suatu tempat di dinding untuk ditekan pengguna. Peringatan yang sama tentang prediksi berlaku doubly di sini; jika pengguna mengharapkan kontrol atas penempatan hologram, tetapi aplikasi tidak selalu menempatkan hologram di mana mereka harapkan (jika sakelar lampu muncul di suatu tempat yang tidak dapat dijangkau pengguna), maka ini akan menjadi pengalaman yang membuat frustrasi. Sebenarnya bisa lebih buruk untuk melakukan penempatan otomatis yang membutuhkan koreksi pengguna beberapa waktu, daripada hanya mengharuskan pengguna untuk selalu melakukan penempatan sendiri; karena penempatan otomatis yang berhasil diharapkan, koreksi manual terasa seperti beban!

Perhatikan juga bahwa kemampuan aplikasi untuk menggunakan permukaan spasial untuk penempatan sangat bergantung pada pengalaman pemindaian aplikasi. Jika permukaan belum dipindai, permukaan tidak dapat digunakan untuk penempatan. Terserah aplikasi untuk memperjelas hal ini kepada pengguna, sehingga mereka dapat membantu memindai permukaan baru atau memilih lokasi baru.

Umpan balik visual kepada pengguna sangat penting selama penempatan. Pengguna perlu tahu di mana hologram didasarkan pada permukaan terdekat dengan efek grounding. Mereka harus memahami mengapa pergerakan hologram mereka dibatasi (misalnya, karena tabrakan dengan permukaan terdekat lainnya). Jika mereka tidak dapat menempatkan hologram di lokasi saat ini, umpan balik visual harus memperjelas mengapa tidak. Misalnya, jika pengguna mencoba menempatkan sofa holografik yang tersangkut setengah jalan ke dinding, maka bagian sofa yang berada di belakang dinding harus berpulsasi dalam warna marah. Atau sebaliknya, jika aplikasi tidak dapat menemukan permukaan spasial di lokasi di mana pengguna dapat melihat permukaan dunia nyata, maka aplikasi harus memperjelas hal ini. Tidak adanya efek grounding yang jelas di area ini dapat mencapai tujuan ini.

Halangan

Salah satu kegunaan utama permukaan pemetaan spasial hanyalah untuk menempati hologram. Perilaku sederhana ini memiliki dampak besar pada realisme hologram yang dirasakan, membantu menciptakan rasa visceral yang benar-benar menghuni ruang fisik yang sama dengan pengguna.

Oklusi juga memberikan informasi kepada pengguna; ketika hologram tampaknya terkumpul oleh permukaan dunia nyata, ini memberikan umpan balik visual ekstra tentang lokasi spasial hologram itu di dunia. Sebaliknya, oklusi juga dapat secara berguna menyembunyikan informasi dari pengguna; menempati hologram di balik dinding dapat mengurangi kekacauan visual dengan cara yang intuitif. Untuk menyembunyikan atau mengungkapkan hologram, pengguna hanya perlu menggerakkan kepala mereka.

Oklusi juga dapat digunakan untuk harapan utama untuk antarmuka pengguna alami berdasarkan interaksi fisik yang akrab; jika hologram dihilangkan oleh permukaan, itu karena permukaan itu padat, sehingga pengguna harus mengharapkan bahwa hologram akan bertabrakan dengan permukaan itu dan tidak melewatinya.

Terkadang, oklusi hologram tidak diinginkan. Jika pengguna perlu berinteraksi dengan hologram, maka mereka perlu melihatnya - bahkan jika berada di belakang permukaan dunia nyata. Dalam kasus seperti itu, biasanya masuk akal untuk merender hologram seperti itu secara berbeda ketika dihilangkan (misalnya, dengan mengurangi kecerahannya). Dengan cara ini, pengguna dapat menemukan hologram secara visual, tetapi mereka masih akan tahu itu di balik sesuatu.

Fisika

Penggunaan simulasi fisika adalah cara lain di mana pemetaan spasial dapat digunakan untuk memperkuat keberadaan hologram di ruang fisik pengguna. Ketika bola karet holografik saya berguling realistis dari meja saya, memantul melintasi lantai dan menghilang di bawah sofa, mungkin sulit bagi saya untuk percaya bahwa itu tidak ada.

Simulasi fisika juga memberikan kesempatan bagi aplikasi untuk menggunakan interaksi berbasis fisika alami dan akrab. Memindahkan sepotong furnitur holografik di sekitar lantai kemungkinan akan lebih mudah bagi pengguna jika furnitur merespons seolah-olah meluncur di lantai dengan inertia dan gesekan yang sesuai.

Untuk menghasilkan perilaku fisik yang realistis, Anda mungkin perlu melakukan beberapa pemrosesan jala seperti mengisi lubang, menghilangkan halusinasi mengambang dan menghaluskan permukaan kasar.

Anda juga perlu mempertimbangkan bagaimana pengalaman pemindaian aplikasi Anda memengaruhi simulasi fisikanya. Pertama, permukaan yang hilang tidak akan bertabrakan dengan apa pun; apa yang terjadi ketika bola karet meluncur menuruni koridor dan di ujung dunia yang dikenal? Kedua, Anda perlu memutuskan apakah Anda akan terus merespons perubahan lingkungan dari waktu ke waktu. Dalam beberapa kasus, Anda akan ingin merespons secepat mungkin; katakanlah jika pengguna menggunakan pintu dan furnitur sebagai barikade bergerak dalam pertahanan melawan prahara panah Romawi yang masuk. Namun, dalam kasus lain, Anda mungkin ingin mengabaikan pembaruan baru; mengemudikan mobil sport holografik Anda di sekitar arena balap di lantai Anda mungkin tiba-tiba tidak begitu menyenangkan jika anjing Anda memutuskan untuk duduk di tengah trek.

Aplikasi dapat menggunakan data pemetaan spasial untuk memberikan karakter holografik (atau agen) kemampuan untuk menavigasi dunia nyata dengan cara yang sama seperti orang nyata. Ini dapat membantu memperkuat keberadaan karakter holografik dengan membatasinya ke serangkaian perilaku alami dan akrab yang sama dengan pengguna dan teman-teman mereka.

Kemampuan navigasi juga dapat berguna bagi pengguna. Setelah peta navigasi dibangun di area tertentu, peta tersebut dapat dibagikan untuk memberikan arah holografik bagi pengguna baru yang tidak terbiasa dengan lokasi tersebut. Peta ini dapat dirancang untuk membantu menjaga 'lalu lintas' pejalan kaki mengalir dengan lancar, atau untuk menghindari kecelakaan di lokasi berbahaya seperti lokasi konstruksi.

Tantangan teknis utama yang terlibat dalam menerapkan fungsi navigasi akan dapat diandalkan deteksi permukaan yang dapat dijalani (manusia tidak berjalan di atas meja!) dan adaptasi anggun terhadap perubahan lingkungan (manusia tidak berjalan melalui pintu tertutup!). Jala mungkin memerlukan beberapa pemrosesan sebelum dapat digunakan untuk perencanaan jalur dan navigasi oleh karakter virtual. Menghaluskan jala dan menghapus halusinasi dapat membantu menghindari karakter menjadi macet. Anda mungkin juga ingin menyederhanakan jala secara drastis untuk mempercepat perencanaan jalur dan perhitungan navigasi karakter Anda. Tantangan ini telah menerima banyak perhatian dalam pengembangan teknologi video game, dan ada banyak literatur penelitian yang tersedia tentang topik-topik ini.

Fungsionalitas NavMesh bawaan di Unity tidak dapat digunakan secara default untuk permukaan pemetaan spasial karena permukaan tidak diketahui sampai aplikasi dimulai. Namun, Anda dapat membangun NavMesh selama runtime dengan menginstal NavMeshComponents. Perhatikan bahwa sistem pemetaan spasial tidak akan memberikan informasi tentang permukaan yang jauh dari lokasi pengguna saat ini; untuk membangun peta area yang luas, aplikasi harus "ingat" permukaan. Anda juga dapat meningkatkan pengaturan tingkat pengamatan di profil kesadaran spasial, yang meningkatkan area tempat Anda dapat membangun NavMesh Anda.

Visualisasi

Sebagian besar waktu yang sesuai untuk permukaan spasial menjadi tidak terlihat; untuk meminimalkan kekacauan visual dan membiarkan dunia nyata berbicara untuk dirinya sendiri. Namun, terkadang berguna untuk memvisualisasikan permukaan pemetaan spasial secara langsung, meskipun rekan-rekan dunia nyata mereka terlihat.

Misalnya, ketika pengguna mencoba menempatkan hologram ke permukaan (menempatkan kabinet holografik di dinding, katakanlah) itu dapat berguna untuk 'membumi' hologram dengan mentransmisikan bayangan ke permukaan. Ini memberi pengguna rasa yang jauh lebih jelas tentang kedekatan fisik yang tepat antara hologram dan permukaan. Ini juga merupakan contoh praktik yang lebih umum untuk 'mempratinjau' perubahan secara visual sebelum pengguna berkomitmen padanya.

Dengan memvisualisasikan permukaan, aplikasi dapat berbagi dengan pengguna pemahamannya tentang lingkungan. Misalnya, permainan papan holografik dapat memvisualisasikan permukaan horizontal yang telah diidentifikasi sebagai 'tabel', sehingga pengguna tahu ke mana mereka harus berinteraksi.

Memvisualisasikan permukaan dapat menjadi cara yang berguna untuk menunjukkan ruang terdekat pengguna yang tersembunyi dari tampilan. Ini bisa menyediakan cara untuk memberi pengguna akses ke dapur mereka (dan semua hologram yang terkandung) dari ruang tamu mereka.

Jala permukaan yang disediakan oleh pemetaan spasial mungkin tidak terlalu 'bersih'. Penting untuk memvisualisasikannya dengan tepat. Perhitungan pencahayaan tradisional dapat menyoroti kesalahan dalam normal permukaan secara visual mengganggu, sementara tekstur 'bersih' yang diproyeksikan ke permukaan dapat membantu memberikan tampilan yang lebih rapi. Dimungkinkan juga untuk melakukan pemrosesan jala untuk meningkatkan properti jala, sebelum permukaan dirender.

Catatan

HoloLens 2 mengimplementasikan Scene Understanding Runtime baru, yang memberi pengembang Mixed Reality representasi lingkungan terstruktur dan tingkat tinggi yang dirancang untuk menyederhanakan implementasi penempatan, oklusi, fisika, dan navigasi.

Menggunakan Surface Observer

Titik awal untuk pemetaan spasial adalah pengamat permukaan. Alur program adalah sebagai berikut:

  • Membuat objek pengamat permukaan
    • Berikan satu atau beberapa volume spasial, untuk menentukan wilayah yang diminati di mana aplikasi ingin menerima data pemetaan spasial. Volume spasial hanyalah bentuk yang menentukan wilayah ruang, seperti bola atau kotak.
    • Gunakan volume spasial dengan sistem koordinat spasial yang terkunci di dunia untuk mengidentifikasi wilayah tetap dunia fisik.
    • Gunakan volume spasial, perbarui setiap bingkai dengan sistem koordinat spasial terkunci tubuh, untuk mengidentifikasi wilayah ruang yang bergerak (tetapi tidak berputar) dengan pengguna.
    • Volume spasial ini dapat diubah nanti kapan saja, karena status aplikasi atau pengguna berubah.
  • Menggunakan polling atau pemberitahuan untuk mengambil informasi tentang permukaan spasial
    • Anda dapat 'melakukan polling' pengamat permukaan untuk status permukaan spasial kapan saja. Sebagai gantinya, Anda dapat mendaftar untuk peristiwa 'permukaan' pengamat permukaan berubah, yang akan memberi tahu aplikasi ketika permukaan spasial telah berubah.
    • Untuk volume spasial dinamis, seperti frustum tampilan, atau volume yang dikunci tubuh, aplikasi perlu melakukan polling untuk perubahan setiap bingkai dengan mengatur wilayah yang diinginkan dan kemudian mendapatkan set permukaan spasial saat ini.
    • Untuk volume statis, seperti kubus terkunci di dunia yang mencakup satu ruangan, aplikasi dapat mendaftar untuk peristiwa 'permukaan berubah' untuk diberi tahu ketika permukaan spasial di dalam volume tersebut mungkin telah berubah.
  • Perubahan permukaan proses
    • Iterasi set permukaan spasial yang disediakan.
    • Mengklasifikasikan permukaan spasial sebagai ditambahkan, diubah, atau dihapus.
    • Untuk setiap permukaan spasial yang ditambahkan atau diubah, jika sesuai, kirimkan permintaan asinkron untuk menerima jala yang diperbarui yang mewakili status permukaan saat ini pada tingkat detail yang diinginkan.
  • Proses permintaan jala asinkron (detail selengkapnya di bagian berikut).

Penembolokan Jala

Permukaan spasial diwakili oleh jala segitiga padat. Menyimpan, merender, dan memproses jala ini dapat mengonsumsi sumber daya komputasi dan penyimpanan yang signifikan. Dengan demikian, setiap aplikasi harus mengadopsi skema penembolokan jala sesuai dengan kebutuhannya, untuk meminimalkan sumber daya yang digunakan untuk pemrosesan dan penyimpanan jala. Skema ini harus menentukan jala mana yang harus disimpan dan mana yang akan dibuang, dan kapan harus memperbarui jala untuk setiap permukaan spasial.

Banyak pertimbangan yang dibahas di sana akan secara langsung menginformasikan bagaimana aplikasi Anda harus mendekati penembolokan jala. Anda harus mempertimbangkan bagaimana pengguna bergerak melalui lingkungan, permukaan mana yang diperlukan, ketika permukaan yang berbeda akan diamati dan kapan perubahan di lingkungan harus ditangkap.

Saat menafsirkan peristiwa 'permukaan berubah' yang disediakan oleh pengamat permukaan, logika penembolokan jala dasar adalah sebagai berikut:

  • Jika aplikasi melihat ID permukaan spasial yang belum pernah dilihat sebelumnya, aplikasi harus memperlakukan ini sebagai permukaan spasial baru.
  • Jika aplikasi melihat permukaan spasial dengan ID yang diketahui tetapi dengan waktu pembaruan baru, aplikasi harus memperlakukan ini sebagai permukaan spasial yang diperbarui.
  • Jika aplikasi tidak lagi melihat permukaan spasial dengan ID yang diketahui, aplikasi harus memperlakukan ini sebagai permukaan spasial yang dihapus.

Terserah setiap aplikasi untuk kemudian membuat pilihan berikut:

  • Untuk permukaan spasial baru, haruskah jala diminta?
    • Umumnya jala harus segera diminta untuk permukaan spasial baru, yang dapat memberikan informasi baru yang berguna kepada pengguna.
    • Namun, permukaan spasial baru di dekat dan di depan pengguna harus diberikan prioritas dan jala mereka harus diminta terlebih dahulu.
    • Jika jala baru tidak diperlukan, jika misalnya aplikasi telah secara permanen atau sementara 'membekukan' model lingkungannya, maka itu tidak boleh diminta.
  • Untuk permukaan spasial yang diperbarui, haruskah jala diminta?
    • Permukaan spasial yang diperbarui di dekat dan di depan pengguna harus diberikan prioritas dan jala mereka harus diminta terlebih dahulu.
    • Mungkin juga tepat untuk memberikan prioritas yang lebih tinggi pada permukaan baru daripada permukaan yang diperbarui, terutama selama pengalaman pemindaian.
    • Untuk membatasi biaya pemrosesan, aplikasi mungkin ingin membatasi laju di mana mereka memproses pembaruan ke permukaan spasial.
    • Mungkin untuk menyimpulkan bahwa perubahan pada permukaan spasial kecil, misalnya jika batas permukaan kecil, dalam hal ini pembaruan mungkin tidak cukup penting untuk diproses.
    • Updates ke permukaan spasial di luar wilayah minat pengguna saat ini dapat diabaikan sepenuhnya, meskipun dalam hal ini mungkin lebih efisien untuk memodifikasi volume pembatas spasial yang digunakan oleh pengamat permukaan.
  • Untuk permukaan spasial yang dihapus, haruskah jala dibuang?
    • Umumnya jala harus segera dibuang untuk permukaan spasial yang dihapus, sehingga oklusi hologram tetap benar.
    • Namun, jika aplikasi memiliki alasan untuk percaya bahwa permukaan spasial akan segera muncul kembali (berdasarkan desain pengalaman pengguna), maka mungkin lebih efisien untuk menyimpannya daripada membuang jalanya dan membuatnya kembali nanti.
    • Jika aplikasi membangun model skala besar lingkungan pengguna, mungkin tidak ingin membuang jala sama sekali. Namun, masih perlu membatasi penggunaan sumber daya, mungkin dengan menampung jala ke disk saat permukaan spasial menghilang.
    • Beberapa peristiwa yang relatif langka selama pembuatan permukaan spasial dapat menyebabkan permukaan spasial digantikan oleh permukaan spasial baru di lokasi yang sama tetapi dengan ID yang berbeda. Jadi, aplikasi yang memilih untuk tidak membuang permukaan yang dihapus harus berhati-hati agar tidak berakhir dengan beberapa jala permukaan spasial yang sangat tumpang tindih yang menutupi lokasi yang sama.
  • Haruskah jala dibuang untuk permukaan spasial lainnya?
    • Meskipun permukaan spasial ada, jika tidak lagi berguna untuk pengalaman pengguna maka itu harus dibuang. Misalnya, jika aplikasi 'mengganti' ruangan di sisi lain pintu dengan ruang virtual alternatif maka spasial muncul di ruangan itu tidak lagi penting.

Berikut adalah contoh strategi penembolokan jala, menggunakan histeresis spasial dan temporal:

  • Pertimbangkan aplikasi yang ingin menggunakan volume minat spasial berbentuk frustum yang mengikuti tatapan pengguna saat mereka melihat-lihat dan berjalan-jalan.
  • Permukaan spasial mungkin hilang sementara dari volume ini hanya karena pengguna melihat jauh dari permukaan atau langkah-langkah lebih jauh darinya... hanya untuk melihat ke belakang atau bergerak lebih dekat lagi sesaat kemudian. Dalam hal ini, membuang dan membuat kembali jala untuk permukaan ini mewakili banyak pemrosesan redundan.
  • Untuk mengurangi jumlah perubahan yang diproses, aplikasi menggunakan dua pengamat permukaan spasial, satu terkandung di dalam yang lain. Volume yang lebih besar bersifat bulat dan mengikuti pengguna 'malas'; ini hanya bergerak bila perlu untuk memastikan bahwa pusatnya berada dalam 2,0 meter pengguna.
  • Jala permukaan spasial baru dan yang diperbarui selalu diproses dari pengamat permukaan bagian dalam yang lebih kecil, tetapi jala di-cache sampai hilang dari pengamat permukaan luar yang lebih besar. Ini memungkinkan aplikasi untuk menghindari pemrosesan banyak perubahan redundan karena pergerakan pengguna lokal.
  • Karena permukaan spasial juga dapat hilang sementara karena kehilangan pelacakan, aplikasi juga menangguhkan membuang permukaan spasial yang dihapus selama kehilangan pelacakan.
  • Secara umum, aplikasi harus mengevaluasi tradeoff antara pengurangan pemrosesan pembaruan dan peningkatan penggunaan memori untuk menentukan strategi penembolokan yang ideal.

Penyajian

Ada tiga cara utama di mana jala pemetaan spasial cenderung digunakan untuk penyajian:

  • Untuk visualisasi permukaan
    • Seringkali berguna untuk memvisualisasikan permukaan spasial secara langsung. Misalnya, mentransmisikan 'bayangan' dari objek ke permukaan spasial dapat memberikan umpan balik visual yang bermanfaat kepada pengguna saat mereka menempatkan hologram di permukaan.
    • Satu hal yang perlu diingat adalah bahwa jala spasial berbeda dengan jenis jala yang mungkin dibuat oleh seniman 3D. Topologi segitiga tidak akan 'bersih' seperti topologi yang dibuat manusia, dan jala akan menderita berbagai kesalahan.
    • Untuk membuat estetika visual yang menyenangkan, Anda mungkin ingin melakukan beberapa pemrosesan jala, misalnya untuk mengisi lubang atau permukaan normal yang halus. Anda mungkin juga ingin menggunakan shader untuk memproyeksikan tekstur yang dirancang artis ke jala Anda alih-alih secara langsung memvisualisasikan topologi jala dan normal.
  • Untuk menempati hologram di balik permukaan dunia nyata
    • Permukaan spasial dapat dirender dalam pass khusus kedalaman, yang hanya memengaruhi buffer kedalaman dan tidak memengaruhi target render warna.
    • Ini primes buffer kedalaman untuk oklude kemudian merender hologram di belakang permukaan spasial. Oklusi hologram yang akurat meningkatkan rasa bahwa hologram benar-benar ada dalam ruang fisik pengguna.
    • Untuk mengaktifkan penyajian khusus kedalaman, perbarui status campuran Anda untuk mengatur RenderTargetWriteMask ke nol untuk semua target render warna.
  • Untuk memodifikasi penampilan hologram yang ditanamkan oleh permukaan dunia nyata
    • Geometri yang biasanya dirender disembunyikan ketika dihilangkan. Ini dicapai dengan mengatur fungsi kedalaman dalam status stensil kedalaman Anda menjadi "kurang dari atau sama dengan", yang menyebabkan geometri hanya terlihat di mana ia lebih dekat ke kamera daripada semua geometri yang dirender sebelumnya.
    • Namun, mungkin berguna untuk menjaga geometri tertentu tetap terlihat bahkan ketika dihilangkan, dan untuk memodifikasi penampilannya ketika dihilangkan sebagai cara memberikan umpan balik visual kepada pengguna. Misalnya, ini memungkinkan aplikasi untuk menunjukkan lokasi objek kepada pengguna sambil memperjelas yang berada di belakang permukaan dunia nyata.
    • Untuk mencapai hal ini, render geometri untuk kedua kalinya dengan shader berbeda yang menciptakan penampilan 'okluded' yang diinginkan. Sebelum merender geometri untuk kedua kalinya, buat dua perubahan pada status stensil kedalaman Anda. Pertama, atur fungsi kedalaman ke "lebih besar dari atau sama" sehingga geometri hanya akan terlihat di mana ia lebih jauh dari kamera daripada semua geometri yang dirender sebelumnya. Kedua, atur DepthWriteMask ke nol, sehingga buffer kedalaman tidak akan dimodifikasi (buffer kedalaman harus terus mewakili kedalaman geometri yang paling dekat dengan kamera).

Performa adalah perhatian penting saat merender jala pemetaan spasial. Berikut adalah beberapa teknik performa penyajian khusus untuk merender jala pemetaan spasial:

  • Menyesuaikan kepadatan segitiga
    • Saat meminta jala permukaan spasial dari pengamat permukaan Anda, minta kepadatan terendah jala segitiga yang cukup untuk kebutuhan Anda.
    • Mungkin masuk akal untuk memvariasikan kepadatan segitiga pada permukaan berdasarkan permukaan, tergantung pada jarak permukaan dari pengguna, dan relevansinya dengan pengalaman pengguna.
    • Mengurangi jumlah segitiga akan mengurangi penggunaan memori dan biaya pemrosesan vertex pada GPU, meskipun tidak akan memengaruhi biaya pemrosesan piksel.
  • Gunakan frustum culling
    • Frustum memusnahkan melompati objek gambar yang tidak dapat dilihat karena mereka berada di luar frustum tampilan saat ini. Ini mengurangi biaya pemrosesan CPU dan GPU.
    • Karena pemusnahan dilakukan berdasarkan per jala dan permukaan spasial bisa besar, memecah setiap jala permukaan spasial menjadi gugus yang lebih kecil dapat mengakibatkan pemusnahan yang lebih efisien (dalam segitiga di luar layar yang lebih sedikit dirender). Namun, ada pertukaran; semakin banyak jala yang Anda miliki, semakin banyak panggilan gambar yang harus Anda lakukan, yang dapat meningkatkan biaya CPU. Dalam kasus yang ekstrem, perhitungan pemusnahan frustum itu sendiri bahkan bisa memiliki biaya CPU yang terukur.
  • Menyesuaikan urutan penyajian
    • Permukaan spasial cenderung besar, karena mewakili seluruh lingkungan pengguna di sekitarnya. Biaya pemrosesan piksel pada GPU bisa tinggi, terutama dalam kasus di mana ada lebih dari satu lapisan geometri yang terlihat (termasuk permukaan spasial dan hologram lainnya). Dalam hal ini, lapisan terdekat dengan pengguna akan menempati lapisan apa pun lebih jauh, sehingga setiap waktu GPU yang dihabiskan untuk merender lapisan yang lebih jauh tersebut terbuang sia-sia.
    • Untuk mengurangi pekerjaan redundan ini pada GPU, ini membantu merender permukaan buram dalam urutan front-to-back (yang lebih dekat terlebih dahulu, yang lebih jauh terakhir). Dengan 'buram' kita berarti permukaan yang DepthWriteMask diatur ke satu dalam status stensil kedalaman Anda. Ketika permukaan terdekat dirender, permukaan tersebut akan memanjakan buffer kedalaman sehingga permukaan yang lebih jauh secara efisien dilewati oleh prosesor piksel pada GPU.

Pemrosesan Jala

Aplikasi mungkin ingin melakukan berbagai operasi pada jala permukaan spasial agar sesuai dengan kebutuhannya. Data indeks dan puncak yang disediakan dengan setiap jala permukaan spasial menggunakan tata letak yang sama akrabnya dengan buffer puncak dan indeks yang digunakan untuk merender jala segitiga di semua API penyajian modern. Namun, salah satu fakta utama yang perlu diperhatikan adalah bahwa segitiga pemetaan spasial memiliki urutan berliku front-clockwise. Setiap segitiga diwakili oleh tiga indeks puncak dalam buffer indeks jala dan indeks ini akan mengidentifikasi simpul segitiga dalam urutan searah jarum jam , ketika segitiga dilihat dari sisi depan . Sisi depan (atau di luar) jala permukaan spasial sesuai seperti yang Anda harapkan ke sisi depan (terlihat) dari permukaan dunia nyata.

Aplikasi hanya boleh melakukan penyederhanaan jala jika kepadatan segitiga terkoar yang disediakan oleh pengamat permukaan masih tidak cukup kasar - pekerjaan ini secara komputasi mahal dan sudah dilakukan oleh runtime untuk menghasilkan berbagai tingkat detail yang disediakan.

Karena setiap pengamat permukaan dapat menyediakan beberapa permukaan spasial yang tidak terhubung, beberapa aplikasi mungkin ingin memotong jala permukaan spasial ini satu sama lain, lalu menyatukannya. Secara umum, langkah kliping diperlukan, karena jala permukaan spasial terdekat sering tumpang tindih sedikit.

Raycasting dan Tabrakan

Agar API fisika (seperti Havok) menyediakan aplikasi dengan fungsionalitas raycasting dan tabrakan untuk permukaan spasial, aplikasi harus menyediakan jala permukaan spasial ke API fisika. Jala yang digunakan untuk fisika sering memiliki properti berikut:

  • Mereka hanya berisi sejumlah kecil segitiga. Operasi fisika lebih intensif secara komputasi daripada operasi penyajian.
  • Mereka 'air-ketat'. Permukaan yang dimaksudkan agar padat tidak boleh memiliki lubang kecil di dalamnya; bahkan lubang terlalu kecil untuk terlihat dapat menyebabkan masalah.
  • Mereka diubah menjadi lambung cembung. Lambung cembung memiliki beberapa poligon dan bebas dari lubang, dan jauh lebih efisien secara komputasi untuk diproses daripada jala segitiga mentah.

Saat melakukan raycast terhadap permukaan spasial, ingatlah bahwa permukaan-permukaan ini seringkali merupakan bentuk yang kompleks dan berantakan yang penuh detail kecil yang berantakan - sama seperti meja Anda! Ini berarti bahwa satu raycast sering kali tidak cukup untuk memberi Anda informasi yang cukup tentang bentuk permukaan dan bentuk ruang kosong di dekatnya. Biasanya ada baiknya untuk melakukan banyak raycast dalam area kecil dan menggunakan hasil agregat untuk mendapatkan pemahaman yang lebih dapat diandalkan tentang permukaan. Misalnya, menggunakan rata-rata 10 raycast untuk memandu penempatan hologram di permukaan akan menghasilkan hasil yang jauh lebih halus dan kurang 'jittery' yang hanya menggunakan satu raycast.

Namun, perlu diingat bahwa setiap raycast dapat memiliki biaya komputasi yang tinggi. Tergantung pada skenario penggunaan Anda, Anda harus menukar biaya komputasi raycast tambahan (dilakukan setiap bingkai) terhadap biaya komputasi pemrosesan jala untuk menghaluskan dan menghapus lubang di permukaan spasial (dilakukan ketika jala spasial diperbarui).

Pengalaman pemindaian lingkungan

Setiap aplikasi yang menggunakan pemetaan spasial harus mempertimbangkan untuk memberikan 'pengalaman pemindaian'; proses di mana aplikasi memandu pengguna untuk memindai permukaan yang diperlukan agar aplikasi berfungsi dengan benar.

Contoh pemindaian
Contoh pemindaian

Sifat pengalaman pemindaian ini dapat sangat bervariasi tergantung pada kebutuhan setiap aplikasi, tetapi dua prinsip utama harus memandu desainnya.

Pertama, komunikasi yang jelas dengan pengguna adalah perhatian utama. Pengguna harus selalu menyadari apakah persyaratan aplikasi terpenuhi. Ketika mereka tidak terpenuhi, harus segera jelas kepada pengguna mengapa hal ini demikian dan mereka harus dengan cepat dituntun untuk mengambil tindakan yang sesuai.

Kedua, aplikasi harus mencoba mencapai keseimbangan antara efisiensi dan keandalan. Jika memungkinkan untuk melakukannya dengan andal, aplikasi harus secara otomatis menganalisis data pemetaan spasial untuk menghemat waktu pengguna. Ketika tidak dimungkinkan untuk melakukannya dengan andal, aplikasi harus memungkinkan pengguna untuk dengan cepat menyediakan aplikasi dengan informasi tambahan yang diperlukan.

Untuk membantu merancang pengalaman pemindaian yang tepat, pertimbangkan kemungkinan mana yang berlaku untuk aplikasi Anda:

  • Tidak ada pengalaman pemindaian

    • Aplikasi dapat berfungsi dengan sempurna tanpa pengalaman pemindaian terpandu; ini akan belajar tentang permukaan yang diamati dalam perjalanan pergerakan pengguna alami.
    • Misalnya, aplikasi yang memungkinkan pengguna menggambar permukaan dengan cat semprotan holografik hanya memerlukan pengetahuan tentang permukaan yang saat ini terlihat oleh pengguna.
    • Lingkungan mungkin sudah dipindai jika lingkungan adalah salah satu tempat pengguna telah menghabiskan banyak waktu menggunakan HoloLens.
    • Namun perlu diingat bahwa kamera yang digunakan oleh pemetaan spasial hanya dapat melihat 3,1 m di depan pengguna, sehingga pemetaan spasial tidak akan tahu tentang permukaan yang lebih jauh kecuali pengguna telah mengamatinya dari jarak yang lebih dekat di masa lalu.
    • Jadi pengguna memahami permukaan mana yang telah dipindai, aplikasi harus memberikan umpan balik visual untuk efek ini, misalnya mentransmisikan bayangan virtual ke permukaan yang dipindai dapat membantu pengguna menempatkan hologram di permukaan tersebut.
    • Untuk kasus ini, volume pembatas pengamat permukaan spasial harus diperbarui setiap bingkai ke sistem koordinat spasial yang dikunci tubuh, sehingga mereka mengikuti pengguna.
  • Menemukan lokasi yang sesuai

    • Aplikasi dapat dirancang untuk digunakan di lokasi dengan persyaratan tertentu.
    • Misalnya, aplikasi mungkin memerlukan area kosong di sekitar pengguna sehingga mereka dapat dengan aman mempraktikkan kung-fu holografik.
    • Aplikasi harus mengkomunikasikan persyaratan khusus apa pun kepada pengguna di muka, dan memperkuatnya dengan umpan balik visual yang jelas.
    • Dalam contoh ini, aplikasi harus memvisualisasikan sejauh mana area kosong yang diperlukan dan secara visual menyoroti keberadaan objek yang tidak diinginkan dalam zona ini.
    • Untuk kasus ini, volume pembatas pengamat permukaan spasial harus menggunakan sistem koordinat spasial yang terkunci di dunia di lokasi yang dipilih.
  • Menemukan konfigurasi permukaan yang sesuai

    • Aplikasi mungkin memerlukan konfigurasi permukaan tertentu, misalnya dua dinding besar, datar, dan berlawanan untuk membuat aula cermin holografik.
    • Dalam kasus seperti itu, aplikasi perlu menganalisis permukaan yang disediakan oleh pemetaan spasial untuk mendeteksi permukaan yang sesuai, dan mengarahkan pengguna ke arah mereka.
    • Pengguna harus memiliki opsi fallback jika analisis permukaan aplikasi tidak dapat diandalkan. Misalnya, jika aplikasi salah mengidentifikasi pintu sebagai dinding datar, pengguna memerlukan cara sederhana untuk memperbaiki kesalahan ini.
  • Memindai bagian lingkungan

    • Aplikasi mungkin hanya ingin mengambil bagian dari lingkungan, seperti yang diarahkan oleh pengguna.
    • Misalnya, aplikasi memindai bagian dari ruangan sehingga pengguna dapat memposting iklan yang diklasifikasikan holografik untuk furnitur yang ingin mereka jual.
    • Dalam hal ini, aplikasi harus menangkap data pemetaan spasial dalam wilayah yang diamati oleh pengguna selama pemindaian mereka.
  • Pindai seluruh ruangan

    • Aplikasi mungkin memerlukan pemindaian semua permukaan di ruangan saat ini, termasuk yang ada di belakang pengguna.
    • Misalnya, permainan dapat menempatkan pengguna dalam peran Gulliver, di bawah pengepungan dari ratusan Lilliputians kecil yang mendekat dari semua arah.
    • Dalam kasus seperti itu, aplikasi perlu menentukan berapa banyak permukaan di ruangan saat ini yang telah dipindai, dan mengarahkan tatapan pengguna untuk mengisi celah yang signifikan.
    • Kunci untuk proses ini adalah memberikan umpan balik visual yang memperjelas kepada pengguna yang permukaannya belum dipindai. Aplikasi dapat, misalnya, menggunakan kabut berbasis jarak untuk menyoroti wilayah yang tidak tercakup dalam permukaan pemetaan spasial secara visual.
  • Mengambil rekam jepret awal lingkungan

    • Aplikasi mungkin ingin mengabaikan semua perubahan di lingkungan setelah mengambil 'rekam jepret' awal.
    • Ini mungkin sesuai untuk menghindari gangguan data yang dibuat pengguna yang digabungkan erat dengan status awal lingkungan.
    • Dalam hal ini, aplikasi harus membuat salinan data pemetaan spasial dalam keadaan awal setelah pemindaian selesai.
    • Aplikasi harus terus menerima pembaruan untuk data pemetaan spasial jika hologram masih harus dihilangkan dengan benar oleh lingkungan.
    • Pembaruan berkelanjutan untuk data pemetaan spasial juga memungkinkan memvisualisasikan perubahan apa pun yang telah terjadi, mengklarifikasi kepada pengguna perbedaan antara status lingkungan sebelumnya dan saat ini.
  • Mengambil rekam jepret lingkungan yang dimulai pengguna

    • Aplikasi mungkin hanya ingin menanggapi perubahan lingkungan ketika diinstruksikan oleh pengguna.
    • Misalnya, pengguna dapat membuat beberapa 'patung' 3D teman dengan menangkap pose mereka pada saat yang berbeda.
  • Mengizinkan pengguna untuk mengubah lingkungan

    • Aplikasi dapat dirancang untuk merespons secara real time terhadap setiap perubahan yang dilakukan di lingkungan pengguna.
    • Misalnya, pengguna yang menggambar tirai dapat memicu 'perubahan adegan' untuk pemutaran holografik yang berlangsung di sisi lain.
  • Memandu pengguna untuk menghindari kesalahan dalam data pemetaan spasial

    • Aplikasi mungkin ingin memberikan panduan kepada pengguna saat mereka memindai lingkungan mereka.
    • Ini dapat membantu pengguna untuk menghindari jenis kesalahan tertentu dalam data pemetaan spasial, misalnya dengan menjauhi jendela atau cermin yang menyala matahari.

Satu detail tambahan yang perlu diperhatikan adalah bahwa 'rentang' data pemetaan spasial tidak terbatas. Meskipun pemetaan spasial memang membangun database permanen ruang besar, itu hanya membuat data tersebut tersedia untuk aplikasi dalam 'gelembung' dengan ukuran terbatas di sekitar pengguna. Jika Anda mulai dari awal koridor yang panjang dan berjalan cukup jauh dari awal, maka akhirnya permukaan spasial kembali di awal akan hilang. Anda dapat mengurangi ini dengan penembolokan permukaan tersebut di aplikasi Anda setelah menghilang dari data pemetaan spasial yang tersedia.

Pemrosesan jala

Ini dapat membantu mendeteksi jenis kesalahan umum di permukaan dan untuk memfilter, menghapus, atau mengubah data pemetaan spasial sebagaimana mestinya.

Perlu diingat bahwa data pemetaan spasial dimaksudkan untuk setia mungkin ke permukaan dunia nyata, sehingga setiap pemrosesan yang Anda terapkan berisiko menggeser permukaan Anda lebih jauh dari 'kebenaran'.

Berikut adalah beberapa contoh berbagai jenis pemrosesan jala yang mungkin berguna bagi Anda:

  • Pengisian lubang

    • Jika objek kecil yang terbuat dari bahan gelap gagal dipindai, itu akan meninggalkan lubang di permukaan sekitarnya.
    • Lubang mempengaruhi oklusi: hologram dapat dilihat 'melalui' lubang di permukaan dunia nyata yang seharusnya buram.
    • Lubang mempengaruhi raycast: jika Anda menggunakan raycast untuk membantu pengguna berinteraksi dengan permukaan, mungkin tidak diinginkan bagi sinar ini untuk melewati lubang. Salah satu mitigasinya adalah menggunakan bundel beberapa raycast yang mencakup wilayah berukuran tepat. Ini akan memungkinkan Anda untuk memfilter hasil 'outlier', sehingga bahkan jika satu raycast melewati lubang kecil, hasil agregat akan tetap valid. Namun, pendekatan ini datang dengan biaya komputasi.
    • Lubang mempengaruhi tabrakan fisika: objek yang dikendalikan oleh simulasi fisika dapat menjatuhkan melalui lubang di lantai dan menjadi hilang.
    • Dimungkinkan untuk secara algoritma mengisi lubang seperti itu di jala permukaan. Namun, Anda harus menyelaraskan algoritma Anda sehingga 'lubang nyata' seperti jendela dan pintu tidak terisi. Mungkin sulit untuk membedakan 'lubang nyata' dengan 'lubang imajiner' dengan andal, jadi Anda harus bereksperimen dengan heuristik yang berbeda seperti 'ukuran' dan 'bentuk batas'.
  • Penghapusan halusinasi

    • Pantulan, lampu terang, dan benda bergerak dapat membuat 'halusinasi' berlama-larut kecil mengambang di udara.
    • Halusinasi mempengaruhi oklusi: halusinasi mungkin menjadi terlihat sebagai bentuk gelap yang bergerak di depan dan menempati hologram lainnya.
    • Halusinasi memengaruhi raycast: jika Anda menggunakan raycast untuk membantu pengguna berinteraksi dengan permukaan, sinar ini dapat mengenai halusinasi alih-alih permukaan di belakangnya. Seperti halnya lubang, satu mitigasi adalah menggunakan banyak raycast alih-alih satu raycast, tetapi sekali lagi ini akan dikenakan biaya komputasi.
    • Halusinasi mempengaruhi tabrakan fisika: objek yang dikendalikan oleh simulasi fisika mungkin terjebak terhadap halusinasi dan tidak dapat bergerak melalui area ruang yang tampaknya jelas.
    • Dimungkinkan untuk menyaring halusinasi seperti itu dari jala permukaan. Namun, seperti halnya lubang, Anda harus menyelaraskan algoritma Anda sehingga objek kecil nyata seperti dudukan lampu dan handel pintu tidak dilepas.
  • Menghaluskan

    • Pemetaan spasial dapat mengembalikan permukaan yang tampaknya kasar atau 'berisik' dibandingkan dengan rekan-rekan dunia nyata mereka.
    • Kehalusan mempengaruhi tabrakan fisika: jika lantai kasar, bola golf yang disimulasikan secara fisik mungkin tidak bergulir dengan lancar di seberangnya dalam garis lurus.
    • Kehalusan mempengaruhi penyajian: jika permukaan divisualisasikan secara langsung, permukaan kasar normal dapat memengaruhi penampilannya dan mengganggu tampilan 'bersih'. Dimungkinkan untuk mengurangi ini dengan menggunakan pencahayaan dan tekstur yang sesuai di shader yang digunakan untuk merender permukaan.
    • Dimungkinkan untuk memuluskan kekasaran dalam jala permukaan. Namun, ini dapat mendorong permukaan lebih jauh dari permukaan dunia nyata yang sesuai. Mempertahankan korespondensi yang erat penting untuk menghasilkan oklusi hologram yang akurat, dan untuk memungkinkan pengguna mencapai interaksi yang tepat dan dapat diprediksi dengan permukaan holografik.
    • Jika hanya diperlukan perubahan kosmetik, mungkin cukup untuk menghaluskan vertex normal tanpa mengubah posisi puncak.
  • Temuan pesawat

    • Ada banyak bentuk analisis yang mungkin ingin dilakukan aplikasi pada permukaan yang disediakan oleh pemetaan spasial.
    • Salah satu contoh sederhananya adalah 'temuan pesawat'; mengidentifikasi wilayah permukaan yang terikat dan sebagian besar planar.
    • Wilayah planar dapat digunakan sebagai permukaan kerja holografik, wilayah tempat konten holografik dapat ditempatkan secara otomatis oleh aplikasi.
    • Wilayah planar dapat membatasi antarmuka pengguna, untuk memandu pengguna berinteraksi dengan permukaan yang paling sesuai dengan kebutuhan mereka.
    • Wilayah planar dapat digunakan seperti di dunia nyata, untuk rekan holografik ke objek fungsi seperti layar LCD, tabel, atau papan tulis.
    • Wilayah planar dapat menentukan area bermain, membentuk dasar tingkat video game.
    • Wilayah planar dapat membantu agen virtual untuk menavigasi dunia nyata, dengan mengidentifikasi area lantai yang mungkin dilalui orang-orang nyata.

Pembuatan prototipe dan penelusuran kesalahan

Alat yang berguna

  • Emulator HoloLens dapat digunakan untuk mengembangkan aplikasi menggunakan pemetaan spasial tanpa akses ke HoloLens fisik. Ini memungkinkan Anda untuk mensimulasikan sesi langsung pada HoloLens di lingkungan yang realistis, dengan semua data yang biasanya digunakan aplikasi Anda, termasuk gerakan HoloLens, sistem koordinat spasial, dan jala pemetaan spasial. Ini dapat digunakan untuk memberikan input yang andal dan dapat diulang, yang dapat berguna untuk men-debug masalah dan mengevaluasi perubahan pada kode Anda.
  • Untuk mereproduksi skenario, ambil data pemetaan spasial melalui jaringan dari HoloLens langsung, lalu simpan ke disk dan gunakan kembali di sesi penelusuran kesalahan nanti.
  • Tampilan 3D portal perangkat Windows menyediakan cara untuk melihat semua permukaan spasial yang saat ini tersedia melalui sistem pemetaan spasial. Ini memberikan dasar perbandingan untuk permukaan spasial di dalam aplikasi Anda; misalnya, Anda dapat dengan mudah mengetahui apakah ada permukaan spasial yang hilang atau ditampilkan di tempat yang salah.

Panduan prototipe umum

  • Karena kesalahan dalam data pemetaan spasial dapat sangat memengaruhi pengalaman pengguna Anda, kami sarankan Anda menguji aplikasi Anda di berbagai lingkungan.
  • Jangan terjebak dalam kebiasaan selalu menguji di lokasi yang sama, misalnya di meja Anda. Pastikan untuk menguji berbagai permukaan dari berbagai posisi, bentuk, ukuran, dan bahan yang berbeda.
  • Demikian pula, meskipun data sintetis atau yang direkam dapat berguna untuk penelusuran kesalahan, jangan terlalu bergantung pada beberapa kasus pengujian yang sama. Ini mungkin menunda menemukan masalah penting yang akan ditangkap pengujian yang lebih bervariasi sebelumnya.
  • Ada baiknya untuk melakukan pengujian dengan pengguna nyata (dan idealnya tidak dijangkau), karena mereka mungkin tidak menggunakan HoloLens atau aplikasi Anda dengan cara yang sama persis seperti yang Anda lakukan. Bahkan, mungkin mengejutkan Anda betapa berbedanya perilaku, pengetahuan, dan asumsi orang!

Pemecahan Masalah

  • Agar jala permukaan dapat diorientasikan dengan benar, setiap GameObject harus aktif sebelum dikirim ke SurfaceObserver agar jalanya dibangun. Jika tidak, jala akan muncul di ruang Anda tetapi diputar pada sudut aneh.
  • GameObject yang menjalankan skrip yang berkomunikasi dengan SurfaceObserver perlu diatur ke asal. Jika tidak, semua GameObjects yang Anda buat dan kirim ke SurfaceObserver untuk membangun jala mereka akan memiliki offset yang sama dengan offset Objek Permainan Induk. Ini dapat membuat jala Anda muncul beberapa meter jauhnya, yang membuatnya sulit untuk men-debug apa yang sedang terjadi.

Lihat juga