MODUL 3 · RAZVOJ HOLOGRAMSKOG OKRUŽENJA
Nastavna jedinica 3.5
Integracija segmenata u funkcionalno okruženje
Integracija je korak u kojem scena, mapiranje, upravljanje i pripremljeni uređaj postaju jedna aplikacija koja se instalira i pokreće. Ovdje se postavlja izgradnja, traže dopuštenja, pakira sadržaj, prenosi na naočale i uvodi red u inačice, kako bi se u svakom trenutku znalo što je na kojem uređaju.
- postaviti izgradnju projekta za naočale i objasniti glavne postavke
- odrediti potrebna dopuštenja i obrazložiti zašto se traže samo nužna
- prenijeti i instalirati aplikaciju na uređaj te pročitati dnevnik pokretanja
- procijeniti veličinu paketa i vrijeme prijenosa
- povezati okruženje s podacima izvan aplikacije
- voditi inačice i isporuke te zapisati što je na kojem uređaju
Od scene do paketa
Do sada je sve postojalo u razvojnom okruženju na računalu. Integracija je korak u kojem se od toga napravi paket aplikacije (application package): jedna datoteka koja sadrži program, modele, teksture, zvukove, postavke i popis dopuštenja, i koja se instalira na naočale.
Lanac je uvijek isti i dobro ga je imati pred očima, jer se pogreška najčešće ne vidi ondje gdje je nastala. Nepotpun paket pokaže se tek kao prazan hologram na uređaju.
Slika pokazuje i nešto što iznenadi većinu početnika. U paketu od 128 MB model ćelije zauzima manje od jednog megabajta, a teksture nekoliko. Sve ostalo je program: razvojno okruženje, knjižnice za miješanu stvarnost, prostorno razumijevanje i prepoznavanje gesta. Zato smanjivanje broja trokuta pomaže brzini, ali ne pomaže veličini paketa.
Postavke izgradnje
Izgradnja se postavlja jednom, na početku projekta, i poslije se mijenja samo iznimno. Prva je postavka ciljna arhitektura. Naočale imaju procesor arhitekture ARM64, pa se program prevodi za njega, a ne za stolno računalo. Druga je način prevođenja: razvojna inačica prevodi se brže i dopušta pronalaženje pogrešaka, isporučna se prevodi dulje, ali radi osjetno brže i manja je.
Treća je sažimanje tekstura. Tekstura zapisana bez sažimanja u memoriji zauzima nekoliko puta više prostora. Uređaji za miješanu stvarnost imaju vlastiti oblik sažimanja koji grafički dio procesora čita izravno, pa tekstura nikad ne mora biti raspakirana u punoj veličini. Četvrta je razina kvalitete: za naočale se gasi većina naknadnih učinaka, jer je svaka obrada cijele slike skupa na 120 iscrtanih pogleda u sekundi.
Ciljna arhitektura: ARM64
Vrsta izgradnje: isporucna
Sazimanje tekstura: za mijesanu stvarnost, ukljuceno
Naknadni ucinci: iskljuceni
Sjene: samo bliske, niska razlucivost
Oznaka inacice: 1.3.0
Dnevnik: ukljucen, razina upozorenja
Uz postavke ide i razina detalja. Model ćelije priprema se u dvije ili tri razine gustoće, a uređaj bira onu prema udaljenosti promatrača. Tehnolog koji stoji sedam metara od ćelije ne vidi razliku između 90 000 i 25 000 trokuta, a procesor je vidi jasno. Priprema razina detalja obrađena je u prvom modulu.
Prije prve prave izgradnje uvijek se napravi probna, s praznom scenom. Time se provjerava lanac alata: prevodi li se projekt, prihvaća li uređaj paket i pokreće li se aplikacija. Ako se to ne provjeri odvojeno, prva pogreška u lancu pojavit će se pomiješana s pogreškama u sceni i tražit će je se dvaput duže.
Izgradnja za naočale traje osjetno dulje od izgradnje za stolno računalo, jer se svi programski dijelovi prevode za drugu arhitekturu, a sav se sadržaj priprema u obliku koji uređaj čita izravno. Prva izgradnja projekta veličine HT-1 zna trajati petnaestak minuta, a svaka sljedeća, u kojoj se mijenja samo dio sadržaja, dvije do tri minute. Zato se izgradnja ne pokreće za svaku sitnicu nego se promjene skupljaju, a provjere koje ne traže uređaj rade se u razvojnom okruženju na računalu.
Dobra je navika odvojiti postavke koje se razlikuju po uređaju. Ako se ispituje na dvoje naočala s različitim inačicama sustava, te se razlike drže u zasebnoj datoteci s postavkama, a ne se ručno prepravljaju prije svake izgradnje. Ručno prepravljanje prije ili poslije završi isporukom paketa s postavkama za drugi uređaj, a takva se pogreška teško pronalazi jer aplikacija radi, samo lošije.
Dopuštenja i pristup uređaju
Dopuštenje (permission) je izričito odobrenje korisnika da aplikacija koristi neku mogućnost uređaja. Popis dopuštenja zapisuje se u paket, a korisnik ga vidi pri prvom pokretanju. Za HT-1 potrebna su četiri, i svako se mora moći obrazložiti.
| Dopuštenje | Zašto je potrebno | Što ako izostane |
|---|---|---|
| Prostorno razumijevanje | mapiranje prostorije i sidrenje ćelije | hologram se ne može postaviti na pod |
| Praćenje ruku | geste za potvrdu i pomicanje | ostaje samo pogled i glas |
| Mikrofon | glasovne naredbe | naredbe se biraju iz izbornika |
| Mreža | dohvat podataka o ćeliji i slanje zapisa | radi se s podacima ugrađenima u paket |
Pravilo je tražiti najmanje što posao dopušta. Svako dopuštenje troši procesor i bateriju, povećava površinu za pogreške i traži objašnjenje korisniku. Aplikacija koja traži pristup kameri, a snimke ne koristi, gubi povjerenje čim to netko primijeti.
Dopuštenje se nikad ne pretpostavlja. Korisnik ga može odbiti ili poslije povući u postavkama uređaja, pa aplikacija mora provjeriti stanje i ponuditi zamjenski put. Za HT-1 to znači: bez mikrofona sve naredbe ostaju dostupne u prostornom izborniku, a bez mreže se koriste podaci ugrađeni u paket.
Za instalaciju vlastite aplikacije uređaj mora biti u razvojnom načinu rada. Taj se način uključuje u postavkama uređaja i traži prijavu razvojnim računom. Dok je uključen, uređaj prima pakete koji nisu prošli službenu trgovinu. Na uređaju koji se predaje u redovitu uporabu taj se način isključuje, jer inače ostaje otvoren put za instalaciju bilo čega.
Prijenos, instalacija i prva provjera
Paket se na naočale prenosi na tri načina. Kabelom, što je najbrže i najpouzdanije. Bežično, preko iste mreže, što je udobno ali sporije. Preko razvojnog portala uređaja, koji se otvara u pregledniku na računalu i nudi popis instaliranih aplikacija, njihovo brisanje i pokretanje. Portal je koristan i za praćenje zauzeća memorije i temperature dok aplikacija radi.
Prva instalacija traje dulje od kasnijih, jer uređaj raspakira sav sadržaj. Nakon nje se aplikacija pokreće i gleda dnevnik (log) — popis poruka koje program ispisuje dok radi. U dnevniku se najprije traže tri stvari: je li prostorno razumijevanje dostupno, je li pronađeno pohranjeno sidro i koliko je trajalo učitavanje modela.
Prikaz procjenjuje veličinu paketa aplikacije prema broju modela, njihovoj gustoći i razlučivosti tekstura te vrijeme prijenosa na uređaj pri 40 MB/s. Cilj projekta HT-1 je paket do 200 MB.
Veličina paketa nije samo pitanje prostora. Veliki paket dulje se prenosi, dulje instalira i dulje pokreće. Cilj projekta je paket do 200 MB i pokretanje do 3,0 sekunde. Izmjereno je 128 MB i 2,6 sekunde, dakle oboje unutar cilja. Za usporedbu, ista bi aplikacija s teksturama od 2048 točaka bez sažimanja prešla 300 MB i pokretala se osjetno dulje.
Prva provjera na uređaju ima stalan redoslijed: pokreni, pričekaj mapiranje, postavi sidro, provjeri mjerilo, prohodaj krug, isprobaj po jednu radnju svakim ulazom, ugasi i ponovno pokreni. Posljednji korak najvažniji je, jer se tek tada vidi je li trajno sidro doista pohranjeno.
Veza s podacima
Okruženje rijetko stoji samo za sebe. Za HT-1 podaci su skromni: oznaka radionice, inačica rasporeda ćelije, dopuštene mjere prolaza i zapis o tome tko je i kada raspored pregledao. Ti podaci dolaze iz jednostavne usluge na mreži, a aplikacija ih čita pri pokretanju i zapisuje na kraju pregleda.
Veza s podacima uvijek mora imati zamjenski put, jer se mreža u pogonu prekida. Dobar postupak ima tri razine. Aplikacija najprije pokuša dohvatiti svježe podatke. Ako ne uspije, koristi posljednje uspješno dohvaćene, koje je spremila na uređaj, i to jasno javi korisniku. Ako ni njih nema, koristi podatke ugrađene u paket.
| Podatak | Odakle dolazi | Kada se koristi |
|---|---|---|
| Oznaka radionice | iz usluge, ili iz paketa | pri pokretanju |
| Mjere prolaza | iz usluge | pri provjeri puta operatera |
| Inačica rasporeda | iz usluge | pri učitavanju modela ćelije |
| Zapis o pregledu | nastaje u aplikaciji | šalje se na kraju, uz čekanje na mrežu |
Zapis koji nastaje u aplikaciji nikad se ne šalje odmah i ne odbacuje ako slanje ne uspije. Sprema se na uređaj s vremenskom oznakom i šalje kad se mreža vrati. Tehnolog koji je pola sata obilazio ćeliju ne smije izgubiti nalaze zato što je u tom kutu radionice mreža slaba.
Inačice i isporuka
Kad se okruženje počne ispitivati, inačice se množe brzo. Bez reda se za nekoliko dana više ne zna koji je uređaj imao koju inačicu kad je nalaz zabilježen, pa se nalazi ne mogu provjeriti. Rješenje je jednostavno i staro: svaka isporučena inačica dobiva oznaku i kratki popis promjena.
Uobičajena oznaka ima tri broja. Prvi se mijenja pri velikoj promjeni, drugi pri dodavanju mogućnosti, treći pri ispravku pogreške. Inačica 1.3.0 tako znači treću skupinu novih mogućnosti u prvoj velikoj izvedbi. Oznaka se ispisuje i u aplikaciji, u kutu prostornog izbornika, kako bi je ispitivač mogao pročitati bez računala.
| Inačica | Što donosi | Gdje je bila |
|---|---|---|
| 1.0.0 | prva radna inačica: ćelija na sidru | uređaj A |
| 1.1.0 | oznake dosega i ploha ograde | uređaji A i B |
| 1.2.0 | glasovne naredbe i prostorni izbornik | uređaji A i B |
| 1.2.1 | ispravak preklapanja izbornika s ćelijom | uređaj B |
| 1.3.0 | trajno sidro i zapis o pregledu | uređaji A i B, predana inačica |
Uz oznaku ide i zapis o isporuci: datum, tko je isporučio, na koje uređaje i što je u toj inačici izmijenjeno. Zapis stane na nekoliko redaka i drži se uz projekt. Kad ispitivač javi da nešto ne radi, prvo se pitanje uvijek glasi koja je inačica na uređaju, a ne što je korisnik radio.
Isporuka okruženja nije samo paket. Predaje se i uputa za rad, popis dopuštenja s obrazloženjem, postavke izgradnje, popis poznatih ograničenja i zapisnik ispitivanja. Bez toga sljedeći čovjek koji se projektom bavi mora sve otkriti iznova, a otkrit će i dio pogrešaka koje su već bile riješene.
Zadnji korak integracije je vraćanje uređaja u redovito stanje. Isključuje se razvojni način rada, briše se probni sadržaj, provjerava se da je na uređaju samo predana inačica i da su spremljena trajna sidra ona koja su u dokumentaciji opisana.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Paket aplikacije | Datoteka koja se instalira na uređaj; sadrži program, sadržaj i dopuštenja. |
| Ciljna arhitektura | Vrsta procesora za koju se program prevodi. |
| Sažimanje tekstura | Zapis teksture koji grafički procesor čita bez raspakiravanja. |
| Dopuštenje | Izričito odobrenje korisnika za uporabu neke mogućnosti uređaja. |
| Razvojni način rada | Stanje uređaja u kojem prima pakete izvan službene trgovine. |
| Dnevnik | Popis poruka koje program ispisuje dok radi. |
| Oznaka inačice | Trobrojna oznaka isporučene inačice uz 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 6
Što u paketu aplikacije za naočale zauzima najviše prostora?
Modeli i teksture čine nekoliko megabajta, a program s knjižnicama stotinjak.
Pitanje 2 od 6
Zašto se traže samo nužna dopuštenja?
Nepotrebno dopuštenje povećava potrošnju, površinu za pogreške i gubi povjerenje korisnika.
Pitanje 3 od 6
Što se provjerava probnom izgradnjom s praznom scenom?
Odvojena provjera lanca alata sprječava miješanje pogrešaka lanca s pogreškama u sceni.
Pitanje 4 od 6
Koji je zadnji i najvažniji korak prve provjere na uređaju?
Tek nakon ponovnog pokretanja vidi se je li sidro doista pohranjeno i pronađeno.
Pitanje 5 od 6
Što aplikacija radi kad mreža nije dostupna?
Veza s podacima uvijek ima zamjenski put, a nastali zapis čeka povratak mreže.
Pitanje 6 od 6
Čemu služi oznaka inačice ispisana u prostornom izborniku?
Kad ispitivač javi nalaz, prvo se pitanje odnosi na inačicu koja je bila na uređaju.
Odgovoreno 0 od 6.