VIRTUALNA STVARNOST
Projekt
Projektni zadatak: virtualni laboratorij VR-1
Timski projektni zadatak u četiri faze na zajedničkom primjeru područja: virtualnom laboratoriju VR-1, u kojem korisnik uz radni stol rukama sklapa mobilni robot MR-1, na točkama interesa doznaje čemu služi koji dio i na kraju pušta robota da vozi po stolu. Projekt vodi od CAD modela i budžeta trokuta preko scene, hvatanja i kretanja do ispitivanja prema 18 testnih slučajeva, izvješća i obrane.
- pripremiti 12 dijelova mobilnog robota za prikaz u stvarnom vremenu u mjerilu 1 : 1, s budžetom trokuta, razinama detalja, materijalima i kolizijskim oblicima
- izgraditi scenu laboratorija s urednom hijerarhijom objekata, hvatanjem, puštanjem, prebacivanjem iz ruke u ruku i šest točaka interesa
- ostvariti udobno kretanje teleportom i okretanjem u koracima te obrazložiti izbor zadanog načina kretanja
- izvesti aplikaciju za PC-VR i za samostalne naočale i izmjeriti vrijeme okvira, pozive za crtanje i broj trokuta
- provesti 18 testnih slučajeva na dva uređaja, dokumentirati pogreške i ispravke te napisati izvješće o ispitivanju
- izračunati i obrazložiti budžet okvira, gustoću piksela, memoriju tekstura i parametre luka teleporta
- predati projekt u propisanom obliku i obraniti tehnička rješenja pred povjerenstvom
Kako koristiti ovu stranicu
Zadaci i pitanja su bez odgovora. Rješenje s postupkom otvara se gumbom Prikaži rješenje ispod svakog zadatka; najprije riješite sami, a tek onda provjerite.
Opis laboratorija VR-1 i zahtjevi
Virtualni laboratorij VR-1 je aplikacija virtualne stvarnosti za učenje. Korisnik s naočalama stoji uz radni stol u laboratoriju veličine 8 × 6 m. Na stolu su razasuti dijelovi malog mobilnog robota MR-1. Korisnik ih uzima rukama, okreće, prebacuje iz ruke u ruku i slaže na šasiju; na šest točaka interesa (engl. point of interest, POI) doznaje što koji dio radi. Kad je robot sklopljen, korisnik ga uključuje prekidačem i robot vozi po stolu, a senzori ga zaustavljaju prije ruba.
Isti primjer provlači se kroz cijelo područje: u jedinicama se na njemu objašnjavalo modeliranje, percepcija, praćenje, logika i interakcija, a u ovom projektu gradi se cijela aplikacija — od STEP datoteke iz CAD sustava do izvješća o ispitivanju. Projekt se radi timski, u skupini od tri osobe, šest tjedana, u četiri faze: modeli, scena i interakcija, kretanje i udobnost, ispitivanje i izvješće.
Podaci u tablici su početni projektni podaci. Nisu nepogrešivi: dio projekta upravo je provjera jesu li međusobno usklađeni i ostvarivi na oba uređaja. Ako mjerenjem ili računom utvrdite da neki zahtjev ne može biti ispunjen, ne mijenjate ga prešutno, nego predlažete izmjenu u izvješću, s obrazloženjem i brojem.
| Stavka | Početni podatak | Napomena |
|---|---|---|
| Scena | laboratorij 8 × 6 m, visina 3 m; radni stol 1600 × 800 mm, visina 750 mm | sve u mjerilu 1 : 1 |
| Prostor za igru | preporučeno 3,0 × 2,5 m, najmanje 2,0 × 1,5 m | granica sigurnosti 0,3 m od zida ili namještaja |
| Robot MR-1 | 220 × 180 × 110 mm, 1,2 kg, 12 dijelova | šasija, poklopac, 2 kotača Ø65 mm, 2 motora s reduktorom, kuglični oslonac, baterija 7,4 V / 2200 mAh, upravljačka pločica, ultrazvučni senzor udaljenosti, modul s dva IR senzora linije, prekidač |
| CAD izvor | STEP 38 MB; fina teselacija 312 000 trokuta | ulazni podatak faze 1 |
| Ciljani model | LOD0 28 000, LOD1 9 000 (od 1,5 m), LOD2 2 500 trokuta (od 4 m) | cijeli robot, zbroj 12 dijelova |
| Teksture i datoteka | 2048 → 1024 px, jedan materijal po dijelu; glTF 3,2 MB | mape boje, normala i kombinirana mapa hrapavosti, metalnosti i zasjenjenja |
| Uređaj A (PC-VR) | vanjsko praćenje s dvije bazne stanice; 2 × 2448 × 2448 px; 90 Hz (do 120 Hz); vidno polje oko 116° vodoravno; IPD 58–72 mm | računalo s grafičkom karticom 8 GB i 32 GB RAM-a |
| Uređaj B (samostalne naočale) | unutarnje praćenje (4 kamere), prolaz slike u boji; 2 × 2064 × 2208 px; 90 Hz; vidno polje oko 110° vodoravno | može se spojiti na računalo; aplikacija se izvodi i samostalno |
| Interakcija | 6 točaka interesa: motor, kotač, baterija, pločica, senzor udaljenosti, prekidač | hvatanje rukom do 0,8 m, zrakom do 3 m; prebacivanje iz ruke u ruku |
| Kretanje | teleport lukom do 4 m; okretanje u koracima od 30° | kontinuirano kretanje 1,5 m/s samo uz vinjetu, kao izborna postavka |
Zahtjevi
Zahtjevi imaju oznaku Z01–Z12. Svaki zahtjev mora biti pokriven barem jednim testnim slučajem u fazi 4; stupac Provjera pokazuje kojim.
| Oznaka | Zahtjev | Provjera |
|---|---|---|
| Z01 | Stabilnih 90 sl/s na oba uređaja, vrijeme okvira 11,1 ms; GPU i CPU ≤ 9,0 ms | T16, T17 |
| Z02 | Vrijeme od pokreta do fotona ≤ 20 ms | T16 (procjena iz alata za profiliranje i podataka pokretača) |
| Z03 | Scena ≤ 750 000 trokuta i ≤ 1000 poziva za crtanje (A); ≤ 300 000 trokuta i ≤ 150 poziva (B) | T16, T17 |
| Z04 | Pokretanje ≤ 10 s; paket ≤ 1,5 GB (A), ≤ 500 MB (B) | T01 |
| Z05 | Mjerilo 1 : 1: stol 750 mm, robot 220 mm, kamera na stvarnoj visini očiju | T02 |
| Z06 | Prostor za igru i granica sigurnosti postavljeni i vidljivi | T03, T04 |
| Z07 | Ruke prate kontrolere i animiraju se prema tipkama | T05 |
| Z08 | Hvatanje rukom do 0,8 m i zrakom do 3 m, prebacivanje iz ruke u ruku, puštanje s fizikom | T06–T09 |
| Z09 | Sklapanje 12 dijelova na priključne točke; robot vozi i staje prije ruba stola | T10, T15 |
| Z10 | Šest točaka interesa s jednom logikom za više ulaza (kontroler, pogled, miš) | T11 |
| Z11 | Teleport do 4 m, okretanje u koracima 30°, kontinuirano kretanje samo uz vinjetu | T12–T14 |
| Z12 | Udobnost: nijedan ispitanik ne prekida zbog mučnine pri zadanim postavkama | T18 |
Zapamtite
Radni stol namjerno je smješten unutar prostora za igru. Dijelovi robota uzimaju se i slažu stvarnim hodom oko stola, bez ijednog teleporta; teleport služi samo za odlazak do ostatka laboratorija. Tako je glavna radnja projekta ujedno i najudobnija, jer tijelo osjeti svaki pokret koji oko vidi.
Organizacija i rokovi
Projekt traje šest tjedana, a radi ga tim od tri osobe. Svaka osoba ima glavnu ulogu, ali svi rade u istom projektu razvojnog okruženja i svaki član na obrani mora znati objasniti cijelu aplikaciju, ne samo svoj dio. Preporuka je jedan zajednički pregled tjedno (kontrolna točka) i dnevni kratki dogovor o tome tko što mijenja, da se izbjegnu sukobi u istoj razini (sceni).
| Uloga | Glavna zaduženja | Dokumenti |
|---|---|---|
| M — modelar | priprema 12 dijelova iz STEP datoteke, teselacija, decimacija, razine detalja, UV mape, materijali, kolizijski oblici, ishodišta; okoliš laboratorija | VR1-D01, VR1-D02 |
| P — programer interakcije | projekt i predložak, XR ishodište, kamera, kontroleri i ruke, hvatanje, točke interesa, sklapanje, kretanje, veza sa simulacijom robota | VR1-D03, VR1-D04, VR1-D05 |
| I — integrator i voditelj ispitivanja | postavljanje uređaja A i B, izgradnja paketa, profiliranje, plan ispitivanja, provedba testnih slučajeva s ispitanicima, izvješće, vođenje popisa pogrešaka | VR1-D06, VR1-D07 |
| Tjedan | Faza | Rezultat tjedna | Kontrolna točka |
|---|---|---|---|
| 1. | Faza 1 | projekt postavljen na oba uređaja; STEP otvoren, teselacija i prva decimacija; protokol izvoza | KT1: prazna scena radi na A i B na 90 sl/s |
| 2. | Faza 1 / 2 | 12 dijelova s LOD0–LOD2, materijalima i kolizijom; okoliš laboratorija; hijerarhija scene | KT2: robot u sceni u mjerilu 1 : 1, budžet D01 ispunjen |
| 3. | Faza 2 | ruke, hvatanje, puštanje, prebacivanje, zraka; točke interesa | — |
| 4. | Faza 2 / 3 | sklapanje na priključne točke, vožnja robota; teleport, okretanje u koracima, vinjeta | KT3: cijeli tijek od prvog dijela do vožnje radi na A |
| 5. | Faza 3 / 4 | paket za B, optimizacija, profiliranje; prvi krug ispitivanja | KT4: T01–T18 provedeni barem jednom |
| 6. | Faza 4 | ispravci, ponovljeno ispitivanje, izvješće, video, predaja | predaja i obrana |
Pažnja
Najčešći uzrok kašnjenja nije programiranje, nego to što se aplikacija prvi put pokrene na samostalnim naočalama tek u petom tjednu. Zato KT1 traži da već prazna scena radi na oba uređaja. Svaki tjedan izgradite paket za B i pogledajte vrijeme okvira — problem otkriven u drugom tjednu košta sat, u šestom cijeli vikend.
Faza 1: modeli
Cilj faze je da 12 dijelova robota MR-1 i okoliš laboratorija uđu u razvojno okruženje kao lagani, ispravno orijentirani modeli u mjerilu 1 : 1, s razinama detalja, materijalima, teksturama i kolizijskim oblicima. Zajedničke osnove modeliranja opisane su u jedinicama prvog modula; ovdje se primjenjuju iz kuta VR-a: sve se iscrtava dvaput (za svako oko), 90 puta u sekundi, a korisnik dijelove drži u ruci na 30–50 cm od očiju.
Dokumenti koje treba izraditi
- VR1-D01 Popis dijelova i budžet modela — tablica 12 dijelova: naziv, broj trokuta LOD0, LOD1 i LOD2, materijal i razlučivost tekstura, kolizijski oblik (kutija, valjak, kugla ili konveksna ljuska), položaj ishodišta, masa za fiziku, pripada li dijelu točka interesa.
- VR1-D02 Protokol izvoza — jedinice u CAD sustavu, u programu za mrežu i u razvojnom okruženju; koja je os gore i koja naprijed; format izvoza (glTF ili FBX) i postavke; pravila imenovanja (npr.
MR1_Kotac_L,MR1_Kotac_L_LOD1,MR1_Kotac_L_COL); snimka zaslona dijela u sceni pored mjernog objekta od 1 m.
Tijek rada
- Otvorite STEP u CAD sustavu, uklonite unutarnje dijelove koji se nikad ne vide (navoji, unutrašnjost reduktora, sitni elementi pločice ispod 1 mm) i provjerite da je sklop u milimetrima.
- Izvezite svaki od 12 dijelova zasebno, s finom teselacijom; zapišite broj trokuta (ukupno oko 312 000).
- U programu za slobodno modeliranje (npr. Blender) smanjite mrežu na budžet D01 (decimacija ili ručna retopologija za zaobljene dijelove), postavite ishodišta i provjerite normale.
- Izradite LOD1 i LOD2, UV mape (prva za teksture, druga za svjetlo gdje je potrebno), ispecite mape normala s fine mreže na grubu.
- Izvezite u glTF ili FBX, uvezite u razvojno okruženje i provjerite mjerilo mjernim objektom od 1 m i visinom stola od 750 mm.
- Dodijelite kolizijske oblike i masu (zbroj masa 1,2 kg) te zapišite sve u D01.
Zadaci s rješenjem
Zadaci su dio projekta: njihovi rezultati ulaze u D01 i u izvješće. Rješenja vrijede za osnovne podatke iz tablice.
A1. Budžet trokuta po dijelovima. Fina teselacija daje 312 000 trokuta, a cilj za cijeli robot je 28 000 na LOD0. Za koliko se posto mreža mora smanjiti? Raspodijelite 28 000 trokuta na 12 dijelova i obrazložite raspodjelu. Koliki su udjeli LOD1 i LOD2 u odnosu na LOD0?
Prikaži rješenje
smanjenje = 1 − 28 000 / 312 000 = 1 − 0,0897 = 0,910 → 91,0 % (omjer oko 11 : 1)
Raspodjela ne smije biti jednaka po dijelovima. Više trokuta dobivaju dijelovi koji su veliki, zaobljeni i koje korisnik drži blizu očiju (kotači, pločica s komponentama, šasija, poklopac); manje dobivaju mali i ravni dijelovi (prekidač, oslonac). Jedna od ispravnih raspodjela:
| Dio | LOD0 (trokuta) | Obrazloženje |
|---|---|---|
| šasija | 4 000 | velika ploha s provrtima i rubovima |
| poklopac | 3 500 | zaobljeni rubovi, najveći vidljivi dio |
| kotač L, kotač D | 2 × 3 000 | obod Ø65 mm je vidljiva silueta; gazna površina iz mape normala |
| motor L, motor D | 2 × 1 800 | valjak s reduktorom, dio skriven u šasiji |
| kuglični oslonac | 600 | mali, ispod šasije |
| baterija | 1 200 | kvadar sa zaobljenjima; natpis iz teksture |
| upravljačka pločica | 4 800 | točka interesa, gleda se izbliza; komponente kao niski kvadri |
| ultrazvučni senzor | 2 400 | dva valjka pretvornika, točka interesa |
| modul IR senzora | 1 400 | mala pločica, dva senzora |
| prekidač | 500 | mali dio, oblik iz teksture |
| ukupno | 28 000 |
LOD1 / LOD0 = 9 000 / 28 000 = 32,1 %; LOD2 / LOD0 = 2 500 / 28 000 = 8,9 %
Na LOD2 (od 4 m) robot zauzima samo oko 3° vidnog polja (2 · arctg(0,11 / 4) ≈ 3,2°, oko 66 piksela na uređaju A), pa je dobra praksa najmanje dijelove (prekidač, oslonac) na toj razini potpuno izostaviti ili spojiti s šasijom.
A2. Razlučivost teksture. Dio šasije dug 220 mm pokriven je jednom teksturom. Korisnik ga drži na 0,5 m od očiju u uređaju A (2448 px na 116°). Koliko piksela zaslona pada na 1 mm površine? Je li 1024 px dovoljno, a je li 512 px dovoljno? Zašto nije potrebna 2048 px?
Prikaži rješenje
gustoća piksela A = 2448 / 116 ≈ 21,1 piksela po stupnju
kut 1 mm na 0,5 m = 2 · arctg(0,5 / 500) = 0,115° → 0,115 · 21,1 ≈ 2,4 piksela po mm
Gustoća teksela na šasiji: 512 / 220 = 2,3 teksela/mm; 1024 / 220 = 4,7 teksela/mm; 2048 / 220 = 9,3 teksela/mm.
Uz 512 px tekstura je na granici (2,3 teksela na 2,4 piksela) i izbliza bi djelovala mutno. Uz 1024 px na svaki piksel zaslona dolaze oko dva teksela, što je dovoljno i ostavlja rezervu za pogled s 0,3 m. Tekstura 2048 px daje četiri teksela po pikselu koje zaslon ne može prikazati, a zauzima četiri puta više memorije — zato je u početnim podacima propisano smanjenje 2048 → 1024 px. Za uređaj B (2064 / 110 ≈ 18,8 piksela po stupnju) zaključak je isti.
A3. Memorija tekstura. Svaki od 12 dijelova ima jedan materijal s tri mape (boja, normale, kombinirana mapa). Koliko memorije grafičke kartice zauzimaju teksture robota uz 2048 px i uz 1024 px, bez kompresije i s blokovnom kompresijom od 8 bita po pikselu? Mip-razine povećavaju zauzeće za trećinu. Zašto je glTF datoteka od 3,2 MB mnogo manja od toga?
Prikaži rješenje
1024 × 1024 × 4 B = 4 MB; s mip-razinama 4 · 4/3 ≈ 5,3 MB po mapi
2048 × 2048 × 4 B = 16 MB; s mip-razinama ≈ 21,3 MB po mapi
Broj mapa je 12 · 3 = 36.
| Razlučivost | Bez kompresije | Blokovna kompresija (1 B/px) |
|---|---|---|
| 2048 px | 36 · 21,3 = 768 MB | 36 · 5,3 = 192 MB |
| 1024 px | 36 · 5,3 = 192 MB | 36 · 1,33 = 48 MB |
Uz 1024 px i kompresiju robot zauzima oko 48 MB, što je malo i za karticu od 8 GB i za memoriju samostalnih naočala koju dijele sustav, aplikacija i zasloni. Datoteka glTF od 3,2 MB manja je jer su u njoj slike spremljene u formatima za prijenos (npr. PNG ili JPEG) koji se pri učitavanju raspakiraju; veličina na disku i zauzeće memorije nisu isto. (MB se ovdje računa kao 1024 × 1024 B.)
A4. Mjerilo, osi i ishodište kotača. CAD model je u milimetrima s osi Z prema gore. Razvojno okruženje A radi u centimetrima (npr. Unreal Engine), a razvojno okruženje B u metrima (npr. Unity). Kolik je robot u sceni ako se model u milimetrima uveze bez pretvorbe? Gdje mora biti ishodište kotača i zašto? Koliki je polumjer kotača u jedinicama obaju okruženja?
Prikaži rješenje
Bez pretvorbe broj 220 (mm) čita se kao 220 jedinica: u okruženju s centimetrima robot je dug 220 cm = 2,2 m (deset puta prevelik), a u okruženju s metrima 220 m (tisuću puta prevelik). U VR-u se to odmah vidi: robot veći od stola ili stol koji seže do koljena. Zato se pretvorba upisuje u protokol D02 i provjerava mjernim objektom od 1 m.
polumjer kotača r = 65 / 2 = 32,5 mm = 3,25 cm = 0,0325 m
Ishodište kotača mora biti na osi vrtnje, u središtu glavine. Tada se kotač okreće oko vlastite osi i skripta može zadati kut izravno iz simulacije. Ako ostane ishodište cijelog sklopa iz CAD sustava (npr. kut šasije), kotač se pri vrtnji „ljulja“ oko pogrešne točke. Os gore mora se uskladiti s okruženjem (mnoga okruženja imaju drugu os prema gore nego CAD sustav); nakon uvoza robot mora stajati na kotačima, ne na boku.
Faza 2: scena i interakcija
U drugoj fazi gradi se laboratorij i sve što korisnik radi rukama. Načela su neovisna o alatu: scena se sastoji od objekata s komponentama, a ponašanje se pokreće događajima (pritisak tipke, ulazak ruke u zonu, sudar). Primjer izvedbe je okruženje s nacrtima (npr. Unreal Engine s predloškom za VR); u okruženju s C# skriptama (npr. Unity s paketom za XR interakciju) iste uloge imaju komponente za hvatanje i interaktore. Nazivi predložaka i komponenata mogu se razlikovati po inačici.
Dokumenti koje treba izraditi
- VR1-D03 Hijerarhija scene — stablo objekata (kao na slici P.2), uloga svakog objekta (okoliš, interaktivni, informacijski, avatar), koji su objekti statični, a koji pomični, i gdje se nalaze varijable stanja.
- VR1-D04 Opis interakcija — dijagram toka hvatanja (kao na slici P.3), tablica priključnih točaka za 12 dijelova s dopuštenim odstupanjem, tekstovi šest točaka interesa (do 60 riječi svaki), način kako isti tekst otvaraju kontroler, pogled i miš.
Zadaci s rješenjem
B1. Pozivi za crtanje na uređaju B. U prvoj izvedbi uređaj B postiže 72 sl/s uz 214 poziva za crtanje (okoliš 168, dijelovi robota i njihovi prozirni ciljni položaji 24, ruke i kontroleri 4, oznake i ploče točaka interesa 12, izbornik 4, luk teleporta 2). Granica za B je 150 poziva. Predložite mjere i izračunajte stanje nakon njih, ako se okoliš spajanjem statičkih mreža i atlasom tekstura svede na 98 poziva, ploče točaka interesa zamijene jednom zajedničkom pločom koja se prikazuje samo za aktivnu točku, a izbornik smanji na 3 poziva.
Prikaži rješenje
prije: 168 + 24 + 4 + 12 + 4 + 2 = 214 poziva
poslije: 98 + 24 + 4 + (6 + 1) + 3 + 2 = 138 poziva ≤ 150 ✓
Smanjenje ukupno (214 − 138) / 214 = 35,5 %; sam okoliš (168 − 98) / 168 = 41,7 %. Iskorištenje granice 138 / 150 = 92 %, uz rezervu od 12 poziva.
Dijelovi robota ostaju odvojeni (24 poziva) jer se svaki zasebno hvata i giba; spajati se smiju samo objekti koji se nikad ne pomiču. Pozivi se broje u alatu za profiliranje, u pogledu u kojem je vidljivo najviše objekata, a ne u prosjeku. Uz jednoprolazno iscrtavanje za oba oka (engl. single-pass ili multiview) jedan poziv crta objekt za oba oka; bez njega broj se praktički udvostručuje, pa je provjera te postavke u projektu prvi korak optimizacije.
B2. Dohvat i visina. Korisnik je visok 1,75 m; oči su mu na oko 1,64 m, a ruka s kontrolerom u opuštenom položaju na oko 1,05 m. Stol je visok 750 mm i dubok 800 mm; korisnik stoji uz dužu stranicu. Može li dosegnuti dio na suprotnom rubu stola rukom (granica hvatanja 0,8 m) i zašto je visina kamere u sceni zadana praćenjem, a ne fiksnim brojem?
Prikaži rješenje
Uz pretpostavku da je šaka pri hvatanju blizu ruba stola na strani korisnika, vodoravna udaljenost do suprotnog ruba je 0,8 m, a visinska razlika oko 1,05 − 0,75 = 0,30 m:
d = √(0,8² + 0,3²) = √0,73 ≈ 0,85 m > 0,8 m
Dio na samom suprotnom rubu nije dohvatljiv hvatanjem rukom iz opuštenog položaja; korisnik se nagne (tada je dostupan) ili upotrijebi zraku do 3 m. Zaključak za projekt: dijelove na početku postavite u pojas do 0,5 m od ruba na strani korisnika, a zraku ostavite za dijelove koji su se otkotrljali.
Visinu kamere daje praćenje glave u odnosu na pod prostora za igru (ishodište na razini poda). Kad bi se kamera postavila na fiksnih npr. 1,70 m, niži bi korisnik vidio stol niže nego što ga osjeća rukom, a mjerilo 1 : 1 za njega ne bi vrijedilo. Fiksna visina ima smisla samo u načinu rada sjedeći, i tada se jasno označuje.
B3. Jedna logika točke interesa, više ulaza. Opišite komponentu točke interesa tako da je istu logiku moguće pokrenuti mišem (bez naočala), pogledom (zadržavanje pogleda 1 s), zrakom kontrolera i gestom ruke. Koje stanje i koji događaji su potrebni i gdje je pogreška ako svaki ulaz ima svoju kopiju teksta?
Prikaži rješenje
Komponenta točke interesa ima tri događaja: ulazak (pokazivač je nad točkom: istakni oznaku), izlazak (ukloni isticanje) i odabir (otvori ploču s tekstom, pusti zvuk, zapiši u stanje da je točka posjećena). Stanje: posjecena (logička varijabla) i tekst (jedan niz po točki). Ulazi su samo izvori tih događaja: miš zrakom iz kamere zaslona, pogled zrakom iz središta kamere naočala uz odbrojavanje od 1 s, kontroler svojom zrakom i tipkom, gesta prstohvata (engl. pinch), dodira vrhova palca i kažiprsta.
Ako svaki ulaz ima svoju kopiju teksta i svoju logiku, izmjena teksta mora se napraviti četiri puta, a pogreške se razlikuju po ulazu (npr. pogled otvara ploču, a ne bilježi posjet). Ispravno je: jedna komponenta, jedan tekst, više izvora događaja. Tako se cijela logika ispituje mišem na računalu, bez naočala, a u XR-u se samo dodaju ulazi.
B4. Prebacivanje iz ruke u ruku i fizika. Kotač se drži lijevom rukom. Desna ruka ga uhvati. Nabrojite korake koje logika mora izvesti i navedite dvije pogreške koje nastaju ako se neki korak izostavi. Kolika je masa kotača za fiziku ako se ukupna masa 1,2 kg raspodijeli tako da baterija ima 0,12 kg, motori po 0,10 kg, šasija 0,35 kg, poklopac 0,15 kg, pločica 0,06 kg, a ostatak se jednako podijeli na kotače, oslonac, oba senzora i prekidač?
Prikaži rješenje
Koraci: (1) desna ruka javlja hvatanje dijela koji je već držan; (2) lijeva ruka otpušta dio bez uključivanja fizike; (3) dio se pričvršćuje na desnu ruku s istim relativnim položajem kakav je imao u trenutku hvata (bez skoka); (4) animacija lijeve ruke vraća se u otvoreni položaj; (5) varijabla „tko drži“ mijenja se u desnu ruku.
Ako se izostavi korak 2, dio je istodobno dijete obiju ruku i trza se između njih. Ako se u koraku 2 uključi fizika, dio na jedan okvir padne i „propadne“ kroz desnu ruku ili odskoči.
ostatak = 1,20 − (0,12 + 2 · 0,10 + 0,35 + 0,15 + 0,06) = 1,20 − 0,88 = 0,32 kg
Ostatak se dijeli na 6 dijelova (2 kotača, oslonac, 2 senzora, prekidač): 0,32 / 6 ≈ 0,053 kg, pa kotač u fizici ima oko 0,05 kg. Zbroj svih masa mora biti 1,2 kg, jer se sklopljeni robot u fizici vožnje ponaša kao jedno tijelo te mase (jedinica 3.6).
Faza 3: kretanje i udobnost
Kretanje je dio VR aplikacije koji najviše utječe na kinetozu (bolest simulatora). Uzrok je nesklad: oči vide gibanje, a vestibularni sustav u unutarnjem uhu ne osjeća ubrzanje. Teleport i okretanje u koracima taj nesklad izbjegavaju jer nema prividnog kontinuiranog gibanja; kontinuirano kretanje ga stvara, pa se nudi samo kao izborna postavka uz vinjetu koja sužava vidno polje za vrijeme gibanja.
Dokument koji treba izraditi
- VR1-D05 Postavke kretanja i udobnosti — zadani način kretanja i obrazloženje; najveća duljina luka teleporta i pravila za valjani cilj (pod, ne stol, ne izvan laboratorija, ne bliže od 0,3 m zidu); korak okretanja; brzina kontinuiranog kretanja i postavke vinjete; način sjedeći i stojeći; što se mijenja u izborniku postavki.
Zadaci s rješenjem
C1. Luk teleporta. Luk se računa kao kosi hitac iz kontrolera na visini h = 1,1 m (kao u jedinici 3.5 i vježbi V13), pod kutom α = 45°. Kolika mora biti početna brzina v da domet po podu bude točno 4,0 m? Na kojoj je udaljenosti i visini vrh luka? Zašto se u izvedbi domet ograničava i provjerom duljine, a ne samo brzinom?
Prikaži rješenje
x(t) = v · cos α · t; y(t) = h + v · sin α · t − g · t² / 2
domet: R = (v · cos α / g) · (v · sin α + √((v · sin α)² + 2 · g · h))
Uz R = 4,0 m, h = 1,1 m, α = 45° jednadžba se rješava numerički (npr. raspolavljanjem u Pythonu ili tabličnom kalkulatoru): v ≈ 5,55 m/s, vrijeme leta t ≈ 1,02 s. Provjera: 5,55 · 0,707 = 3,92 m/s; √(3,92² + 2 · 9,81 · 1,1) = √(15,39 + 21,58) = 6,08; R = 3,92 / 9,81 · (3,92 + 6,08) = 0,400 · 10,00 = 4,0 m ✓.
vrh: x = v² · sin 2α / (2g) = 5,55² / 19,62 ≈ 1,57 m; y = h + (v · sin α)² / (2g) = 1,1 + 15,39 / 19,62 ≈ 1,88 m
Kad korisnik podigne kontroler više ili ga nagne pod drugim kutom, domet se mijenja (npr. pod 45° iz visine 1,6 m domet je veći od 4 m). Zato se luk računa do najviše 4 m vodoravne udaljenosti ili do sudara, a cilj izvan toga označuje se kao nevaljan (luk mijenja izgled, teleport se ne izvodi). Bez visine (h = 0) za isti domet trebalo bi v = √(R · g) = 6,26 m/s — razlika pokazuje zašto se visina kontrolera ne smije zanemariti. Računski prikaz jedinice 3.5 sa zadanih 5,5 m/s daje 3,94 m, dakle nešto ispod granice.
C2. Kontinuirano kretanje i okretanje. Koliki je pomak po okviru pri kontinuiranom kretanju od 1,5 m/s uz 90 Hz i koliko traje prelazak laboratorija po duljini od 8 m? Koliko koraka od 30° treba za okret od 360° i koliko bi isti okret trajao kontinuiranim okretanjem od 90°/s?
Prikaži rješenje
pomak po okviru = 1,5 m/s / 90 Hz = 0,0167 m = 16,7 mm
prelazak 8 m: t = 8 / 1,5 = 5,3 s (po širini 6 m: 4,0 s)
okret 360°: 360 / 30 = 12 koraka; glatko: 360 / 90 = 4 s
Pomak od 16,7 mm po okviru je glatko gibanje koje oko jasno opaža, a tijelo ne osjeća — zato je taj način izborni i ide uz vinjetu. Okretanje u koracima izvodi se trenutačno (u jednom okviru, po potrebi uz kratko zatamnjenje), pa nema prividne kutne brzine. Dvanaest pritisaka za puni okret je puno, ali u VR-1 korisnik se ionako okreće tijelom: stol je u prostoru za igru, a koraci služe samo nakon teleporta.
C3. Zadani način kretanja. U ispitivanju je sudjelovalo 8 ispitanika. Jedan je pri kontinuiranom kretanju osjetio blagu mučninu, pri teleportu nitko. Koliki je to udio i koji zaključak slijedi za zadane postavke? Zašto se kontinuirano kretanje ipak ne uklanja?
Prikaži rješenje
udio = 1 / 8 = 0,125 = 12,5 %
Uzorak od 8 osoba premalen je za statistički zaključak o populaciji, ali dovoljan za projektnu odluku: ako i jedan od osam korisnika ima teškoće s nekim načinom, taj način ne smije biti zadan. Zato je teleport zadani način, a kontinuirano kretanje ostaje izborna postavka s uključenom vinjetom. Iskusni korisnici često ga preferiraju jer je prirodniji za kratke pomake, a uklanjanje bi smanjilo pristupačnost za one koji teleport doživljavaju kao dezorijentirajući. Odluka se upisuje u D05 i u izvješće, s brojem ispitanika i opisom uvjeta.
Faza 4: ispitivanje i izvješće
U zadnjoj fazi aplikacija se ispituje prema planu, na oba uređaja, s mjerenjem performansi i s ispitanicima. Ispitivanje nije „probali smo i radi“, nego provedba unaprijed zapisanih testnih slučajeva: svaki ima oznaku, uvjet, postupak, očekivani rezultat i zapis stvarnog rezultata. Test koji padne ne briše se, nego se zapisuje pogreška, ispravak i ponovljeni test.
Dokumenti koje treba izraditi
- VR1-D06 Plan i izvješće o ispitivanju — tablica testnih slučajeva T01–T18 sa stvarnim rezultatima za uređaje A i B; popis pogrešaka s ispravcima; mjerenja iz alata za profiliranje (vrijeme okvira CPU i GPU, najmanji broj sl/s, pozivi za crtanje, trokuti u najzahtjevnijem pogledu); sažetak udobnosti ispitanika; prijedlozi izmjena zahtjeva.
- VR1-D07 Izvedbene datoteke — paket za A i paket za B, upute za instalaciju i pokretanje, video u trajanju od 2 do 3 minute snimljen iz naočala.
Testni slučajevi
Stupac Referentna izvedba prikazuje rezultat prvog kruga ispitivanja primjerne izvedbe projekta: prošlo je 16 od 18 testova. Vaš projekt ima vlastite rezultate; tablica pokazuje oblik i razinu detalja koja se očekuje.
| Oznaka | Što se ispituje | Postupak i uvjet | Očekivani rezultat | Uređaj | Referentna izvedba |
|---|---|---|---|---|---|
| T01 | instalacija i pokretanje (Z04) | instalirati paket, pokrenuti, mjeriti do prve slike scene | ≤ 10 s; paket ≤ 1,5 GB (A), ≤ 500 MB (B) | A, B | prolaz |
| T02 | mjerilo i visina (Z05) | virtualnim metrom izmjeriti stol i robot; stvarnom rukom dotaknuti rub stola | stol 750 mm, robot 220 mm, ruka na rubu | A, B | prolaz |
| T03 | granica sigurnosti (Z06) | prići granici prostora za igru | granica vidljiva, 0,3 m od zida | A, B | prolaz |
| T04 | praćenje u prostoru (Z06) | obići stol, sagnuti se do poda, ruke iza leđa i iznad glave | glava bez skokova; kratki gubitak kontrolera bez pada aplikacije | A, B | prolaz |
| T05 | ruke i tipke (Z07) | pritisnuti okidač i tipku hvata na oba kontrolera | ruka se zatvara razmjerno pritisku | A, B | prolaz |
| T06 | hvatanje rukom (Z08) | uhvatiti svih 12 dijelova rukom s udaljenosti do 0,8 m | 12 / 12 dijelova se hvata | A, B | prolaz |
| T07 | hvatanje zrakom (Z08) | uhvatiti dio zrakom s 1, 2 i 3 m | dio dolazi u ruku; na 3,5 m ne | A, B | prolaz |
| T08 | prebacivanje (Z08) | prebaciti kotač iz lijeve u desnu ruku 10 puta | bez skoka i bez pada dijela | A, B | prolaz |
| T09 | dio ispod ruba stola (Z08) | ispustiti prekidač da padne uz rub stola; pokušati ga uhvatiti | dio se može uhvatiti ili se vraća na stol | A, B | pad: ruka udara u koliziju ploče stola, prekidač se ne može uhvatiti |
| T10 | sklapanje (Z09) | složiti svih 12 dijelova na šasiju | svaki dio uskoči u svoju točku; brojač 12 / 12 | A, B | prolaz |
| T11 | točke interesa (Z10) | otvoriti 6 točaka kontrolerom, pogledom i mišem (bez naočala) | isti tekst na sva tri ulaza; posjet zabilježen | A, B, PC | prolaz |
| T12 | teleport (Z11) | ciljati pod na 2 i 4 m, stol, zid i prostor izvan laboratorija | teleport na pod do 4 m; ostali ciljevi nevaljani | A, B | prolaz |
| T13 | okretanje u koracima (Z11) | 12 puta okrenuti udesno | točno 360°, bez glatke rotacije | A, B | prolaz |
| T14 | kontinuirano kretanje (Z11) | uključiti u postavkama, kretati se 10 s | 1,5 m/s, vinjeta uključena; po zadanom isključeno | A, B | prolaz |
| T15 | vožnja robota (Z09) | uključiti prekidač sklopljenog robota | robot vozi i staje prije ruba stola | A, B | prolaz |
| T16 | performanse A (Z01–Z03) | profilirati 60 s najzahtjevnijeg pogleda | 90 sl/s, GPU i CPU ≤ 9,0 ms, najmanje 85 sl/s | A | prolaz: 90 sl/s, GPU 7,8 ms, najmanje 88 sl/s |
| T17 | performanse B (Z01, Z03) | profilirati 60 s, uključujući pogled na cijeli laboratorij iz kuta | 90 sl/s, ≤ 300 000 trokuta, ≤ 150 poziva | B | pad: 76 sl/s pri pogledu na cijeli laboratorij |
| T18 | udobnost (Z12) | 8 ispitanika, 10 min rada, upitnik nakon rada | nitko ne prekida zbog mučnine uz zadane postavke | A, B | prolaz; 1 od 8 blaga mučnina samo pri kontinuiranom kretanju |
Ispravci u referentnoj izvedbi. T09: dijelovi koji padnu ispod visine 0,70 m vraćaju se na polazno mjesto na stolu, a zona hvata ruke više se ne sudara s kolizijom ploče stola; ponovljeni test prošao. T17: okolišu (police, ormar, stol za alat) dodane su razine detalja; ponovljeni test pokazao je 90 sl/s, 138 poziva i 262 000 trokuta u najzahtjevnijem pogledu. Nakon ispravaka prolaz je 18 / 18.
Zadaci s rješenjem
D1. Budžet okvira na uređaju A. Izračunajte vrijeme okvira za 90 Hz i 120 Hz. Koliki je udio izmjerenog GPU vremena od 7,8 ms u okviru i u granici od 9,0 ms? Može li se uz isti sadržaj prijeći na 120 Hz, ako granica i dalje iznosi 81 % okvira?
Prikaži rješenje
T(90 Hz) = 1000 / 90 = 11,1 ms; T(120 Hz) = 1000 / 120 = 8,33 ms
7,8 / 11,1 = 70 % okvira; 7,8 / 9,0 = 86,7 % granice; rezerva 9,0 − 7,8 = 1,2 ms
Granica od 9,0 ms je 9,0 / 11,1 = 81 % okvira; ostatak je rezerva za pokretač, sastavljanje slike i korekciju izobličenja leća. Za 120 Hz ista granica bila bi 0,81 · 8,33 = 6,75 ms. Izmjereno GPU vrijeme od 7,8 ms veće je od toga za oko 1,05 ms, pa uz isti sadržaj 120 Hz nije ostvarivo bez dodatne optimizacije (npr. manja razlučivost iscrtavanja, jednostavnije sjene). Projekt zato ostaje na 90 Hz, što je i zahtjev Z01.
D2. Pad na uređaju B. Pri pogledu na cijeli laboratorij uređaj B pada na 76 sl/s. Koliko je vrijeme okvira i za koliko prekoračuje okvir od 90 Hz? Prije uvođenja razina detalja u okolišu u tom je pogledu bilo 410 000 trokuta (podatak za zadatak), a nakon 262 000. Je li zahtjev Z03 sada ispunjen i koliko je smanjenje?
Prikaži rješenje
T(76) = 1000 / 76 = 13,16 ms; prekoračenje 13,16 − 11,11 = 2,05 ms
smanjenje trokuta = 1 − 262 000 / 410 000 = 36,1 %; 262 000 / 300 000 = 87,3 % granice ✓
Prije ispravka zahtjev Z03 nije bio ispunjen ni po broju trokuta (410 000 > 300 000). Kad okvir ne stigne na vrijeme, mnogi pokretači prikazuju reprojicirani prethodni okvir ili prelaze na polovičnu frekvenciju, pa korisnik vidi trzaje pri okretanju glave — zato se ne mjeri prosjek, nego najzahtjevniji pogled. Robot sam (28 000 trokuta) zauzima samo 9,3 % granice za B; problem je bio okoliš, koji se u prvoj izvedbi iscrtavao u punoj razlučivosti i s udaljenosti od 7 m.
D3. Vrijeme od pokreta do fotona. Pojednostavljeni model lanca na uređaju A: očitanje i obrada praćenja 2 ms, jedan okvir iscrtavanja 11,1 ms i prikaz do sredine zaslona pola okvira. Je li zahtjev Z02 (≤ 20 ms) ispunjen? Kolika bi bila kutna pogreška slike pri okretanju glave od 100°/s kad bi kašnjenje bilo točno 20 ms i koliko je to piksela?
Prikaži rješenje
t = 2 + 11,1 + 11,1 / 2 = 18,7 ms ≤ 20 ms ✓
pogreška = 100 °/s · 0,020 s = 2,0°; 2,0 · 21,1 ≈ 42 piksela
Pomak slike od 42 piksela bio bi jasno vidljiv kao „plivanje“ scene. U stvarnosti ga pokretač smanjuje predviđanjem položaja glave za trenutak prikaza i kasnom korekcijom slike neposredno prije slanja na zaslon. Model u zadatku je procjena, a ne mjerenje: stvarne vrijednosti daju alati pokretača i profiliranja. Pri spajanju uređaja B na računalo lancu se dodaje kodiranje i prijenos slike, pa se Z02 za taj način rada provjerava zasebno.
D4. Prolaznost i ponovljeno ispitivanje. U prvom krugu prošlo je 16 od 18 testova. Koliki je to udio? Nakon ispravaka za T09 i T17 koje testove treba ponoviti i zašto ne samo ta dva?
Prikaži rješenje
prolaznost = 16 / 18 = 88,9 %
Ispravak za T09 mijenja kolizije i logiku hvatanja, pa se osim T09 ponavljaju T06–T08 i T10 (hvatanje, prebacivanje, sklapanje). Ispravak za T17 dodaje razine detalja okolišu, što može promijeniti izgled i kolizije okoliša, pa se ponavljaju T16, T17 i T12 (teleport cilja pod i namještaj). Takvo ponavljanje zove se regresijsko ispitivanje: provjerava da ispravak jedne pogreške nije stvorio novu. Tek nakon toga u izvješće se upisuje prolaz 18 / 18, uz datum oba kruga.
Oblik predaje
Projekt se predaje kao jedna mapa (sažeta u arhivu ili na zajedničkom spremištu) s ovim ustrojem. Nazivi su malim slovima, bez dijakritičkih znakova i razmaka.
vr1-tim-oznaka/
01-modeli/ izvorne datoteke programa za mrežu, glTF ili FBX izvoz, teksture
02-projekt/ projekt razvojnog okruženja (bez privremenih mapa za izgradnju)
03-paketi/ vr1-pcvr (uređaj A), vr1-samostalno (uređaj B)
04-dokumenti/ VR1-D01 ... VR1-D06 u PDF-u
05-video/ vr1-video.mp4, 2 do 3 minute, snimka iz naočala
procitaj.txt članovi tima i uloge, inačica razvojnog okruženja, upute za pokretanje
- Izvješće VR1-D06 ima naslovnu stranicu (naziv projekta, oznaka tima, datum), sadržaj, poglavlja po fazama, tablicu T01–T18 s rezultatima oba kruga i prilog s mjerenjima.
- Video prikazuje cijeli tijek bez rezova: pokretanje, hvatanje, prebacivanje, jednu točku interesa, teleport, sklapanje i vožnju robota.
- Projekt se predaje bez privremenih mapa koje razvojno okruženje samo ponovno izgradi (međuspremnici, izvedene datoteke); njihovi nazivi razlikuju se po okruženju i inačici.
Pažnja
Paket za samostalne naočale ispitajte na naočalama bez spajanja na računalo prije predaje. Paket koji radi samo dok su naočale spojene kabelom nije paket za uređaj B, nego PC-VR u drugom obliku.
Kontrolna lista prije predaje
- Robot u sceni mjeri 220 mm, stol 750 mm; snimka s mjernim objektom od 1 m je u D02.
- Svih 12 dijelova ima LOD0–LOD2, kolizijski oblik, ishodište na funkcijskoj točki i masu; zbroj masa je 1,2 kg.
- Zbroj trokuta LOD0 je najviše 28 000; teksture su 1024 px, jedan materijal po dijelu.
- Hijerarhija scene u D03 odgovara stvarnoj sceni; nema objekata „Novi objekt (3)“ i sličnih naziva.
- Hvatanje rukom do 0,8 m i zrakom do 3 m, prebacivanje iz ruke u ruku i vraćanje palog dijela rade na oba uređaja.
- Šest točaka interesa ima isti tekst za kontroler, pogled i miš.
- Teleport je zadani način; luk ne dopušta cilj izvan 4 m, na stolu ni izvan laboratorija; okretanje je 30°.
- Kontinuirano kretanje je po zadanom isključeno i radi samo s vinjetom.
- Na oba uređaja 90 sl/s u najzahtjevnijem pogledu; broj trokuta i poziva unutar granica Z03; mjerenja su u D06.
- Paket A ≤ 1,5 GB, paket B ≤ 500 MB, pokretanje ≤ 10 s.
- T01–T18 provedeni, pali testovi ispravljeni i ponovljeni, regresija zapisana.
- Video,
procitaj.txti svi PDF dokumenti su u mapi; nazivi odgovaraju propisanima.
Vrednovanje
Projekt nosi 100 bodova. Za prolaz je potrebno ukupno najmanje 50 bodova i najmanje polovina bodova u svakoj fazi. Tim dobiva zajedničke bodove za faze 1–4 i predaju, a obrana se boduje pojedinačno.
| Dio | Kriterij | Bodovi |
|---|---|---|
| Faza 1: modeli (20) | budžet trokuta i razine detalja prema D01, obrazložena raspodjela | 8 |
| materijali, UV mape, teksture 1024 px, ispečene normale | 5 | |
| mjerilo 1 : 1, osi, ishodišta, protokol izvoza D02 | 4 | |
| kolizijski oblici i mase | 3 | |
| Faza 2: scena i interakcija (25) | hijerarhija i struktura scene, nazivi, D03 | 5 |
| hvatanje, puštanje, zraka, prebacivanje iz ruke u ruku | 8 | |
| šest točaka interesa s jednom logikom za više ulaza | 6 | |
| sklapanje na priključne točke i vožnja robota | 6 | |
| Faza 3: kretanje i udobnost (15) | teleport s provjerom valjanog cilja do 4 m | 6 |
| okretanje u koracima, kontinuirano kretanje s vinjetom | 6 | |
| obrazložene zadane postavke u D05 | 3 | |
| Faza 4: ispitivanje i izvješće (20) | provedba T01–T18 na oba uređaja, regresija | 8 |
| profiliranje i ispunjenje Z01–Z03 | 6 | |
| izvješće D06: jasnoća, brojevi, prijedlozi izmjena | 6 | |
| Predaja i obrana (20) | oblik predaje, paketi, video, kontrolna lista | 5 |
| obrana (pojedinačno): objašnjenje rješenja i odgovori na pitanja | 15 | |
| Ukupno | 100 |
| Bodovi | Ocjena (prijedlog) |
|---|---|
| 90–100 | izvrstan (5) |
| 80–89 | vrlo dobar (4) |
| 65–79 | dobar (3) |
| 50–64 | dovoljan (2) |
| 0–49 ili manje od polovine u nekoj fazi | nedovoljan (1) |
Pitanja za obranu
Na obrani svaki član tima dobiva tri do četiri pitanja, barem jedno izvan svoje uloge. Odgovor se pokazuje na vlastitoj aplikaciji ili dokumentu, ne napamet.
O1. Zašto je teleport zadani način kretanja u VR-1, iako je kontinuirano kretanje prirodnije?
Prikaži rješenje
Kontinuirano kretanje stvara nesklad između vida (gibanje) i vestibularnog sustava (nema ubrzanja), što uzrokuje kinetozu. U ispitivanju je 1 od 8 ispitanika osjetio mučninu samo pri kontinuiranom kretanju. Teleport i okretanje u koracima nemaju prividnog gibanja. Kontinuirano kretanje ostaje izborno, uz vinjetu, za korisnike koji ga podnose.
O2. Pokažite gdje je ishodište kotača i objasnite što bi se dogodilo da je ostalo ishodište iz CAD sklopa.
Prikaži rješenje
Ishodište je u središtu glavine, na osi vrtnje. S ishodištem sklopa kotač bi se okretao oko pogrešne točke i opisivao krug umjesto vrtnje na mjestu; kut iz simulacije ne bi se mogao izravno primijeniti. Ishodište određuje i točku za koju se kotač drži u ruci i točku koja uskače u priključno mjesto na motoru.
O3. Koliko piksela po stupnju ima uređaj A, a koliko B, i što to znači za najmanji čitljivi tekst na točki interesa?
Prikaži rješenje
A: 2448 / 116 ≈ 21,1; B: 2064 / 110 ≈ 18,8 piksela po stupnju. Ljudsko oko razlučuje oko 60 piksela po stupnju (jedna kutna minuta), pa je VR slika znatno grublja od stvarnosti. Tekst mora biti krupniji nego na zaslonu računala: slovo visoko npr. 20 piksela treba na B oko 1,1°, što na udaljenosti od 1 m iznosi oko 19 mm. Zato su ploče točaka interesa kratke i krupnog pisma.
O4. Zašto se dijelovi robota ne spajaju u jednu mrežu radi manje poziva za crtanje, a okoliš se spaja?
Prikaži rješenje
Spojena mreža giba se kao cjelina. Dijelovi robota hvataju se i gibaju zasebno, pa moraju ostati zasebni objekti. Okoliš (zidovi, police, ormar) nikad se ne pomiče, pa spajanje i atlas tekstura smanjuju pozive bez gubitka funkcije. U referentnoj izvedbi okoliš je sveden sa 168 na 98 poziva.
O5. Objasnite ispravak testa T09 i zašto nije bio dovoljan samo veći doseg ruke.
Prikaži rješenje
Prekidač je pao uz rub, ispod ploče stola, a zona hvata ruke zapinjala je o koliziju ploče pa do dijela nije mogla doći. Veći doseg ne rješava problem jer zona i dalje udara u ploču, a povećava rizik da se nehotice uhvati susjedni dio. Ispravak ima dva dijela: zona hvata ne sudara se s kolizijom stola, a dio koji padne ispod 0,70 m vraća se na polazno mjesto, pa zadatak ostaje rješiv i kad korisnik ne može do dijela.
O6. Kako ste izmjerili da aplikacija drži 90 sl/s i zašto prosjek nije dovoljan?
Prikaži rješenje
Alatom za profiliranje razvojnog okruženja ili pokretača, 60 s u najzahtjevnijem pogledu, uz zapis vremena CPU i GPU po okviru i najmanje vrijednosti. Prosjek od 90 sl/s može skrivati kratke padove od kojih korisnik vidi trzaje; zato zahtjev traži i najmanju vrijednost. Na B je pad na 76 sl/s nastao samo pri pogledu na cijeli laboratorij, što se u prosjeku ne bi vidjelo.
O7. Što znači da je točka interesa „jedna logika, više ulaza“ i kako to pokazujete bez naočala?
Prikaži rješenje
Jedna komponenta s događajima ulaska, izlaska i odabira i s jednim tekstom; miš, pogled, kontroler i geste samo pozivaju te događaje. Bez naočala pokazuje se mišem: pokazivač nad točkom je istakne, klik otvori ploču, posjet se zabilježi. U XR-u ista točka radi zrakom kontrolera i zadržavanjem pogleda, bez promjene logike.
O8. Zašto je teksturna mapa smanjena s 2048 na 1024 px i koliko je memorije time ušteđeno?
Prikaži rješenje
Na 0,5 m od očiju uređaj A daje oko 2,4 piksela po mm, a 1024 px na 220 mm daje 4,7 teksela po mm — dovoljno. Uz 36 mapa s blokovnom kompresijom i mip-razinama zauzeće pada sa 192 MB na 48 MB, dakle za 144 MB (75 %). Na samostalnim naočalama ta memorija treba sustavu i ostatku scene.
O9. Kako se robot u VR-1 pokreće: tko računa gibanje kotača i što ide u kojem smjeru?
Prikaži rješenje
Kad se prekidač uključi, aplikacija šalje naredbu (brzine lijevog i desnog kotača) simulatoru robota ili ugrađenom kinematskom modelu, a natrag dobiva položaj robota i kutove kotača. Pri brzini od npr. 0,2 m/s kotač Ø65 mm (opseg 204 mm) okreće se oko 0,98 okretaja u sekundi, odnosno oko 3,9° po okviru pri 90 Hz. Ako simulator šalje podatke 50 puta u sekundi, na jednu poruku dolazi 1,8 okvira, pa se položaj između poruka interpolira da gibanje bude glatko. Senzori linije zaustavljaju robot prije ruba stola.
O10. Po čemu se razlikuju vanjsko praćenje uređaja A i unutarnje praćenje uređaja B u vašem ispitivanju?
Prikaži rješenje
A: bazne stanice na zidovima definiraju prostor; praćenje je stabilno i kad su ruke iza leđa ili iznad glave, dok ih vidi barem jedna stanica, ali sustav traži postavljanje i kalibraciju. B: četiri kamere na naočalama prate prostor i kontrolere; nema postavljanja stanica, ali kontroler izvan vidnog polja kamera (iza leđa, blizu naočala) praćenje nakratko nadomješta inercijskim mjernim jedinicama i procjenom. U T04 zato se posebno ispituju ruke iza leđa i iznad glave.
Za nastavnika
Otvori upute za nastavnika
Priprema
Prije početka pripremite STEP datoteku robota MR-1 (ili drugog sklopa od desetak dijelova sličnog opsega), provjerite da se prazan VR projekt izgrađuje za oba uređaja i da na svakom računalu radi pokretač OpenXR. Oprema po timu: jedno računalo s grafičkom karticom za VR, uređaj A ili B (idealno pristup obama barem u petom i šestom tjednu) i označen prostor za igru od najmanje 2,0 × 1,5 m. Pripremite pribor za higijenu (jednokratne ili perive obloge za lice, sredstvo za čišćenje) i pravila za uporabu u skupini.
Tijek i kontrolne točke
- 1. tjedan: podjela uloga, dogovor o nazivima i spremištu; KT1 — prazna scena na oba uređaja na 90 sl/s.
- 2. tjedan: KT2 — robot u sceni u mjerilu, D01 popunjen. Tko ima robot od 2,2 m, dobiva uputu da ponovi provjeru mjernim objektom; rješenje se ne kazuje.
- 3.–4. tjedan: interakcija i kretanje; KT3 — cijeli tijek na A.
- 5. tjedan: KT4 — prvi krug T01–T18; tražite tablicu sa stvarnim, a ne očekivanim rezultatima.
- 6. tjedan: ispravci, regresija, predaja i obrana (oko 15 minuta po timu i 5 minuta pitanja po članu).
Očekivani rezultati
Funkcionalna aplikacija na barem jednom uređaju u punom opsegu i na drugom s dokumentiranim ograničenjima, D01–D06 s brojevima iz vlastitih mjerenja, video bez rezova. Očekuje se da barem jedan test u prvom krugu padne; tim koji prijavi 18 / 18 u prvom krugu vjerojatno nije ispitivao najzahtjevnije uvjete (pogled na cijeli laboratorij, dio koji padne s ruba, ruke iza leđa).
Česte pogreške
- Uvoz bez pretvorbe jedinica: robot 10 ili 1000 puta prevelik; ili se mjerilo „popravi“ skaliranjem objekta u sceni umjesto u izvozu.
- Ishodišta ostavljena iz CAD sklopa; kotači se okreću oko kuta šasije.
- Kolizija generirana iz vidljive mreže (tisuće trokuta) umjesto jednostavnih oblika.
- Fizika uključena na dijelu dok ga ruka drži; dio podrhtava ili propada kroz ruku.
- Kamera postavljena na fiksnu visinu; kod nižih korisnika stol „lebdi“.
- Ploče točaka interesa pune teksta sitnim slovima koje se na 19 piksela po stupnju ne može pročitati.
- Performanse mjerene samo na A ili samo u uređivaču, bez paketa za B.
- Pali testovi izbrisani iz tablice umjesto da su zapisani s ispravkom.
Inačica bez naočala
Ako tim nema stalan pristup naočalama, fazu 2 i dio faze 3 radi u načinu s mišem ili sa simulatorom uređaja koji nudi razvojno okruženje; točke interesa, hvatanje zrakom i teleport mogu se potpuno ispitati mišem. Testovi T02–T05, T16–T18 zahtijevaju naočale i provode se u terminu dogovorenom unaprijed.
Sigurnost i higijena
Tijekom ispitivanja s ispitanicima uz korisnika uvijek stoji promatrač koji pazi na kabel i prepreke. Ispitanik smije prekinuti u svakom trenutku bez obrazloženja; ispitivanje traje najviše 10 minuta po osobi, s pauzom. Naočale i kontroleri čiste se nakon svake osobe.
Vrednovanje obrane
| Kriterij | Bodovi |
|---|---|
| objašnjava vlastiti dio na aplikaciji ili dokumentu, s brojevima | 5 |
| odgovara na pitanje izvan svoje uloge | 4 |
| obrazlaže jednu projektnu odluku (npr. zadani način kretanja, raspodjelu trokuta) | 3 |
| služi se stručnim nazivljem, uključujući engleske nazive (LOD, draw call, motion-to-photon, snap turn) | 3 |
| Ukupno | 15 |