MODUL 3 · RAZVOJ OKRUŽENJA PROŠIRENE STVARNOSTI
Nastavna jedinica 3.5
Integracija segmenata u funkcionalno okruženje
Scena koja radi u razvojnom okruženju nije aplikacija. Da bi postala aplikacija, mora se postaviti izgradnja za odabranu platformu, zatražiti dopuštenja, potpisati paket i instalirati ga na uređaj. Tek kad se na to doda veza s podacima iz pogona i uređeno izdavanje inačica, okruženje postaje funkcionalno.
- postaviti izgradnju aplikacije za odabranu platformu
- odrediti potrebna dopuštenja i način njihova traženja
- objasniti potpisivanje paketa i postupak instalacije
- procijeniti i smanjiti veličinu paketa aplikacije
- povezati aplikaciju s podacima iz pogona
- urediti označavanje inačica i isporuku korisnicima
Što se u integraciji spaja
Integracija je korak u kojem se dijelovi koji su dotad nastajali odvojeno spoje u jednu cjelinu koja radi na uređaju. Spajaju se četiri stvari: scena s modelima i logikom, okvir za praćenje prostora, sklopovlje s odabranog radnog mjesta i podaci iz pogona.
Redoslijed nije proizvoljan. Prvo se izgradi paket bez podataka i provjeri da se pokreće i da prepoznaje metu. Zatim se dodaju dopuštenja i provjeri da ih korisnik doista dobiva. Tek onda se uključuje veza s podacima, jer bi u suprotnom svaka pogreška mogla doći s triju strana istodobno.
Integracija je i mjesto na kojem se prvi put vidi prava brzina rada. U razvojnom okruženju scena se izvodi na računalu s mnogo jačim procesorom i bez ograničenja potrošnje. Na uređaju se ista scena izvodi uz kameru koja radi neprekidno i uz bateriju koja se prazni, pa razlika u broju sličica u sekundi između računala i tableta zna biti dvostruka. Zbog toga se mjerenje nikada ne uzima iz razvojnog okruženja.
Na projektu AR-1 integracija ima jasnu granicu uspjeha: tehničar uzme tablet iz nosača, pokrene aplikaciju, snimi natpisnu pločicu i unutar dvije sekunde vidi prvi od osam koraka. Sve što se radi u ovoj jedinici mjeri se tom rečenicom.
| Što se spaja | Iz koje jedinice dolazi | Provjera pri spajanju |
|---|---|---|
| Scena, modeli, logika | 3.1 | scena se pokreće bez pogreške |
| Meta i sidra | 3.2 | meta se prepoznaje na uređaju |
| Sučelje i interakcija | 3.3 | gumbi rade i tekst je čitljiv |
| Uređaj i oprema | 3.4 | aplikacija radi u nosaču i pri zatečenom svjetlu |
| Podaci iz pogona | 3.5 | oznaka ćelije se dohvaća, potvrda se šalje |
Postavke izgradnje
Izgradnja (build) je postupak u kojem se scena i skripte pretvore u paket koji uređaj može instalirati. Prije prve izgradnje postavlja se nekoliko stvari koje se poslije teško mijenjaju. Najvažnija je naziv paketa, jedinstvena oznaka po kojoj uređaj razlikuje aplikacije; njezina promjena znači novu aplikaciju, a ne novu inačicu.
Za Android se uz to postavlja najmanja podržana inačica sustava, arhitektura procesora, usmjerenje zaslona i način prikaza. Za iOS se postavljaju oznaka razvojnog računa, profil za isporuku i opis svrhe za svako dopuštenje. Za naočale se dodatno bira ulazna točka u prostorno sučelje sustava i način na koji se aplikacija zaustavlja kad korisnik skine uređaj.
Uz to se odlučuje što ulazi u paket, a što ne. Scene koje se ne koriste, probni modeli i teksture iz ranijih pokusa ostaju u projektu i, ako se ne isključe, završe u paketu. Prije prve prave izgradnje projekt se zato pregleda i sve što nije u upotrebi premjesti u zasebnu mapu koja se ne uključuje.
Izgradnja ima i dva načina rada. Razvojna izgradnja uključuje zapisnik, mjerenje brzine i mogućnost spajanja s računalom radi traženja pogrešaka; sporija je i veća. Izgradnja za isporuku sve to isključuje i dodatno sažima sadržaj. Mjerenja koja ulaze u dokumentaciju rade se isključivo na izgradnji za isporuku, jer bi razvojna dala lošije i neupotrebljive brojke.
| Postavka | Android | iOS | Naočale |
|---|---|---|---|
| Naziv paketa | obrnuti naziv domene | isto, uz oznaku računa | isto |
| Najmanja inačica sustava | prema popisu okvira | prema popisu okvira | prema uređaju |
| Usmjerenje zaslona | vodoravno ili okomito | vodoravno ili okomito | nije primjenjivo |
| Potpisivanje | vlastiti ključ | razvojni profil | prema sustavu uređaja |
| Način instalacije | kabelom ili interni kanal | interni kanal | kabelom ili upravitelj |
| Oznaka inačice | broj i naziv | broj i naziv | broj i naziv |
naziv paketa : hr.primjer.ar1
inačica : 1.1 (izgradnja 14)
sustav : Android 12 i noviji
usmjerenje : vodoravno
dopuštenja : kamera, mrežaPažnja
Oznaka inačice mora rasti pri svakoj isporuci. Ako se paket isporuči s istim brojem, uređaji ga neće prepoznati kao noviji i tehničari će nastaviti raditi sa starom aplikacijom, a da nitko neće znati zašto ispravak ne djeluje.
Dopuštenja
Aplikacija proširene stvarnosti ne može raditi bez pristupa kameri. Uz kameru se najčešće traže i mreža, pohrana, mikrofon za glasovne naredbe te, u lokacijskim primjenama, položaj uređaja. Svako od tih dopuštenja korisnik mora odobriti, a suvremeni sustavi ga traže u trenutku prve uporabe, a ne pri instalaciji.
Zbog toga se uz zahtjev daje kratko obrazloženje. Poruka aplikaciji je potreban pristup kameri ne govori ništa; poruka kamera služi za prepoznavanje natpisne pločice ćelije govori sve. Obrazloženje se piše jednom i ulazi u postavke izgradnje, jer ga neki sustavi traže kao uvjet za objavu.
Mora se predvidjeti i što se događa ako korisnik dopuštenje odbije. Aplikacija tada ne smije prekinuti rad nego objasniti što zbog toga ne radi i ponuditi otvaranje postavki. Odbijeni mikrofon znači rad bez glasovnih naredbi; odbijena kamera znači da proširena stvarnost nije moguća, pa se prikazuje uputa u običnom obliku.
Dopuštenja se traže i redom kojim su potrebna, a ne sva odjednom pri pokretanju. Niz od pet pitanja na prvom zaslonu korisnik zatvara ne čitajući, pa se poslije čudi zašto glasovne naredbe ne rade. Kamera se traži kad se otvara prikaz, mikrofon kad se prvi put upotrijebi glasovna naredba, a položaj samo ondje gdje se doista koristi.
| Dopuštenje | Zašto se traži | Ako je odbijeno |
|---|---|---|
| Kamera | prepoznavanje mete i praćenje prostora | prikaz upute bez proširene stvarnosti |
| Mreža | dohvat podataka o ćeliji i slanje potvrde | rad s unaprijed učitanim podacima |
| Pohrana | spremanje trajnih sidara i zapisa | sidra vrijede samo do zatvaranja |
| Mikrofon | glasovne naredbe | upravljanje gumbima |
| Položaj | prepoznavanje ćelije na velikom prostoru | ručni odabir ćelije |
Potpisivanje, izgradnja i instalacija
Paket se prije instalacije potpisuje. Potpis je kriptografski dokaz da paket dolazi od poznatog izdavača i da poslije nije izmijenjen. Ključ za potpisivanje čuva se izvan projekta, na sigurnom mjestu, uz zapis o tome tko mu ima pristup. Gubitak ključa znači da se postojeća aplikacija više ne može nadograditi, nego se mora instalirati kao nova.
Instalacija u pogonu ne ide preko javnih trgovina aplikacijama. Uobičajena su tri puta: izravno kabelom na uređaj, preko internog kanala za isporuku unutar poduzeća i preko sustava za upravljanje uređajima koji aplikaciju sam postavlja na sve zadužene uređaje. Treći je put najbolji kad ima više od nekoliko uređaja, jer jamči da svi rade s istom inačicom.
Uz paket se isporučuje i kratka uputa za instalaciju: koji je uređaj podržan, koja je inačica sustava potrebna, koja dopuštenja treba odobriti i kako se provjerava da je instalacija uspjela. Bez te upute prva instalacija u pogonu redovito zapne na sitnici, primjerice na postavci koja zabranjuje instalaciju iz nepoznatog izvora.
Prva izgradnja gotovo nikada ne prođe iz prvog pokušaja. Najčešće smeta nedostajuće dopuštenje, pogrešna arhitektura procesora ili prevelika tekstura. Zato se izgradnja radi rano, dok je scena još mala, a ne na kraju — tada se pogreške rješavaju jedna po jedna, a ne sve odjednom pod rokom.
Veličina paketa
Paket aplikacije mora stati u dogovorenu granicu. Na projektu AR-1 ta je granica 150 MB, a izmjerena veličina gotovog paketa iznosi 96 MB. Granica nije hir: velik paket dugo se prenosi preko bežične mreže hale, zauzima mjesto na uređaju i odbija korisnike od nadogradnje.
Najveći dio paketa nisu skripte nego teksture. Jedna tekstura 1024 × 1024 bez sažimanja zauzima oko 4 MB, a sa sažimanjem prilagođenim uređaju svega oko pola megabajta. Zato se sažimanje uključuje uvijek, a razlučivost se bira prema tome koliko se tekstura izbliza gleda, a ne prema tome kolika je izvorna slika.
Drugi izvor su modeli i zvuk. Model prihvatnice s 12 000 trokuta u zapisu glTF sa sažimanjem zauzima 2,1 MB, što je zanemarivo. Snimljena govorna uputa za osam koraka može, ako se ne sažme, zauzeti više od samog modela. Sadržaj koji se rijetko koristi — primjerice shema ožičenja — ne ugrađuje se u paket nego se dohvaća s poslužitelja pri prvoj uporabi.
Uz veličinu paketa prati se i veličina koju aplikacija zauzme nakon instalacije. Ona je uvijek veća, jer se dio sadržaja pri prvom pokretanju raspakira, a uz to se spremaju trajna sidra, opisi prostora i zapisi o zahvatima. Na tabletu s više korisnika ti zapisi rastu, pa se u aplikaciju ugrađuje brisanje starijih zapisa nakon dogovorenog roka.
Prikaz procjenjuje veličinu paketa iz broja i razlučivosti tekstura te broja modela. Osnovni dio aplikacije s knjižnicama okvira zauzima oko 88 MB, a dogovorena granica na projektu AR-1 iznosi 150 MB.
Prikaz pokazuje odnos triju veličina: osnovnog dijela aplikacije, tekstura i modela. Iz njega slijedi i redoslijed kojim se paket smanjuje: prvo sažimanje tekstura, pa njihova razlučivost, pa broj modela u paketu. Skraćivanje koda gotovo nikada nije mjesto na kojem se dobiva prostor.
Podaci iz pogona i isporuka inačica
Aplikacija koja stoji sama za sebe brzo zastari. Uputa za zamjenu prihvatnice povezuje se s podacima o ćeliji: oznakom ćelije, oznakom robota, brojem radnog naloga i podatkom o zadnjem zahvatu. Ti podaci dolaze iz sustava za održavanje, a aplikacija ih dohvaća po prepoznatoj meti, jer meta nosi oznaku ćelije.
Veza ide u oba smjera. Kad tehničar dovrši osmi korak, aplikacija šalje potvrdu: tko je zahvat obavio, kada, koliko je trajao i je li koji korak preskočen. Time uputa prestaje biti pomagalo i postaje dio zapisa o održavanju. Podaci se šalju preko sučelja koje je unaprijed dogovoreno, uz provjeru korisnika i šifriranu vezu.
Inačice se označavaju dosljedno. Prva radna inačica koja je izašla iz radionice nosi oznaku 1.0, ispravci nakon ispitivanja podižu drugi broj, a veće promjene prvi. Uz svaku inačicu ide kratak popis promjena, pisan za tehničara, a ne za programera: što je novo, što je ispravljeno i mora li se nešto raditi drukčije.
Podaci koji ulaze i izlaze iz aplikacije traže i osnovnu pažnju prema sigurnosti. Uređaj se u pogonu dijeli, pa se prijava korisnika ne sprema trajno, a zapisi se šalju preko šifrirane veze. Na uređaju se ne drži ništa što ondje ne mora biti: ni popis svih ćelija ni podaci o zahvatima starijima od dogovorenog roka. Time se u slučaju gubitka uređaja gubi oprema, a ne podaci pogona.
Isporuka se ne radi usred smjene. Nova se inačica postavlja na jedan uređaj, provjeri u ćeliji, pa tek onda proširi na ostale. Stara se inačica čuva dok se nova ne potvrdi u radu, jer povratak na prethodno stanje mora biti moguć u nekoliko minuta.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Integracija | Spajanje programskih i sklopovskih dijelova u cjelinu koja radi na uređaju. |
| Izgradnja | Postupak pretvaranja projekta u paket koji se instalira na uređaj. |
| Naziv paketa | Jedinstvena oznaka po kojoj uređaj razlikuje aplikacije. |
| Dopuštenje | Odobrenje korisnika za pristup kameri, mreži, pohrani, mikrofonu ili položaju. |
| Potpisivanje | Kriptografski dokaz da paket dolazi od poznatog izdavača i da nije izmijenjen. |
| Sažimanje tekstura | Postupak kojim tekstura u paketu zauzima višestruko manje mjesta. |
| Oznaka inačice | Broj koji raste pri svakoj isporuci i uz koji ide popis promjena. |
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
Kada se od korisnika traži dopuštenje za kameru?
Suvremeni sustavi traže dopuštenje u trenutku uporabe, a obrazloženje pomaže korisniku da ga odobri.
Pitanje 2 od 5
Što se događa ako se izgubi ključ za potpisivanje?
Bez izvornog ključa nova inačica ne prolazi kao nadogradnja nego kao nova aplikacija.
Pitanje 3 od 5
Koji dio najčešće zauzima najviše mjesta u paketu?
Teksture bez sažimanja brzo nadmaše sve ostalo; jedna tekstura 1024 × 1024 zauzima oko 4 MB.
Pitanje 4 od 5
Zašto oznaka inačice mora rasti pri svakoj isporuci?
Paket s istom oznakom uređaji ne prepoznaju kao nadogradnju, pa ispravak ne dođe do korisnika.
Pitanje 5 od 5
Kako se aplikacija ponaša ako korisnik odbije dopuštenje za mikrofon?
Odbijeno dopuštenje isključuje pripadnu mogućnost, a ne cijelu aplikaciju.
Odgovoreno 0 od 5.