VJEŽBA V10 · MODUL 3 · RAZVOJ OKRUŽENJA VIRTUALNE STVARNOSTI
Vježba V10 · 2 sata
Modeli ruku i animacija prema tipkama
Modeli kontrolera u laboratoriju VR-1 zamjenjuju se modelima lijeve i desne ruke s tri položaja: otvorena ruka, pokazivanje i šaka. Položaj se miješa prema vrijednostima hvatišta i okidača, uz izglađivanje prijelaza neovisno o broju sličica.
- postaviti modele ruku na pozu hvata kontrolera i sakriti modele kontrolera
- povezati ulazne vrijednosti hvatišta i okidača s varijablama objekta ruke
- izraditi animaciju koja miješa tri položaja ruke prema težinama
- izgladiti prijelaz između položaja neovisno o broju sličica u sekundi
- izračunati težine položaja i udio modela ruku u budžetu trokuta
O vježbi
Prije vježbe proći gradivo: 3.3 Hardverski segmenti u sceni: kamera, kontroleri i ruke.
Pitanja i zadaci na ovoj stranici su bez odgovora. Rješenje s postupkom otvara se gumbom Prikaži rješenje ispod svakog pitanja, a upute za nastavnika nalaze se na dnu stranice.
Zadatak
VR pijun BP_VRPijun iz vježbe V09 dobiva modele ruku. Svaka ruka ima kostur i tri položaja: otvorena, pokazivanje (ispružen kažiprst) i šaka. Hvatište (engl. grip) savija srednji, prstenjak i mali prst, a okidač kažiprst. Iz vrijednosti hvatišta g i okidača t (0–1) računaju se težine položaja, a prijelaz iz jednog u drugi traje oko 0,1 s.
Ograničenje: najviše 5 000 trokuta po ruci, jedan materijal. Predaje se snimka nacrta ruke i nacrta animacije, tablica provjere položaja i kratka snimka zaslona s rukama nad stolom.
Oprema i pribor
- projekt VR1_Laboratorij s VR pijunom BP_VRPijun (V09)
- modeli lijeve i desne ruke s kosturom i tri položaja; ako ih predložak ili okruženje nudi, mogu se koristiti, inače se izrađuju u programu za slobodno modeliranje (npr. Blender)
- uređaj A ili B s kontrolerima koji imaju analogno hvatište i okidač
Pravila koja se primjenjuju
Ruke koje prate prste jačaju osjećaj prisutnosti, ali moraju biti u mjerilu 1 : 1 (duljina šake odrasle osobe je oko 18–20 cm) i ležati na pozi hvata tako da se stvarni i virtualni dlan poklapaju. Model ruke je dijete komponente kontrolera, a model kontrolera se skriva.
Dobra praksa: ulaz se čita u objektu ruke, ondje se izglađuje i sprema u varijable, a animacija samo čita te varijable. Izglađivanje se računa iz trajanja okvira, pa prijelaz traje jednako pri 90 i pri 72 sl/s. Položaji se miješaju težinama:
wotv = 1 − g · wpok = g · (1 − t) · wšaka = g · t
Pažnja
Lijeva ruka ne dobiva se negativnim mjerilom desne. Zrcaljenje mjerilom okreće normale i redoslijed vrhova, pa se ruka može iscrtati izvrnuto ili pogrešno osvijetljeno. Koristite zaseban lijevi model ili zrcaljenje u programu za modeliranje.
Crtež
Postupak
- Modeli. Uvezite lijevu i desnu ruku s kosturom i tri položaja kao jednookvirne animacije. Provjerite duljinu šake (18–20 cm) i ishodište u sredini dlana.
- Postavljanje. Model ruke dodajte kao dijete komponente kontrolera. Pomakom i zakretom poravnajte dlan s pozom hvata; model kontrolera sakrijte.
- Ulaz. Definirajte ulazne akcije za hvatište i okidač kao osi 0–1 za obje ruke. Ako kontroler ima samo tipku, vrijednost je 0 ili 1.
- Nacrt ruke. Izradite nacrt BP_Ruka s parametrom lijeva/desna. Svaki okvir pročitajte g i t, izgladite ih prema cilju uz trajanje okvira i spremite u varijable.
- Nacrt animacije. Izradite nacrt animacije za kostur ruke. Iz varijabli izračunajte tri težine i njima pomiješajte položaje. Prikladan je čvor za miješanje više položaja po težinama ili prostor miješanja (engl. blend space) s osima g i t; nazivi ovise o inačici.
- Provjera. Ispunite tablicu: (0; 0), (1; 0), (1; 1), (0; 1) i (0,8; 0,25). Ispišite težine uz položaj koji vidite.
- Nad stolom. Pokažite kažiprstom kotač robota i stisnite šaku iznad ploče stola; provjerite da se virtualni i stvarni dlan poklapaju.
Inačica bez naočala. Tipkama tipkovnice vrijednosti g i t se postupno povećavaju dok se tipka drži, a ruka se prikazuje ispred kamere u prozoru. Položaje se može provjeriti i u uređivaču animacija ručnim upisom vrijednosti. Poravnanje s dlanom provjerava se samo u naočalama.
Pitanja i zadaci
1. Zašto se u VR-1 prikazuju ruke umjesto kontrolera? Kada je bolje prikazati kontroler?
Prikaži rješenje
Ruke jačaju prisutnost i prirodnije je rukom hvatati dijelove robota. Kontroler je bolje prikazati pri prvom upoznavanju, kad korisnik uči koja tipka što radi, ili uz oznake tipki; dobra praksa je privremeno prikazati kontroler s oznakama u uvodnom dijelu.
2. Računski. Izračunajte težine sva tri položaja za g = 0,8 i t = 0,25 te za g = 1 i t = 0,6. Koji položaj prevladava?
Prikaži rješenje
Za (0,8; 0,25): otvorena 1 − 0,8 = 0,2; pokazivanje 0,8 · 0,75 = 0,6; šaka 0,8 · 0,25 = 0,2. Prevladava pokazivanje. Za (1; 0,6): otvorena 0; pokazivanje 1 · 0,4 = 0,4; šaka 0,6. Prevladava šaka. U oba slučaja zbroj je 1.
3. Računski. Izglađivanje je napisano bez trajanja okvira: svaki okvir vrijednost prijeđe 30 % preostale razlike do cilja. Koliko razlike ostane nakon 9 okvira i koliko to traje pri 90 i pri 72 sl/s?
Prikaži rješenje
Ostaje 0,7⁹ ≈ 0,040, tj. 4 %. Pri 90 sl/s 9 okvira traje 9 / 90 = 0,1 s, a pri 72 sl/s 9 / 72 = 0,125 s. Na sporijem uređaju prsti se savijaju 25 % sporije. Zato se udio po okviru računa iz trajanja okvira, npr. 1 − e^(−Δt/τ) uz τ ≈ 31 ms (k = 1/τ ≈ 32 1/s, oznaka iz jedinice 3.3), što pri 90 sl/s daje ≈ 0,30, a pri 72 sl/s ≈ 0,36, pa prijelaz traje jednako.
4. Računski. Obje ruke imaju po 5 000 trokuta. Koliki je to udio LOD0 modela robota (28 000 trokuta) i budžeta scene za uređaje B (300 000) i A (750 000)?
Prikaži rješenje
Ukupno 10 000 trokuta: 10 000 / 28 000 ≈ 36 % robota, 10 000 / 300 000 ≈ 3,3 % budžeta B i 10 000 / 750 000 ≈ 1,3 % budžeta A. Ruke su uvijek blizu očiju i ne koriste razine detalja, pa je 5 000 trokuta po ruci razuman gornji iznos.
5. Na kontroleru bez analognog hvatišta ruka se naglo zatvara i otvara. Zašto i kako to ublažiti?
Prikaži rješenje
Tipka daje samo 0 ili 1, pa težine skaču između krajnjih položaja. Izglađivanje s τ ≈ 31 ms pretvara skok u prijelaz od oko 0,1 s (95 % vrijednosti za 3τ ≈ 93 ms). Ako kontroler ima senzor dodira, dodir okidača može djelomično saviti kažiprst prije pritiska.
6. Zašto se ulaz čita u objektu ruke, a ne izravno u nacrtu animacije?
Prikaži rješenje
Objekt ruke zna koja je ruka i kojem kontroleru pripada, a iste vrijednosti trebaju i drugim dijelovima logike, npr. hvatanju u V11. Animacija tada samo čita varijable, pa se može provjeriti bez uređaja upisom vrijednosti, a u mnogim okruženjima se i izvodi odvojeno od ostale logike.
7. Pronađi pogrešku. Desna ruka izgleda ispravno, a lijeva je tamna i kao da se vidi iznutra. Lijeva je dobivena mjerilom −1 po jednoj osi. Objasnite.
Prikaži rješenje
Negativno mjerilo obrće redoslijed vrhova u trokutima, pa se lica koja bi trebala biti prednja tretiraju kao stražnja i uklanjaju, a normale pokazuju u pogrešnu stranu. Ispravak: zaseban lijevi model zrcaljen i ispravljen u programu za modeliranje.
8. Pri spuštanju šake na virtualni stol ruka prolazi kroz ploču. Je li to pogreška i kako se obično rješava?
Prikaži rješenje
Nije pogreška praćenja: stvarna ruka nema prepreke, a model je slijedi. Moguća rješenja: prihvatiti prolaz uz kratki zvuk ili vibraciju pri dodiru ili prikazati model zaustavljen na plohi dok stvarna ruka ide dalje. Drugo rješenje traži kolizijski oblik ruke i obrađuje se uz hvatanje u V11.
Za nastavnika
Otvori upute za nastavnika
Priprema
Pripremite modele ruku s kosturom i tri položaja ako ih okruženje ne nudi. Provjerite da kontroleri imaju analogno hvatište; ako nemaju, pitanje 5 postaje glavni dio vježbe.
Tijek sata
- 10 min: slika V10.1, težine i izglađivanje.
- 30 min: uvoz, postavljanje ruku, ulazne akcije.
- 30 min: nacrt ruke i nacrt animacije.
- 20 min: tablica provjere, provjera nad stolom, pitanja 2–4.
Očekivani rezultati
Obje ruke prate kontrolere, dlan se poklapa sa stvarnim, pet kombinacija u tablici daje očekivani položaj, prijelaz traje oko 0,1 s i ne ovisi o broju sličica.
Česte pogreške
- ruka zakrenuta 90° jer nije poravnata s pozom hvata
- zamijenjene osi g i t u animaciji
- izglađivanje bez trajanja okvira
- lijeva ruka dobivena negativnim mjerilom
Vrednovanje
| Kriterij | Bodovi |
|---|---|
| Ruke na pozi hvata, skriveni kontroleri, mjerilo | 4 |
| Ulazne akcije i varijable u nacrtu ruke | 4 |
| Miješanje triju položaja po težinama | 5 |
| Izglađivanje neovisno o broju sličica | 3 |
| Tablica provjere i odgovori na pitanja | 4 |
| Ukupno | 20 |