Preskoči na sadržaj
FORTRONIQ

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.

Moći ću:
  • 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-1MjeraKako provjeriti u naočalama
Radni stolvisina 750 mm, ploča 1600 × 800 mmploča je znatno ispod lakta, otprilike u visini zapešća opuštene ruke; kontroler ne „tone“ kroz ploču
Robot MR-1220 × 180 × 110 mmdrži se objema rukama ili jednom odozgo; dulji je od kontrolera
Pogonski kotačØ65 mmnešto manje od širine dlana
Laboratorij8 × 6 m, visina 3 mstrop je jasno iznad glave, ali nije dvorana
Kontroler ili model rukestvarna 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.

Blender glTF 2.0 Unreal Unity Z X Y Y X Z Z Y X Y X Z desni, Z goremetar desni, Y goremetar lijevi, Z gorecentimetar lijevi, Y goremetar
Slika 1.1 — Koordinatne osi i osnovne jedinice u formatu glTF 2.0 i u primjerima programa (npr. Blender za slobodno modeliranje, npr. Unreal Engine i Unity kao razvojna okruženja). Tirkizna kosa os gleda u prostor, a kod glTF-a prema promatraču (+Z je prednja strana modela).

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-1Preporučeno ishodišteRazlog
Laboratorij (prostorija)na podu, u točki gdje korisnik započinjekorisnik se pojavljuje na mjestu koje je predviđeno, okrenut prema stolu
Radni stolna podu, ispod sredine pločestol se postavlja jednim brojem visine 0 i ne lebdi
Robot MR-1 (sklop)na podlozi, između dodirnih točaka kotačarobot 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štadio se u ruci ne njiše oko udaljene točke
Pogonski kotačna osi vrtnjevrtnja 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.

izvor istine obrada mreže scena i logika prikaz CAD sustav Program zamrežu Razvojnookruženje Naočale STEP 38 MBparametri 312 000 → 28 000UV, ishodišta glTF 3,2 MBkolizija, LOD 90 Hz11,1 ms izmjena konstrukcije: lanac se ponavlja od izvora postavke svake karike zapisane su u dogovoru projekta
Slika 1.2 — Lanac pripreme modela za virtualnu stvarnost s brojevima robota MR-1. Podaci teku u jednom smjeru; izmjena konstrukcije ne popravlja se u sceni, nego u izvoru, nakon čega se lanac ponavlja.
  1. 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.
  2. 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.
  3. 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.
  4. 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-1TrokutaUdio budžeta A (750 000)Udio budžeta B (300 000)
Fina teselacija iz CAD-a312 00041,6 %104 % — ne stane ni sam
LOD0 (blizu)28 0003,7 %9,3 %
LOD1 (od 1,5 m)9 0001,2 %3,0 %
LOD2 (od 4 m)2 5000,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:

  1. 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.
  2. Osi: koja os gleda gore i koja je strana modela prednja u svakom programu lanca, s napomenom kako se prevode.
  3. Ishodišta: pravila iz tablice u prethodnom odjeljku, za svaku vrstu objekta.
  4. 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.
  5. Budžet: ciljani broj trokuta i materijala za svaki objekt, izveden iz budžeta scene za oba uređaja.
  6. 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.

Kutna veličina objekta u naočalamaRačunski prikaz

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.

Duljina u sceni—
Kutna veličina—
Piksela po stupnju—
Zauzeto piksela (jedno oko)—

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

PojamZnač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: