ARKit: Kako otkriti, pratiti i prikazivati ​​videozapis sa Alfa na vrhu ravnine slike

Prepoznavanje slika i prikaz videozapisa u načinu proširene stvarnosti.

Otkrivanje i prikazivanje videozapisa na vrhu slike pomoću ARKita može biti teško kad se prvo počne razvijati. Ovaj je vodič namijenjen brzom pomoći programerima da ga postignu korištenjem ARKita i miješanjem Appleovog uzorka prepoznavanja slika zajedno s nekoliko prilagođenih linija kodova.

Prije svega, za implementaciju ARKita moramo dodati ploču s knjigama s ARSCNView. Ovaj će prizor biti zadužen za korištenje kamere za praćenje stvarnog svijeta oko korisnika. Također se mora dodati mapa resursa AR resursa za spremanje svih slika koje će se otkriti i pratiti.

Praćenje slike

Važno je dodati slike koje želite detektirati u mapu AR Resources našeg projekta:

Napomena: slike koje se prepoznaju također se mogu dobiti iz api-ja i kreirati programski.
Slike mape AR Resources

U našem ViewController moramo dodati referencu na ARSCNView i primijeniti delegate u viewDidLoad, a moramo dodati i pristupnik sesiji sceneView.

U našem viewDidAppear moramo dodati način resetiranja praćenja:

Metoda resetiranja praćenja zadužena je za:

  • Pokretanje ARSesije
  • Postavljanje ARSession konfiguracije
  • Rekao ARSessionu koje će se poznate slike pratiti

Kad se bilo koja od slika dodanih u mapu AR resursa otkriva tijekom korištenja kamere uređaja, ARSCNView poziva sljedećeg delegata:

Delegat čuva podatke o otkrivenoj slici unutar sidra i nakon što je otkriven, pokazuje detektirano ime slike:

Otkrivena je slika resursa AR.

Prikazivanje videozapisa na otkrivenoj ravnini slike

Već možemo otkriti sliku s tim kodom. Ideja je sada prikazati videozapis na vrhu slike. Pogledajte delegata gdje već imamo otkrivenu sliku:

Ideja je dodati displayVideo metodu unutar pomagača prolaskom tri parametra:

  • otkrivena referentna slika
  • čvor
  • videozapis koji će se prikazati

Metoda displayVideo unutar VideoHelper je zadužena za prikaz videa. U osnovi to čini sljedeće:

  1. Dobijte fizičku širinu i visinu referentne slike
  2. Napravite čvor za držanje videoplayera
  3. Stvorite video player
  4. Dodajte čvor koji drži videoplayer u izvornom otkrivenom čvoru
  5. Postavljanje video čvora

Metoda setupVideoOnNode zadužena je za postavljanje videozapisa unutar ravnine držača videozapisa:

  1. Napravite videoplayer
  2. Stvorite SKVideoNode pomoću videoplayera koji drži video
  3. Napravite spriteKitScene za pozicioniranje videozapisa u nju
  4. Dodajte alfa prozirnost
  5. Reprodukcija videozapisa
  6. Zamicanje videozapisa

Transparentnost videozapisa

Primijetite da getAlphaShader dodaje klasa pomoćnika EffectNodeHelper koja je zadužena za primjenu SKShadera. SKShader objekt sadrži prilagođeni sjedeći fragment OpenGL ES koji se koristi za prilagođavanje ponašanja crtanja mnogih različitih vrsta čvorova. U ovom se slučaju primjenjuje alfa.

Ilustrirana je hijerarhija čvorova.

Proizlaziti

Kao rezultat toga, kada se otkrije prepoznatljiva slika, videozapis s alfa prozirnošću prikazuje se na otkrivenoj ravnini.

Video s transparentnošću alfa prikazuje se na vrhu prepoznate slike.

Važno je napomenuti da slike moraju imati dobre referentne točke i kontraste kako bi mogle raditi s praćenjem slika u iOS12.

Demo projekt je dostupan ovdje. To je u osnovi projekt uzorka prepoznavatelja slike iz jabuke, a neke izmjene dodaju videozapis na vrh slike.

Korisni resursi

  • Praćenje slike s ARKit 2.0
  • Uvod u praćenje slike ARKit 2
  • Reprodukcija videozapisa u proširenoj stvarnosti pomoću ARKita

Znate li kakav prijedlog? Ostavite komentar! Zaista cijenimo.

Major League je agencija za osoblje i potragu od strane kompanije Lateral View.