ARKit: Kako zaznati, slediti in prikazati video z alfa na vrhu slikovne ravnine

Slika se prepozna in video se prikaže v razširjeni resničnosti.

Zaznavanje in prikazovanje videoposnetka na vrhu slike s pomočjo ARKita je lahko težavno, ko se najprej začnete razvijati. Namen tega priročnika je, da razvijalcem hitro pomagajo pri doseganju ARKit-a in mešanju vzorčnega projekta za prepoznavanje slik Apple, skupaj z nekaj vrsticami po meri.

Najprej moramo za implementacijo ARKit-a dodati zgodbe z ARSCNView. Ta prizor bo zadolžen za uporabo kamere za sledenje resničnemu svetu okoli uporabnika. Za shranjevanje vseh slik, ki jih bomo zaznali in spremljali, je treba dodati tudi mapo sredstev AR.

Sledenje sliki

Pomembno je, da slike, ki jih želite zaznati, dodate v mapo AR Resources v našem projektu:

Opomba: slike, ki jih je treba prepoznati, je mogoče dobiti tudi iz api-ja in jih ustvariti programsko.
Slike mape virov AR

V našem ViewController moramo dodati referenco na ARSCNView in uporabiti delegate v viewDidLoad in dodati moramo tudi dostop za sejo sceneView.

V našem pogleduDidAppear moramo dodati način ponastavitve sledenja:

Način resetTracking je zadolžen za:

  • Zagon ARSession
  • Nastavitev konfiguracije ARSession
  • Povedati ARSession, katere znane slike bodo sledile

Ko je med uporabo kamere kamere zaznana katera od slik, dodanih v mapo AR Resources, ARSCNView pokliče naslednjega delegata:

Pooblaščenec hrani podatke o zaznani sliki znotraj sidra in ko ga zazna, pokaže zaznano ime slike:

Zaznana je bila slika virov AR.

Prikazovanje videoposnetka na zaznani ravnini slike

S to kodo že lahko zaznamo sliko. Zdaj je ideja prikazati videoposnetek na vrhu slike. Oglejte si delegat, kjer že dobimo zaznano sliko:

Ideja je, da dodate displayVideo metodo v pomočnika tako, da vnesete tri parametre:

  • odkrita referenčna slika
  • vozlišče
  • video, ki bo prikazan

Za prikaz videoposnetka je zadolžena metoda displayVideo znotraj VideoHelperja. V bistvu naredi naslednje:

  1. Pridobite fizično širino in višino referenčne slike
  2. Ustvari vozlišče, ki bo imelo video predvajalnik
  3. Ustvarite video predvajalnik
  4. V prvotno zaznano vozlišče dodajte vozlišče, ki drži video predvajalnik
  5. Nastavite video vozlišče

Metoda setupVideoOnNode je zadolžena za nastavitev videoposnetka znotraj ravnine imetnika videoposnetka:

  1. Ustvari video predvajalnik
  2. Ustvarite SKVideoNode z videoPlayerjem, ki drži video
  3. Ustvarite spriteKitScene, da namestite video v notranjost
  4. Dodajte alfa prozornost
  5. Predvajanje videoposnetka
  6. Zankanje videa

Transparentnost video alfa

Upoštevajte, da getAlphaShader doda pomočniški razred EffectNodeHelper, ki je zadolžen za uporabo SKShaderja. Objekt SKShader ima prilagojen senzor fragmentov OpenGL ES, ki se uporablja za prilagajanje vedenja risanja različnih različnih vrst vozlišč. V tem primeru se uporabi alfa.

Hierarhija vozlišč je prikazana.

Rezultat

Ko se zazna prepoznavna slika, se na vrhu zaznane ravnine prikaže video z alfa preglednostjo.

Video s transparentnostjo alfa se prikaže na vrhu prepoznane slike.

Pomembno je omeniti, da morajo imeti slike dobre referenčne točke in kontraste, da lahko delujejo s sledenjem slike v iOS12.

Demo projekt je na voljo tukaj. V bistvu je vzorčni projekt prepoznavalca slike iz jabolka z nekaj spremembami, da dodate video na vrh slike.

Koristni viri

  • Sledenje slik z ARKit 2.0
  • Uvod v sledenje slik ARKit 2
  • Predvajanje videoposnetkov v razširjeni resničnosti z uporabo ARKita

Ali poznate kakšne predloge? Pustite komentar! Res cenimo.

Major League je agencija za bočno osebje in kadre, ki jih ponuja Lateral View.