Preskoči na sadržaj
FORTRONIQ
IzbornikDigitalni sadržajiProširena stvarnost3. Razvoj okruženja proširene stvarnosti3.1 Izrada softverskih segmenata tehnologije proširene stvarnosti

MODUL 3 · RAZVOJ OKRUŽENJA PROŠIRENE STVARNOSTI

Nastavna jedinica 3.1

Izrada softverskih segmenata tehnologije proširene stvarnosti

Programski dio okruženja proširene stvarnosti ne nastaje pisanjem koda nego slaganjem scene. Prvo se bira razvojno okruženje i okvir koji prati prostor, zatim se postavlja projekt, uvoze model i materijali te se objekti slože u stablo s kamerom i izvorima svjetla. Tek na to dolaze sastavnice i skripte koje sceni daju ponašanje.

Moći ću:
  • odabrati razvojno okruženje i okvir prema zahtjevima primjene
  • postaviti projekt s ispravnim mjernim jedinicama i ciljnom platformom
  • uvesti model i materijale te provjeriti mjerilo i ishodište
  • složiti scenu s kamerom, izvorima svjetla i hijerarhijom objekata
  • objasniti ulogu sastavnica i skripti u ponašanju scene
  • procijeniti opterećenje prikaza prema broju trokuta i vrsti uređaja

Od zahtjeva do projekta

Programski dio okruženja proširene stvarnosti obično se naziva softverskim segmentom. Taj segment nije jedan program nego pet poslova koji rade zajedno: praćenje prostora, prikaz sadržaja, logika zadatka, korisničko sučelje i veza s podacima. Ako bilo koji od njih zakaže, korisnik to vidi kao istu pogrešku — uputa nije na mjestu ili je nema.

Posao počinje zahtjevom, ne programom. Za projekt AR-1 zahtjev glasi: tehničar tabletom snimi natpisnu pločicu na ogradi ćelije paletizacije i dobije osam koraka zamjene prihvatnice na robotu ZR-1. Robot ima šest osi, nosivost 20 kg i doseg 1650 mm, a u ćeliji radi uz CNC glodalicu. Iz te jedne rečenice slijedi gotovo sve ostalo: potrebna je meta, potreban je model prihvatnice, potrebno je osam koraka s prelaskom naprijed i natrag te uređaj koji se može nositi u pogon.

Prije otvaranja projekta korisno je napisati popis onoga što scena mora sadržavati. Za AR-1 taj popis ima šest stavki: meta, model prihvatnice, osam ploča s uputom, strelice koje pokazuju mjesto zahvata, gumbi za kretanje po koracima i zapis o dovršenom poslu. Popis je kratak, ali svaka stavka poslije postaje objekt u sceni, pa se time dobiva i prva gruba građa projekta.

Posao softverskog segmentaŠto obavljaNa projektu AR-1
Praćenje prostoraodređuje gdje je uređaj i što je prepoznaoprepoznavanje natpisne pločice i ploha ograde
Prikaz sadržajaiscrtava modele, tekst i oznake u vidnom poljumodel prihvatnice i ploče s uputom
Logika zadatkavodi redoslijed i stanjaosam koraka, naprijed, natrag, dovršeno
Korisničko sučeljeprima naredbe i daje povratnu obavijestgumbi, natpisi, poruka o gubitku praćenja
Veza s podacimadohvaća i šalje podatke izvan aplikacijeoznaka ćelije, potvrda o obavljenom zahvatu

Ovih pet poslova nisu zasebne aplikacije nego slojevi iste aplikacije. U razvojnom okruženju oni se vide kao skupine objekata u sceni i skripte koje su im pridružene. Zato se i redoslijed rada drži tog rasporeda: prvo praćenje i prikaz, pa logika, pa sučelje, a veza s podacima na kraju.

Odabir razvojnog okruženja i okvira

Za izradu treba dvoje. Razvojno okruženje (engine) je program u kojem se slaže scena, uvoze modeli, postavljaju materijali i pokreće izgradnja aplikacije. Okvir za proširenu stvarnost (AR framework) je programski sloj koji od kamere i inercijskih osjetnika uređaja daje položaj uređaja u prostoru, popis prepoznatih ploha i obavijest da je meta pronađena.

Okvir dolazi od proizvođača operacijskog sustava ili od proizvođača naočala. Razvojno okruženje ga ne zamjenjuje nego mu pristupa preko svojeg paketa. Zbog toga vrijedi pravilo koje početnici često previde: mogućnosti okruženja ne znače ništa ako ih okvir na odabranom uređaju ne podržava. Ako uređaj nema dubinski osjetnik, zaklanjanje digitalnog objekta stvarnim predmetom neće raditi ma koliko dobar bio program.

Između okruženja i okvira često stoji i međusloj (middleware), paket koji istu scenu prevodi za više okvira. Prednost je da se isti projekt izgradi i za tablet i za naočale. Cijena je jedan sloj više, sporija dijagnostika pogrešaka i kašnjenje za novim mogućnostima okvira.

Mjerilo pri odabiruPitanje koje se postavljaOdluka na AR-1
Ciljni uređajradi li okvir na tabletu, na naočalama ili na obomatablet kao glavni uređaj, naočale kao druga inačica
Vrsta prepoznavanjatreba li meta, ploha ili obojemeta na ogradi, ploha poda za odlaganje modela
Rad s 3D modelimakoje formate uvozi i kako obrađuje materijaleglTF s teksturama 1024 × 1024
Sučeljeima li gotove sastavnice za prostorne ploče i gumbeploče s uputom i gumbi naprijed i natrag
Izgradnjakoliko traje i koliko je koraka do instalacijeizgradnja za Android, poslije za naočale
Znanje ekipeu čemu su članovi već radiliokruženje poznato iz prijašnjih vježbi

Zapamtite

Prvo se bira uređaj, pa okvir, pa razvojno okruženje — a ne obrnuto. Odabir okruženja prije uređaja redovito završi otkrićem da tražena mogućnost na uređaju ne postoji, i to tek pri prvoj izgradnji, kad je scena već složena.

Postavke projekta

Novi projekt ne počinje objektima nego postavkama. Prva i najvažnija je mjerna jedinica. U okruženjima za proširenu stvarnost jedna jedinica scene odgovara jednom metru stvarnog prostora. Ako je model izvezen u milimetrima, prihvatnica duljine 180 mm pojavit će se kao predmet od 180 metara. Zato se mjerilo provjerava odmah, na prvom uvezenom modelu.

Druga postavka je ciljna platforma. Ona određuje kako se scena prevodi, koje su najveće dopuštene veličine tekstura i koje se knjižnice uključuju u paket. Za AR-1 ciljna je platforma Android, jer je uređaj A tablet od 10,5 inča s 6 GB radne memorije i kamerom 1920 × 1080 pri 30 sličica u sekundi.

Treća skupina postavki odnosi se na prikaz: način osvjetljenja, razina zaglađivanja rubova, sjene i najveći broj sličica u sekundi. Na mobilnom uređaju te postavke izravno određuju hoće li aplikacija dosegnuti cilj od 30 sličica u sekundi. Sjene u stvarnom vremenu i visoko zaglađivanje najčešće su prvo što se isključi kad prikaz ne stigne.

Četvrta skupina je red u projektu. Mape se imenuju unaprijed — modeli, materijali, teksture, skripte, scene, zvuk — a nazivi datoteka dobivaju oznaku projekta. Projekt se od prvog dana vodi u sustavu za praćenje inačica, jer se scena mijenja svaki dan, a povratak na prethodno stanje inače nije moguć.

AR-1/
  modeli/      prihvatnica.gltf   (12 000 trokuta)
  teksture/    prihvatnica_boja_1024.png
  skripte/     UpraviteljKoraka, PratiteljMete
  scene/       glavna.scena
  postavke/    jedinica = 1 m, platforma = Android

Pažnja

Postavke prikaza i mjerne jedinice mijenjaju se na početku, dok je scena prazna. Promjena mjerila kad je u sceni već pedeset objekata znači ručno ispravljanje svakoga od njih, jer se položaji ne skaliraju sami.

Uvoz modela i materijala

Model prihvatnice dolazi iz prvog modula, pripremljen za prikaz u stvarnom vremenu: 12 000 trokuta, teksture 1024 × 1024, zapis glTF sa sažimanjem, ukupno 2,1 MB. Uvoz se ne svodi na povlačenje datoteke u projekt. Nakon uvoza provjeravaju se četiri stvari: mjerilo, ishodište, orijentacija i materijali.

Mjerilo se provjerava usporedbom s poznatom mjerom. U scenu se postavi kocka stranice 0,1 m i uz nju model; ako je prihvatnica približno dvostruko dulja od kocke, mjerilo je ispravno. Ishodište mora biti na mjestu kojim se model prislanja uz stvarni predmet — kod prihvatnice je to prirubnica, a ne središte obuhvatnog kvadra.

Orijentacija se usklađuje s okruženjem, jer se programi razlikuju po tome koja je os okomita. Model uvezen iz programa u kojem je okomita os Z u okruženju s okomitom osi Y pojavljuje se položen. Ispravak se radi jednom, pri uvozu, a ne rotacijom u sceni pri svakom postavljanju.

Materijali se pri uvozu često izgube ili zamijene zamjenskim materijalom. Teksturu treba provjeriti na uređaju, ne samo na zaslonu računala: zaslon tableta u pogonu ima drukčiju svjetlinu, a ono što na monitoru izgleda kao jasna razlika dviju nijansi na suncu se stopi.

Što se provjerava pri uvozuKako se provjeravaVrijednost na AR-1
Mjerilousporedba s kockom poznate straniceduljina prihvatnice 180 mm
Ishodištepostavljanje modela u ishodište scenena prirubnici prihvatnice
Orijentacijapogled odozgo i sa straneokomita os Y, prirubnica prema gore
Broj trokutapodatak o mreži u prozoru uvoza12 000
Teksturepregled u sceni i na uređaju1024 × 1024, jedan skup
Veličina zapisapodatak o datoteci2,1 MB sa sažimanjem

Građa scene: kamera, svjetlo i hijerarhija

Scena u proširenoj stvarnosti razlikuje se od obične 3D scene po jednoj stvari: kamera nije slobodna. Kamera proširene stvarnosti vezana je uz uređaj, a njezin položaj računa okvir iz slike i osjetnika. Programer je ne pomiče; pomiče je korisnik kad se kreće po pogonu. Zbog toga se sadržaj ne postavlja prema kameri nego prema sidru.

Izvori svjetla postoje i dalje, ali im je uloga drukčija. Cilj nije osvijetliti prostor — prostor je stvaran i već je osvijetljen — nego model uklopiti u zatečeno osvjetljenje. Zato se najčešće koristi jedan usmjereni izvor i blago ambijentno svjetlo, a moderni okviri procjenjuju jakost i smjer stvarnog svjetla iz slike kamere pa te vrijednosti prenose u scenu.

Objekti se slažu u stablo. Roditelj nosi dijete: kad se pomakne roditelj, pomiče se i dijete. U proširenoj stvarnosti to je ključno jer se sve što mora ostati na mjestu objesi ispod sidra. Model prihvatnice, ploče s uputom i strelice djeca su istog sidra, pa ih ispravak položaja sidra pomiče zajedno.

Projekt AR-1ScenaAR kameravodi je uređajizvor svjetlausmjeren + ambijentniupravitelj koraka8 korakasidro mete90 × 50 mmmodelprihvatnicepločes uputomstrelicezahvatauvoz: glTF 2,1 MB, 12 000 trokutateksture 1024 × 1024sve ispod sidra pomiče se zajednos ispravkom položaja sidra
Slika 3.1 — Hijerarhija scene projekta AR-1: ispod scene stoje kamera, izvor svjetla, upravitelj koraka i sidro mete, a ispod sidra sav sadržaj koji mora ostati na mjestu.

Uz stablo ide i red u imenima. Objekt nazvan Kocka (3) nakon dva tjedna nitko ne zna čemu služi. Nazivi se sastavljaju od uloge i broja: Korak_03_Ploca, Korak_03_Strelica. Time se dobiva i mogućnost da skripta objekte pronalazi po nazivu, pa se osam koraka ne mora ručno povezivati.

Sastavnice i skripte

Objekt sam po sebi ne radi ništa. Ponašanje mu daju sastavnice (components), dijelovi koji se objektu pridružuju i svaki mu dodaju jedno svojstvo: položaj i mjerilo, prikaz mreže, materijal, sudarač za dodir, zvuk, skriptu. Objekt je time popis sastavnica, a scena popis objekata.

Skripta je sastavnica koja se piše. Njezin je posao reagirati na događaje: meta je pronađena, korisnik je pritisnuo gumb, prošla je sekunda, praćenje je izgubljeno. Za AR-1 dovoljne su tri skripte. Prva prati metu i javlja je li vidljiva. Druga vodi osam koraka i pamti na kojem se trenutno stoji. Treća upravlja prikazom ploča i strelica prema trenutnom koraku.

Skripta se ne piše kao jedan dugačak niz naredbi nego kao odgovor na stanje. Upravitelj koraka drži broj trenutnog koraka i na svaku promjenu radi tri stvari: sakrije sadržaj prethodnog koraka, prikaže sadržaj novoga i osvježi natpis s brojem koraka. Time se osam koraka rješava jednim postupkom, a ne osmerostrukim ponavljanjem istog koda.

na promjenu koraka (n):
    sakrij sadrzaj koraka (n - 1)
    prikazi sadrzaj koraka (n)
    natpis = "Korak " + n + " od 8"
    ako je n = 8: omoguci gumb Zavrseno

Opterećenje prikaza ovisi o tome koliko se trokuta iscrtava i koliko objekata istodobno stoji u sceni. Zato se sadržaj koraka koji nije na redu ne samo skriva nego i isključuje, kako ga uređaj ne bi obrađivao. Sljedeći prikaz pokazuje kako broj trokuta i vrsta uređaja utječu na očekivanu brzinu prikaza.

Opterećenje scene i očekivana brzina prikazaRačunski prikaz

Prikaz procjenjuje kako broj trokuta u sceni, vrsta uređaja i broj koraka upute utječu na brzinu prikaza i zauzeće memorije. Cilj na projektu AR-1 je najmanje 30 sličica u sekundi i najviše 850 MB radne memorije.

Procijenjeni broj sličica—fps
Procijenjena memorija—MB
Objekata u sceni—
Odnos prema cilju od 30 sl/s—

Prikaz je gruba procjena, ali dobro pokazuje red veličine. Model od 12 000 trokuta uz osam koraka na tabletu daje oko 35 sličica u sekundi, dakle tek pet iznad cilja. To je malo, jer se u pogonu brzina dodatno smanji kad se uređaj zagrije. Na naočalama, koje sliku moraju iscrtati za svako oko, ista scena već pada ispod cilja, pa se za njih smanjuje razina detalja.

Ključni pojmovi

PojamZnačenje
Softverski segmentProgramski dio okruženja: praćenje, prikaz, logika, sučelje i veza s podacima.
Razvojno okruženjeProgram u kojem se slaže scena i izgrađuje aplikacija za odabrani uređaj.
Okvir za proširenu stvarnostSloj koji iz kamere i osjetnika daje položaj uređaja, plohe i mete.
MeđuslojPaket koji istu scenu prevodi za više okvira i uređaja.
Hijerarhija objekataStablo u kojem pomak roditelja pomiče svu njegovu djecu.
SastavnicaDio pridružen objektu koji mu daje jedno svojstvo ili ponašanje.
Kamera proširene stvarnostiKamera čiji položaj u sceni računa okvir iz slike i osjetnika uređaja.

Provjeri se

Kratka provjera prije prelaska na sljedeću jedinicu. Odgovor se potvrđuje klikom, a obrazloženje se prikazuje odmah.

Pitanje 1 od 5

Čemu u okruženju za proširenu stvarnost odgovara jedna jedinica scene?

Jedinica scene jednaka je metru stvarnog prostora, pa se model izvezen u milimetrima mora preračunati pri uvozu.

Pitanje 2 od 5

Zašto se sav sadržaj koji mora ostati na mjestu objesi ispod sidra?

Roditelj u stablu nosi djecu, pa ispravak položaja sidra pomiče sve objekte ispod njega odjednom.

Pitanje 3 od 5

Što određuje okvir za proširenu stvarnost, a ne razvojno okruženje?

Okvir iz slike kamere i osjetnika daje položaj uređaja, plohe i pronađene mete.

Pitanje 4 od 5

Koja se postavka projekta mora ispraviti prije nego što se u scenu unese više objekata?

Promjena mjerila kasnije traži ručni ispravak položaja svakog objekta, jer se položaji ne skaliraju sami.

Pitanje 5 od 5

Koja je uloga izvora svjetla u sceni proširene stvarnosti?

Prostor je stvaran i već osvijetljen; svjetlo u sceni služi da se digitalni model uklopi u njega.

Odgovoreno 0 od 5.