ARKit: Bagaimana Mengesan, Melacak & Paparkan Video dengan Alpha di atas Plag Imej

Imej yang diiktiraf dan video dipaparkan dalam Realiti Semula.

Mendeteksi dan memaparkan video di atas imej menggunakan ARKit boleh menjadi rumit ketika pertama mula berkembang. Panduan ini bertujuan untuk membantu pembina dengan cepat mencapainya dengan menggunakan ARKit dan menggabungkan projek sampel pengenalan imej Apple bersama-sama dengan beberapa baris kod tersuai.

Pertama sekali, untuk melaksanakan ARKit kita mesti menambah papan cerita dengan ARSCNView. Adegan ini akan bertanggungjawab menggunakan kamera untuk menjejaki dunia sebenar di sekeliling pengguna. Juga folder aset AR ARP mesti ditambah untuk menyimpan semua imej yang akan dikesan dan dijejaki.

Pelacakan Imej

Adalah penting untuk menambah imej yang anda mahu untuk mengesan dalam folder AR Resources projek kami:

Nota: imej yang diiktiraf juga boleh didapati dari api dan dibuat secara pemrograman.
Imej folder Sumber AR

Dalam ViewController kami, kami mesti menambah rujukan kepada ARSCNView dan memohon perwakilan di viewDidLoad dan kami juga mesti menambah aksesor untuk sesi pemandangan.

Di viewDidAppear kami, kami mesti menambah kaedah ResetTracking:

Kaedah resetTracking bertanggungjawab untuk:

  • Memulakan ARSession
  • Menetapkan konfigurasi ARSession
  • Memberitahu ARSession yang diketahui imej akan dijejaki

Apabila mana-mana imej yang ditambahkan ke folder AR Resources dikesan semasa menggunakan kamera peranti, ARSCNView memanggil perwakilan berikut:

Perwakilan memegang maklumat tentang imej yang dikesan di dalam jangkar dan setelah dikesan, ia menunjukkan nama imej yang dikesan:

Imej sumber AR dikesan.

Memaparkan video di atas satah imej yang dikesan

Kita sudah dapat mengesan imej dengan kod itu. Kini ideanya adalah untuk memaparkan video di atas imej. Perhatikan delegasi di mana kami sudah mendapat imej yang dikesan:

Idea ini adalah untuk menambah kaedah paparan Video di dalam pembantu dengan lulus tiga parameter:

  • imej rujukan yang dikesan
  • nod itu
  • video yang akan ditunjukkan

Kaedah paparan Video di dalam VideoHelper bertanggungjawab memaparkan video. Pada dasarnya ia melakukan perkara-perkara berikut:

  1. Dapatkan lebar fizikal dan ketinggian imej rujukan
  2. Buat nod untuk memegang pemain video
  3. Buat pemain video
  4. Tambahkan nod yang memegang pemain video ke nod yang dikesan asal
  5. Tetapkan nod video

Kaedah setupVideoOnNode bertanggungjawab untuk menyiapkan video di dalam pesawat pemegang video:

  1. Buat videoPlayer
  2. Buat SKVideoNode dengan videoPlayer memegang video
  3. Buat spriteKitScene untuk meletakkan video di dalamnya
  4. Tambah ketelusan alpha
  5. Memainkan video
  6. Gelung video

Ketelusan alpha video

Perhatikan bahawa getAlphaShader ditambah oleh pembantu EffectNodeHelper kelas yang bertanggungjawab menggunakan SKShader. Objek SKShader memegang shader pecahan OpenGL ES, yang digunakan untuk menyesuaikan kelakuan lukisan pelbagai jenis nod. Dalam kes ini, alpha digunakan.

Hierarki nod digambarkan.

Keputusan

Akibatnya, apabila imej yang dikenali dapat mengesan video dengan transparansi alpha ditunjukkan di atas pesawat yang dikesan.

Video dengan ketelusan alfa dipaparkan di atas imej yang diiktiraf.

Adalah penting untuk menyebut bahawa imej perlu mempunyai mata rujukan yang baik dan kontras untuk berfungsi dengan penjejakan imej dalam iOS12.

Projek demo tersedia di sini. Ia pada asasnya adalah projek sampel pengimejan imej dari epal dengan beberapa perubahan untuk menambah video di atas imej.

Sumber berguna

  • Penjejakan imej dengan ARKit 2.0
  • Pengenalan kepada Pelacakan Imej ARKit 2
  • Memainkan video dalam Reality Augmented menggunakan ARKit

Adakah anda tahu apa-apa cadangan? Tinggalkan komen! Kami sangat menghargainya.

Liga Utama adalah agensi Pengkomputeran dan Sourcing oleh Lateral View.