MODUL 1 · MODELIRANJE DIGITALNIH OBJEKATA ZA VIRTUALNU STVARNOST
Nastavna jedinica 1.1
Uvod u 3D modeliranje za virtualnu stvarnost
Što se mijenja kad 3D model više ne gledate na zaslonu, nego stojite pokraj njega: mjerilo 1 : 1, jedinice i koordinatne osi, ishodište i nulta razina poda te lanac od CAD sustava preko programa za obradu mreže do razvojnog okruženja. Sve na primjeru virtualnog laboratorija VR-1 i mobilnog robota MR-1.
- objasniti zašto se model za virtualnu stvarnost izrađuje i provjerava u mjerilu 1 : 1 i u odnosu na tijelo korisnika
- razlikovati jedinice i koordinatne sustave programa za modeliranje, formata za razmjenu i razvojnog okruženja
- prepoznati posljedice pogrešne jedinice, osi ili ishodišta pri uvozu modela
- opisati lanac CAD sustav → program za obradu mreže → razvojno okruženje i ulogu svakog koraka
- povezati složenost modela s iscrtavanjem stereo para pri 90 Hz
- izračunati kutnu veličinu objekta i broj piksela koje zauzima na zaslonu naočala
Model koji se gleda tijelom
U virtualnoj stvarnosti model se ne gleda kroz prozor zaslona, nego se stoji pokraj njega, obilazi ga se i uzima u ruke. Zato se isti 3D model koji na monitoru izgleda besprijekorno u naočalama može pokazati prevelikim, nagnutim, teškim za iscrtavanje ili nezgodnim za hvatanje.
Osnove 3D modeliranja — što su vrh, brid, ploha i mreža, kako se razlikuju parametarsko i slobodno modeliranje i koji se programi za što koriste — obrađene su u području Proširena stvarnost, u jedinici Uvod u 3D modeliranje. Ovdje ih ne ponavljamo. Ova jedinica gleda isto gradivo iz kuta virtualne stvarnosti, u kojoj se mijenjaju tri stvari.
- Mjerilo. Ravnalo je tijelo korisnika: razmak njegovih očiju, visina s koje gleda i duljina ruke. Pogreška u mjerilu ne vidi se u brojkama, nego se osjeti čim korisnik stane uz stol.
- Vrijeme. Scena se za svako oko iscrtava posebno, najčešće 90 puta u sekundi. Za cijeli okvir na raspolaganju je oko 11,1 ms. Svaki suvišni trokut troši dio tog vremena, a ovisno o načinu iscrtavanja obrađuje se za oba oka.
- Ruke. Predmeti se hvataju, okreću i odlažu. Model zato mora imati smisleno ishodište, jednostavan kolizijski oblik i dijelove odvojene onako kako ih korisnik stvarno uzima.
Primjer je virtualni laboratorij VR-1: korisnik uz radni stol (1600 × 800 mm, visina 750 mm) iz dvanaest dijelova sklapa mobilni robot MR-1 (220 × 180 × 110 mm, 1,2 kg), a na kraju ga pušta da vozi po stolu.
Zapamtite
Model za virtualnu stvarnost mora zadovoljiti tri mjerila istodobno: mora biti u pravoj veličini (mjerilo 1 : 1), dovoljno lagan da se stereo par iscrta u zadanom vremenu okvira i pripremljen za dohvat rukom.
Mjerilo 1 : 1 i mjerilo tijela
Na monitoru o veličini zaključujemo iz konteksta, a u naočalama mozak veličinu procjenjuje izravno. Dva oka gledaju scenu s dvije točke udaljene za razmak zjenica (engl. interpupillary distance, IPD), a razlika između dviju slika (disparitet) daje osjećaj udaljenosti i stvarne veličine. Tome se pridružuje položaj glave koji pokretač (engl. runtime) javlja u metrima te položaj ruku preko kontrolera. Korisnikova ruka u sceni uvijek je u stvarnoj veličini — i zato odmah otkriva pogrešno mjerilo svega ostalog.
Ako je scena u krivom mjerilu, korisnik ne može „ispraviti“ dojam: robot uvećan deset puta (2,2 m umjesto 220 mm) doživljava se kao automobil, a smanjen deset puta (22 mm) kao igračka koju je teško uhvatiti. Pogreška jedinice uvijek je višekratnik od 10 ili 1000 i odmah je uočljiva.
Mjerilo tijela važno je i za raspored scene. Visina očiju odrasle osobe koja stoji obično je između 1,5 i 1,8 m, a udobna zona rada rukama nalazi se ispred tijela, u visini između struka i prsa. Dijelovi robota koji se hvataju moraju biti na dohvatu do 0,8 m; ono što je dalje hvata se zrakom (do 3 m) ili se do toga dolazi teleportom.
| Referentni predmet u sceni VR-1 | Mjera | Kako provjeriti u naočalama |
|---|---|---|
| Radni stol | visina 750 mm, ploča 1600 × 800 mm | ploča je znatno ispod lakta, otprilike u visini zapešća opuštene ruke; kontroler ne „tone“ kroz ploču |
| Robot MR-1 | 220 × 180 × 110 mm | drži se objema rukama ili jednom odozgo; dulji je od kontrolera |
| Pogonski kotač | Ø65 mm | nešto manje od širine dlana |
| Laboratorij | 8 × 6 m, visina 3 m | strop je jasno iznad glave, ali nije dvorana |
| Kontroler ili model ruke | stvarna veličina, zadaje ga pokretač | služi kao pouzdano ravnalo za sve ostalo |
Jedinice i koordinatne osi
Svaki program u lancu ima svoju osnovnu jedinicu i svoj dogovor o tome koja os gleda gore i koja naprijed. Uz to, koordinatni sustav može biti desni ili lijevi: ako palac desne ruke pokazuje os X, a kažiprst os Y, u desnom sustavu srednji prst pokazuje os Z; u lijevom sustavu os Z gleda na suprotnu stranu. Zamjena ta dva sustava pri uvozu ne mijenja samo smjer jedne osi nego i zrcali model.
Iz slike slijede tri praktična pravila. Prvo, os „gore“ nije ista u svim programima: u jednima je to Z, u drugima Y. Uvoznik taj prijelaz radi sam samo ako zna iz kojeg sustava podaci dolaze. Drugo, prelazak iz desnog u lijevi sustav uvoznik rješava promjenom predznaka jedne osi; ako se to napravi dvaput ili nijednom, model se zrcali, a lijevi kotač robota postaje desni. Treće, razvojno okruženje radi u centimetrima ili metrima, a CAD sustavi najčešće u milimetrima. I CAD sustavi se razlikuju (u nekima je uspravna os Z, u drugima Y), pa to u izvornom modelu provjerite i zapišite.
Pažnja
Formati STL i OBJ ne zapisuju jedinicu — u datoteci su samo brojevi. Dio robota duljine 220 mm izvezen kao broj 220 bit će u okruženju koje taj broj čita u centimetrima dugačak 2,2 m, a u okruženju koje ga čita u metrima 220 m. Formati glTF (uvijek metar) i FBX (jedinica zapisana u datoteci) tu su pogrešku sigurniji, ali i kod njih treba provjeriti postavke izvoza.
Ishodište, orijentacija i nulta razina poda
Svaki objekt u sceni ima vlastito ishodište (engl. pivot, origin) — točku oko koje se okreće i u kojoj ga drži ruka kad ga korisnik uhvati bez posebno zadane točke hvatanja. U CAD sustavu ishodište je obično tamo gdje je započela prva skica, što za VR rijetko odgovara.
U virtualnoj stvarnosti postoji i jedna posebna ravnina: pod. Pokretač položaj glave javlja u odnosu na pod prostora za igru, pa su oči korisnika koje su u stvarnosti na 1,65 m iznad poda i u sceni na 1,65 m iznad poda scene. Ako je pod laboratorija modeliran na visini od 0,4 m, korisnik je do koljena u podu. Zato je pod scene uvijek na nuli.
| Objekt u VR-1 | Preporučeno ishodište | Razlog |
|---|---|---|
| Laboratorij (prostorija) | na podu, u točki gdje korisnik započinje | korisnik se pojavljuje na mjestu koje je predviđeno, okrenut prema stolu |
| Radni stol | na podu, ispod sredine ploče | stol se postavlja jednim brojem visine 0 i ne lebdi |
| Robot MR-1 (sklop) | na podlozi, između dodirnih točaka kotača | robot stoji na stolu bez korekcije i okreće se oko osi vožnje |
| Dio koji se hvata (npr. baterija) | u težištu ili u sredini hvatišta | dio se u ruci ne njiše oko udaljene točke |
| Pogonski kotač | na osi vrtnje | vrtnja kotača u vožnji je čista rotacija oko ishodišta |
Dogovorite i koja je strana robota prednja (npr. strana s ultrazvučnim senzorom) te neka u svakom izvozu gleda u isti smjer. Postavljanje ishodišta obrađuje jedinica 1.3, a točke hvatanja jedinica 1.6.
Lanac od CAD sustava do naočala
Model strojnog dijela za virtualnu stvarnost rijetko nastaje u jednom programu. U praksi prolazi lanac od četiri karike, a svaka ima svoju zadaću i svoj oblik podataka.
- CAD sustav je izvor istine. U njemu su parametri, mjere, sklopovi i povijest izrade. Model je zapisan kao granični prikaz plohama (engl. boundary representation, B-rep), a ne kao trokuti. Izvorni model robota MR-1 u formatu STEP ima 38 MB.
- Teselacija i izvoz pretvaraju plohe u trokute. Pri finoj teselaciji robot ima 312 000 trokuta, što je za prikaz u stvarnom vremenu previše. Postavke teselacije i formati izvoza tema su jedinice 1.2.
- Program za obradu mreže (npr. Blender) služi za decimaciju, čišćenje topologije, UV mape, postavljanje ishodišta i imenovanje. Ovdje se robot svodi na 28 000 trokuta u najdetaljnijoj razini (LOD0). O tome govori jedinica 1.3.
- Razvojno okruženje (npr. Unreal Engine ili Unity) prima model u formatu glTF ili FBX (datoteka robota ima 3,2 MB), dodjeljuje materijale, kolizijske oblike, razine detalja i logiku. Rezultat se izgrađuje za naočale i ispituje pri 90 Hz.
Važno je da podaci teku u jednom smjeru. Promjena promjera kotača ne ispravlja se skaliranjem u sceni, nego u CAD sustavu, nakon čega se ponavljaju izvoz, obrada i uvoz. Ako se lanac ponavlja često, isplati ga se automatizirati: većina programa za obradu mreže ima skriptno sučelje kojim se isti niz koraka (uvoz, decimacija, ishodište, izvoz) izvodi jednim pokretanjem.
Složenost modela i iscrtavanje stereo para
Pri frekvenciji osvježavanja od 90 Hz vrijeme okvira iznosi 1000 / 90 = 11,1 ms. U tom vremenu obrađuju se ulaz, logika i fizika te iscrtava slika za oba oka. Cilj za VR-1 je zato niži: grafički procesor (GPU) i procesor (CPU) svaki do 9,0 ms.
tokv = 1000 / f ⇒ 1000 / 90 = 11,1 ms
Na uređaju A zasloni imaju 2 × 2448 × 2448 piksela, što je gotovo 12 milijuna piksela po okviru, odnosno oko 1,08 milijardi piksela u sekundi. Geometrija se, ovisno o načinu iscrtavanja, obrađuje za oba pogleda. Budžet scene zato je ograničen: najviše 750 000 trokuta i 1000 poziva za crtanje na uređaju A (PC-VR), a na samostalnim naočalama (uređaj B) samo 300 000 trokuta i 150 poziva.
| Model robota MR-1 | Trokuta | Udio budžeta A (750 000) | Udio budžeta B (300 000) |
|---|---|---|---|
| Fina teselacija iz CAD-a | 312 000 | 41,6 % | 104 % — ne stane ni sam |
| LOD0 (blizu) | 28 000 | 3,7 % | 9,3 % |
| LOD1 (od 1,5 m) | 9 000 | 1,2 % | 3,0 % |
| LOD2 (od 4 m) | 2 500 | 0,3 % | 0,8 % |
Iz tablice se vidi zašto izravno uvezen CAD model nije prihvatljiv: jedan mali robot potrošio bi gotovo polovinu budžeta cijele scene na PC-VR sustavu, a na samostalnim naočalama ne bi stao ni sam. Model od 28 000 trokuta ostavlja mjesta za stol, prostoriju, ruke i ostale predmete.
Drugi pogled je broj piksela koje model zauzima. Robot na 4 m na uređaju A zauzima oko 66 × 33 piksela, dakle oko 2200 piksela; s 28 000 trokuta to je više od 12 trokuta po pikselu, a razina LOD2 s 2500 trokuta daje oko jedan. Složenost modela uvijek se procjenjuje prema udaljenosti s koje ga korisnik gleda (više u jedinici 1.7).
Dogovor projekta prije prvog modela
Laboratorij VR-1 izrađuju tri osobe u šest tjedana. Kad više ljudi radi modele za istu scenu, najviše vremena gubi se na neusklađene jedinice, osi i nazive. Zato se prije prvog modela piše kratak dogovor projekta od jedne stranice. Preporučeni sadržaj:
- Jedinica i mjerilo: modeli se izrađuju u stvarnoj veličini; CAD u milimetrima, izvoz u formatu koji zapisuje jedinicu (glTF ili FBX), okruženje u svojoj osnovnoj jedinici.
- Osi: koja os gleda gore i koja je strana modela prednja u svakom programu lanca, s napomenom kako se prevode.
- Ishodišta: pravila iz tablice u prethodnom odjeljku, za svaku vrstu objekta.
- Nazivi: jedinstven i čitljiv oblik, npr.
MR1_kotac_L,MR1_baterija,VR1_stol; bez razmaka i dijakritičkih znakova, jer ih neki alati u lancu ne podnose. - Budžet: ciljani broj trokuta i materijala za svaki objekt, izveden iz budžeta scene za oba uređaja.
- Rana provjera u naočalama: prvi grubi model odmah se uvozi u scenu i gleda u naočalama uz mjernu kocku od 1 m.
Zapamtite
Pogreška mjerila ili osi otkrivena prvog dana košta pet minuta. Ista pogreška otkrivena petog tjedna, kad su na model vezani materijali, kolizije i logika, može koštati dan rada.
Kutna veličina i pikseli na zaslonu
Koliko je predmet „velik“ u naočalama ovisi o kutu pod kojim ga oko vidi. Kutna veličina predmeta duljine L na udaljenosti d iznosi α = 2 · arctan(L / 2d). Ako se kut pomnoži s brojem piksela po stupnju (engl. pixels per degree, PPD), dobiva se gruba procjena koliko piksela predmet zauzima na zaslonu jednog oka.
α = 2 · arctan(L / 2d) PPD ≈ Nvod / FOVvod N ≈ α · PPD
Broj piksela po stupnju ovdje je prosjek (vodoravni broj piksela jednog zaslona podijeljen s vodoravnim vidnim poljem). Zbog leća se gustoća u sredini i na rubu razlikuje, pa je rezultat procjena.
Iz duljine predmeta, udaljenosti i zaslona naočala računa kut pod kojim se predmet vidi i koliko piksela zauzima. Izborno simulira pogrešno protumačenu jedinicu pri uvozu.
Za zadane vrijednosti robot MR-1 (220 mm) na udaljenosti od 0,6 m, koliko je otprilike udaljen kad ga korisnik drži u rukama ili se nagne nad stol, zauzima kut od oko 20,8°. Uređaj A ima prosječno 2448 / 116 ≈ 21,1 piksela po stupnju, pa robot zauzima oko 438 piksela širine; na uređaju B (2064 / 110 ≈ 18,8) to je oko 390 piksela. Na 1,5 m kut pada na 8,4° (≈ 177 piksela na A), a na 4 m na 3,2° (≈ 66 piksela). Odatle granice razina detalja: od 1,5 m sitni vijci se ne vide, a od 4 m ni rebra kućišta. Ako odaberete pogrešku jedinice ×10, robot u sceni postaje dugačak 2,2 m i na 0,6 m zauzima više od 120°, dakle cijelo vidno polje.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| mjerilo 1 : 1 (engl. real-world scale) | model je u sceni jednake veličine kao stvarni predmet; u VR-u je ravnalo tijelo korisnika |
| razmak zjenica, IPD (engl. interpupillary distance) | udaljenost između zjenica; određuje razmak dviju kamera stereo para i osjećaj veličine |
| koordinatni sustav, desni i lijevi (engl. right-/left-handed coordinate system) | dogovor o smjeru osi; zamjena sustava bez pretvorbe zrcali model |
| ishodište (engl. pivot, origin) | točka objekta oko koje se okreće, postavlja i drži u ruci |
| teselacija (engl. tessellation) | pretvorba ploha u mrežu trokuta za prikaz u stvarnom vremenu |
| vrijeme okvira (engl. frame time) | vrijeme za izradu jednog okvira; pri 90 Hz iznosi 11,1 ms |
| poziv za crtanje (engl. draw call) | naredba grafičkom procesoru da iscrta jedan skup geometrije s jednim materijalom |
| piksela po stupnju, PPD (engl. pixels per degree) | koliko piksela zaslona pada na jedan stupanj vidnog polja; mjera oštrine prikaza |
Provjeri se
Kratka provjera prije prelaska na sljedeću jedinicu. Odgovor se potvrđuje klikom, a obrazloženje se prikazuje odmah.
Pitanje 1 od 4
Zašto se pogreška mjerila u virtualnoj stvarnosti primijeti gotovo odmah, a na monitoru često ne?
Glava i ruke praćene su u stvarnim jedinicama u odnosu na pod, a stereo par daje osjećaj stvarne veličine. Svaki predmet uspoređuje se s vlastitim tijelom.
Pitanje 2 od 4
Dio robota duljine 220 mm izvezen je u formatu koji ne zapisuje jedinicu, kao broj 220. Razvojno okruženje taj broj čita u centimetrima. Koliko je dio dugačak u sceni?
220 cm = 2,2 m, dakle deset puta više od stvarne duljine. Zato se preporučuju formati koji zapisuju jedinicu, npr. glTF ili FBX.
Pitanje 3 od 4
Gdje je preporučeno ishodište sklopa robota MR-1?
Tako robot stoji na stolu bez korekcije visine i okreće se oko osi vožnje.
Pitanje 4 od 4
Fino teselirani CAD model robota ima 312 000 trokuta. Što to znači za samostalne naočale s budžetom scene od 300 000 trokuta?
312 000 / 300 000 = 1,04, odnosno 104 %. Nakon decimacije na 28 000 trokuta udio pada na 9,3 %.
Odgovoreno 0 od 4.
Vježbe uz jedinicu
Gradivo ove jedinice priprema za sljedeće vježbe: