Panduan khusus platform
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Mesin Unreal
Bagian penting untuk menciptakan pengalaman AR yang realistis adalah mendapatkan pencahayaan yang tepat. Jika objek virtual tidak memiliki bayangan atau memiliki bahan mengkilap yang tidak mencerminkan ruang di sekitarnya, pengguna dapat merasakan bahwa objek tersebut tidak cukup pas, meskipun mereka tidak dapat menjelaskan alasannya. Hal ini karena manusia secara tidak sadar merasakan isyarat tentang bagaimana objek diterangi di lingkungan mereka. Lighting Estimation API menganalisis gambar yang diberikan untuk mendapatkan petunjuk tersebut, yang memberikan informasi mendetail tentang pencahayaan dalam sebuah scene. Kemudian, Anda dapat menggunakan informasi ini saat merender objek virtual untuk meneranginya dalam kondisi yang sama dengan tampilan tempat objek tersebut ditempatkan, sehingga pengguna tetap terhubung dan berinteraksi.
Isyarat pencahayaan
Lighting Estimation API memberikan data mendetail yang memungkinkan Anda meniru berbagai isyarat pencahayaan saat merender objek virtual. Isyarat ini adalah bayangan, cahaya sekitar, bayangan, sorotan spekular, dan pantulan.
Bayangan
Bayangan sering kali bersifat terarah dan memberi tahu penonton dari mana sumber cahaya berasal.
Lampu ruangan
Cahaya sekitar adalah cahaya difus keseluruhan yang berasal dari sekitar lingkungan, sehingga semuanya terlihat.
Warna
Bayangan adalah intensitas cahaya. Misalnya, bagian yang berbeda dari objek yang sama dapat memiliki tingkat bayangan yang berbeda dalam tampilan yang sama, bergantung pada sudut relatif terhadap penampil dan kedekatannya dengan sumber cahaya.
Sorotan spekular
Sorotan spekular adalah bagian permukaan yang mengkilap yang memantulkan sumber cahaya secara langsung. Sorotan pada sebuah objek berubah sesuai dengan posisi penonton dalam sebuah adegan.
Refleksi
Cahaya memantul dari permukaan secara berbeda, bergantung pada apakah permukaan memiliki properti spekular (sangat reflektif) atau difus (tidak reflektif). Misalnya, bola metalik akan sangat spekular dan memantulkan lingkungannya, sedangkan bola lain yang dicat abu-abu matte kusam akan menjadi difus. Sebagian besar benda di dunia nyata memiliki kombinasi dari ketiga sifat ini — bola boling teracak atau kartu kredit yang sering digunakan.
Permukaan reflektif juga mengambil warna dari lingkungan sekitar. Warna objek dapat langsung dipengaruhi oleh warna lingkungannya. Misalnya, bola putih di ruangan biru akan memiliki nuansa kebiruan.
Mode HDR lingkungan
Mode ini terdiri dari API terpisah yang memungkinkan estimasi pencahayaan terperinci dan realistis untuk pencahayaan terarah, bayangan, sorotan spekular, dan pantulan.
Mode Environmental HDR menggunakan machine learning untuk menganalisis gambar kamera secara real time dan menyintesis pencahayaan lingkungan untuk mendukung rendering objek virtual yang realistis.
Mode estimasi pencahayaan ini memberikan:
Lampu arah utama. Menampilkan sumber cahaya utama. Dapat digunakan untuk membuat bayangan.
Harmonik sferis sekitar. Merepresentasikan sisa energi cahaya sekitar di tampilan.
Cubemap HDR. Dapat digunakan untuk merender refleksi pada objek logam yang mengkilap.
Anda dapat menggunakan API ini dalam berbagai kombinasi, tetapi API ini dirancang untuk digunakan bersama untuk mendapatkan efek yang paling realistis.
Lampu arah utama
API cahaya terarah utama menghitung arah dan intensitas sumber cahaya utama tampilan. Informasi ini memungkinkan objek virtual di tampilan Anda menampilkan sorotan specular yang diposisikan secara wajar, dan untuk memunculkan bayangan ke arah yang konsisten dengan objek nyata lainnya yang terlihat.
Untuk melihat cara kerjanya, pertimbangkan dua gambar roket virtual yang sama ini. Pada gambar di sebelah kiri, ada bayangan di bawah roket, tetapi arahnya tidak cocok dengan bayangan lain dalam tampilan. Pada roket di sebelah kanan, bayangan mengarah ke arah yang benar. Perbedaan ini kecil, tetapi penting, dan membuat roket terlihat lebih nyata di dalam gambar karena arah dan intensitas bayangannya lebih cocok dengan bayangan lain di dalam gambar.
Saat sumber cahaya utama atau objek bercahaya sedang bergerak, sorotan spekuler pada objek akan menyesuaikan posisinya secara real time sesuai dengan sumber cahaya.
Bayangan terarah juga menyesuaikan panjang dan arahnya relatif terhadap posisi sumber cahaya utama, seperti yang dilakukan di dunia nyata. Untuk menggambarkan efek ini, pertimbangkan dua manekin ini, yang satu virtual dan yang lainnya sungguhan. Manekin di sebelah kiri adalah manekin virtual.
Harmonik sferis sekitar
Selain energi cahaya dalam cahaya terarah utama, ARCore menyediakan harmonik sfera, yang mewakili keseluruhan cahaya sekitar yang masuk dari semua arah dalam tampilan. Gunakan informasi ini selama rendering untuk menambahkan petunjuk halus yang memunculkan definisi objek virtual.
Pertimbangkan dua gambar model roket yang sama ini. Roket di sebelah kiri dirender menggunakan informasi estimasi pencahayaan yang terdeteksi oleh API cahaya terarah utama. Roket di sebelah kanan dirender menggunakan informasi yang terdeteksi oleh API cahaya arah utama dan harmoni sferis ambient. Roket kedua jelas memiliki lebih banyak definisi visual, dan menyatu dengan lebih lancar ke dalam tampilan.
Cubemap HDR
Gunakan cubemap HDR untuk merender refleksi yang realistis pada objek virtual dengan kilau sedang hingga tinggi, seperti permukaan logam yang mengkilap. Cubemap juga memengaruhi bayangan dan tampilan objek. Misalnya, materi objek spekular yang dikelilingi oleh lingkungan biru akan memantulkan nuansa biru. Menghitung cubemap HDR memerlukan komputasi CPU tambahan dalam jumlah kecil.
Apakah Anda harus menggunakan cubemap HDR bergantung pada cara objek memantulkan lingkungannya. Karena terbuat dari logam, roket virtual memiliki komponen spekular yang kuat yang secara langsung mencerminkan lingkungan di sekitarnya. Dengan demikian, cubemap akan mendapatkan manfaat. Di sisi lain, objek virtual dengan bahan matte abu-abu pudar tidak memiliki komponen spekular sama sekali. Warnanya terutama bergantung pada komponen difus, dan tidak akan mendapatkan manfaat dari cubemap.
Ketiga Environmental HDR API digunakan untuk merender roket di bawah. Peta kubus HDR memungkinkan isyarat reflektif dan penandaan lebih lanjut yang menempatkan objek sepenuhnya di dalam tampilan.
Berikut adalah model roket yang sama di lingkungan dengan pencahayaan yang berbeda. Semua tampilan ini dirender menggunakan informasi dari ketiga API, dengan bayangan terarah yang diterapkan.
Mode Intensitas Standby
Mode Intensitas Standby menentukan intensitas piksel rata-rata dan skalar koreksi warna untuk gambar tertentu. Ini adalah setelan kasar yang dirancang untuk kasus penggunaan saat pencahayaan yang tepat tidak penting, seperti objek yang memiliki pencahayaan bawaan.
Intensitas piksel
Merekam intensitas piksel rata-rata pencahayaan dalam sebuah adegan. Anda dapat menerapkan pencahayaan ini ke seluruh objek virtual.
Warna
Mendeteksi white balance untuk setiap frame. Kemudian, Anda dapat mengoreksi warna objek virtual agar terintegrasi dengan lebih lancar ke dalam keseluruhan pewarnaan tampilan.
Pemeriksaan lingkungan
Pemeriksaan lingkungan mengatur tampilan kamera 360 derajat ke dalam tekstur lingkungan seperti peta kubus. Tekstur ini kemudian dapat digunakan untuk menerangi objek virtual secara realistis, seperti bola logam virtual yang “mencerminkan” ruangan tempatnya berada.