MODUL 1 · MODELIRANJE DIGITALNIH OBJEKATA ZA VIRTUALNU STVARNOST
Nastavna jedinica 1.5
Materijali, teksture i UV mapiranje
Kako model dobiva izgled stvarnog materijala, a da pritom ne potroši memoriju i vrijeme okvira: fizikalno utemeljeno iscrtavanje (PBR), UV mapiranje, teksture i njihov zapis, atlas tekstura i druga UV mapa za pečeno svjetlo. Sve na dijelovima mobilnog robota MR-1 iz virtualnog laboratorija VR-1.
- objasniti tijek rada metalnost i hrapavost u fizikalno utemeljenom iscrtavanju
- razmotati mrežu dijela u UV mapu sa šavovima, otocima i razmakom
- odabrati vrstu, rezoluciju i zapis teksture prema ulozi dijela u sceni
- objediniti mape okluzije, hrapavosti i metalnosti u jednu teksturu ORM
- pripremiti drugu UV mapu za pečeno osvjetljenje statičnih objekata
- procijeniti kada se isplati atlas tekstura umjesto zasebnih materijala
- izračunati memoriju tekstura i gustoću teksela za zadani dio
Materijal u virtualnoj stvarnosti
U prethodnim jedinicama model je dobio oblik, mjerilo i ispravnu mrežu. Sada dobiva izgled: boju, sjaj, hrapavost i sitne detalje koji ga čine prepoznatljivim. Osnove rada s mrežom i UV koordinatama zajedničke su svim područjima 3D prikaza i opisane su u području Proširena stvarnost, 1.3 Slobodno modeliranje. Ovdje ih gledamo iz kuta virtualne stvarnosti, gdje vrijede tri stroža uvjeta.
Prvo, korisnik dio drži u ruci i gleda ga s 30 do 40 cm, često bliže nego što bi ikad prišao zaslonu. Svaka mutna tekstura, razvučen natpis ili vidljiv šav odmah se primijeti. Drugo, slika se iscrtava dvaput, za svako oko posebno (iscrtavanje stereo para), pa se svaka tekstura čita za oba pogleda. Treće, cijeli okvir mora biti gotov za 11,1 ms pri 90 Hz, a grafička kartica pritom ima ograničenu memoriju koju dijele teksture, mreže i međuspremnici slike.
Osnovno pravilo jedinice zato glasi: materijal mora biti vjerodostojan izbliza, a jeftin za memoriju i za vrijeme okvira.
Zapamtite
U virtualnoj stvarnosti kvaliteta teksture ne mjeri se pikselima na disku, nego odnosom gustoće teksela na površini i gustoće piksela zaslona na udaljenosti s koje korisnik dio stvarno gleda.
Fizikalno utemeljeno iscrtavanje (PBR)
Fizikalno utemeljeno iscrtavanje (engl. physically based rendering, PBR) opisuje materijal veličinama koje imaju fizikalni smisao, a ne dojmom. Isti materijal zato izgleda ispravno pod svjetlom radionice, pod dnevnim svjetlom kroz prozor i u tamnom kutu laboratorija. Razvojna okruženja (npr. Unreal Engine ili Unity) i zapis glTF polaze od tijeka rada metalnost i hrapavost (engl. metallic–roughness).
U tom tijeku rada materijal opisuje nekoliko kanala:
- Bazna boja (engl. base color, albedo) — boja površine bez sjena i odsjaja.
- Metalnost (engl. metallic) — je li površina metal (1) ili nemetal (0). Međuvrijednosti imaju smisla samo na prijelazima, na primjer na rubu oguljene boje.
- Hrapavost (engl. roughness) — koliko je odsjaj razliven: 0 je zrcalo, 1 potpuno mat površina.
- Normala (engl. normal map) — sitni reljef koji mijenja smjer površine pri osvjetljavanju, a ne mijenja broj trokuta.
- Okluzija okoline (engl. ambient occlusion, AO) — zatamnjenje udubina u koje ne dopire raspršeno svjetlo.
- Emisija (engl. emissive) — površina koja sama svijetli, na primjer svjetleća dioda na upravljačkoj pločici.
Za dijelove robota MR-1 polazne vrijednosti mogu biti kao u tablici. To je dobra praksa za prvi prolaz; konačne se vrijednosti namještaju gledanjem kroz naočale.
| Dio robota MR-1 | Materijal | Metalnost | Hrapavost | Tekstura |
|---|---|---|---|---|
| Šasija | eloksirani aluminij | 1 | 0,35–0,45 | normala za brušenje, natpis |
| Poklopac | ABS, tiskan | 0 | 0,55–0,70 | bazna boja s logotipom, slojevi tiska u normali |
| Pogonski kotač Ø65 mm | guma na plastičnom naplatku | 0 | 0,80–0,90 | profil gazne površine u normali |
| Upravljačka pločica | FR4 s lakom, bakar, lem | 0 / 1 po vodovima | 0,30–0,50 | bazna boja, metalnost i emisija diode |
| Kuglični oslonac | čelik | 1 | 0,15–0,25 | bez teksture, samo faktori |
Posljednji redak pokazuje važnu uštedu: materijal ne mora imati teksturu. Dio jednolične površine opisuje se samo stalnim faktorima (boja, metalnost, hrapavost kao brojevi), što ne troši memoriju tekstura. U modelu MR-1 svaki od 12 dijelova ima jedan materijal, a jednaki dijelovi, dva kotača i dva motora, dijele isti materijal.
UV mapiranje: od površine do ravnine
UV mapa (engl. UV map) svakom vrhu mreže pridružuje dvije koordinate, U i V, u kvadratu od 0 do 1 na slici. Razmotavanje (engl. unwrapping) je postupak kojim se površina razreže i položi u ravninu, kao kad se kartonska kutija rasklopi na stolu.
Pri razmotavanju se susreću četiri pojma koja se stalno ponavljaju:
- Šav (engl. seam) — brid po kojem je površina razrezana. Šav treba skriti: na oštre bridove, na donju stranu dijela ili pod drugi dio. Na poklopcu su šavovi na okomitim bridovima, gdje se sjenčanje ionako naglo mijenja.
- Otok (engl. UV island) — povezani komad razmotane površine. Manje otoka znači manje šavova, ali i veće razvlačenje.
- Razvlačenje (engl. stretching) — razlika između omjera stranica na dijelu i na slici. Provjerava se probnom teksturom s kvadratićima koji moraju ostati jednaki po cijelom dijelu.
- Razmak (engl. padding) — prazan pojas oko otoka. Bez njega se na manjim mip-razinama boje susjednih otoka miješaju i na bridovima se pojavljuju tanke obojene crte.
Za virtualnu stvarnost najvažniji je pojam gustoća teksela (engl. texel density): koliko piksela teksture pada na centimetar površine. Na uređaju A s oko 2448 piksela na 116° vodoravnog vidnog polja zaslon daje oko 21 piksel po stupnju. Na udaljenosti od 0,4 m jedan stupanj pokriva oko 7 mm površine, pa zaslon može prikazati najviše oko 30 piksela po centimetru. Tekstura gušća od toga ne vidi se kad je dio u ruci, a rjeđa se vidi kao mutna. Dijelovi koje korisnik hvata trebaju imati približno jednaku gustoću teksela.
Teksture: vrste, rezolucija i zapis
Svaki kanal materijala može biti tekstura ili stalni faktor. Bazna boja i emisija zapisuju se u prostoru sRGB, jer su to boje koje oko vidi. Normala, hrapavost, metalnost i okluzija su podaci, a ne boje, pa se zapisuju linearno. Tekstura normale učitana kao sRGB daje krive odsjaje.
Tri jednokanalne mape, okluzija, hrapavost i metalnost, objedinjuju se u jednu teksturu u kojoj svaka zauzima jedan kanal boje. Takva se tekstura prema redoslijedu kanala često naziva ORM. Sjenčar tada čita jednu teksturu umjesto tri.
Rezolucija se bira kao potencija broja 2 (512, 1024, 2048 piksela), jer tako rade mip-razine i blok kompresija. Mip-razine (engl. mipmaps) su unaprijed smanjene kopije teksture, svaka upola manja od prethodne. Za daleke dijelove čita se manja kopija, pa slika ne treperi. Cijeli niz mip-razina dodaje trećinu memorije osnovne slike.
Zapis na disku i zapis u memoriji nisu isto. U datoteci glTF od 3,2 MB teksture su sažete kao JPEG ili PNG, a pri učitavanju se raspakiraju ili pretvaraju u blok kompresiju koju kartica razumije. Tekstura 1024 × 1024 u zapisu RGBA s 8 bita po kanalu zauzima 4 MB, a s mip-razinama oko 5,3 MB, bez obzira na to koliko je malena bila na disku. Blok kompresija, na primjer BC7 na računalu ili ASTC 4×4 na samostalnim naočalama, svodi to na 1 bajt po pikselu, dakle četiri puta manje, uz neznatan gubitak kvalitete. Za normalu postoje zapisi s dva kanala (npr. BC5), jer se treći kanal izračunava u sjenčaru.
Normala se najčešće peče (engl. baking) iz fine mreže na ciljanu. U modelu MR-1 fina teselacija CAD izvora ima 312 000 trokuta, a ciljani LOD0 28 000. Zaobljenja rubova, rupe za vijke i rebra poklopca prenose se u teksturu normale, a mreža ostaje jedanaest puta lakša. Treba znati i granicu: u stereu oko procjenjuje dubinu iz dviju slika, pa se veliki reljef upečen u normalu izbliza vidi kao nacrtan na ravnoj plohi. Normala je dobra za sitne detalje do nekoliko milimetara, a ono što strši više, kao rebro poklopca ili glava prekidača, mora biti u mreži.
Pažnja
Ne povećavajte rezoluciju teksture da biste „popravili“ mutan dio prije nego što provjerite UV mapu. Mutnoća izbliza najčešće je posljedica malog otoka ili razvlačenja; dvostruka rezolucija četverostruko povećava memoriju, a loš otok ostaje loš.
Atlas tekstura i broj materijala
Svaki materijal na dijelu obično znači zaseban poziv za crtanje (engl. draw call): procesor mora grafičkoj kartici poslati mrežu, teksture i postavke materijala. Poziva za crtanje u sceni ima ograničen broj; za laboratorij VR-1 cilj je najviše 1000 na uređaju A i najviše 150 na samostalnim naočalama B. Zato je pravilo „jedan materijal po dijelu“ dio budžeta, a ne samo urednosti: dio s tri utora za materijal troši tri poziva.
Atlas tekstura (engl. texture atlas) je jedna veća tekstura u koju su složene UV mape više dijelova. Dijelovi koji dijele atlas mogu dijeliti i materijal, pa ih okruženje može crtati jednim pozivom ako su spojeni u jednu mrežu ili ako se crtaju serijski (engl. batching). Atlas je dobar izbor za sitne dijelove koji se uvijek vide zajedno i ne miču se jedni prema drugima, na primjer vijke, odstojnike i natpise na šasiji.
Atlas ima i cijenu: svi dijelovi u njemu moraju imati isti sjenčar, a dio koji korisnik nosi u ruci ne smije biti spojen s ostatkom u jednu mrežu. Dijelovi robota MR-1 se sklapaju i ostaju zasebni objekti, pa se atlas u laboratoriju VR-1 koristi za okoliš: police, kutije s alatom i oznake na zidovima. Kako se pozivi za crtanje broje i smanjuju na cijeloj sceni, obrađuje jedinica 1.7 Priprema i optimizacija modela.
Za velike ravne površine, kao što su pod, zidovi i ploča radnog stola, koristi se tekstura koja se ponavlja (engl. tiling texture): mali uzorak od 512 ili 1024 piksela koji se preko UV koordinata većih od 1 ponavlja po cijeloj površini. Takva ploha štedi memoriju, ali treba drugu UV mapu za svjetlo.
Druga UV mapa za svjetlo
Meke sjene i odbijeno svjetlo u stvarnom vremenu preskupi su za 90 sl/s u stereu, osobito na samostalnim naočalama. Zato se za statične objekte, kao što su zidovi, pod, stol i police, osvjetljenje unaprijed izračuna i zapiše u svjetlosnu mapu (engl. lightmap). Pri radu aplikacije ona se samo čita, pa gotovo ne troši vrijeme okvira.
Svjetlosna mapa ne može koristiti istu UV mapu kao tekstura boje. Tekstura koja se ponavlja namjerno izlazi izvan kvadrata 0–1, a zrcalni dijelovi često dijele isti otok. Svjetlo je na svakom mjestu drukčije, pa svaka točka površine mora imati svoj piksel. Zato statični objekti dobivaju drugu UV mapu (drugi UV kanal) s ovim pravilima:
- Svi otoci leže unutar kvadrata 0–1 i nijedan se ne preklapa s drugim.
- Razmak između otoka veći je nego u prvoj mapi, jer su svjetlosne mape male rezolucije (često 64 do 512 piksela po objektu) i boje brzo „cure“ preko ruba.
- Veličina otoka odgovara stvarnoj površini, kako bi gustoća svjetlosne mape bila jednolika po objektu.
- Šavovi su na oštrim bridovima, gdje se i stvarno svjetlo naglo mijenja.
Neka okruženja drugu UV mapu izrađuju automatski pri uvozu (naziv mogućnosti ovisi o inačici); razmak takve mape vrijedi provjeriti. Dijelovi robota MR-1 miču se i sklapaju, pa ne dobivaju pečeno svjetlo: osvjetljava ih dinamičko svjetlo i okolina uhvaćena sondom za odsjaje (engl. reflection probe), a drugi UV kanal im ne treba.
Zapamtite
Prvi UV kanal služi izgledu materijala i smije imati ponavljanje i preklapanje. Drugi UV kanal služi svjetlu i ne smije imati ni jedno ni drugo. Pokretni i interaktivni dijelovi drugi kanal ne trebaju.
Memorija tekstura i gustoća teksela
Računski prikaz spaja dva zahtjeva iz ove jedinice: koliko tekstura zauzima u memoriji grafičke kartice i je li dovoljno gusta za udaljenost s koje se dio gleda. Memorija jedne teksture s mip-razinama iznosi
M = r² · b · 4/3
gdje je r rezolucija u pikselima, a b broj bajtova po pikselu (4 nekomprimirano, 1 za BC7 ili ASTC 4×4, 0,5 za zapis bez alfe, npr. BC1). Gustoća teksela za dio površine A, kad otoci pokrivaju udio u UV prostora, iznosi
ρ = √(r² · u / A) [px/cm]
Računa memoriju teksture s mip-razinama u grafičkoj kartici, ukupnu memoriju tekstura modela i gustoću teksela na površini dijela.
Za zadane vrijednosti, poklopac robota MR-1 s oko 720 cm² površine (vrh i bokovi visine 40 mm) i teksturom 1024 px uz 75 % iskorištenog UV prostora, gustoća teksela iznosi oko 33 px/cm. To je nešto iznad 30 px/cm koliko zaslon uređaja A može prikazati s udaljenosti od 0,4 m, dakle upravo dovoljno. Tekstura od 2048 px dala bi oko 66 px/cm, što se ni izbliza ne može vidjeti, a zauzela bi četiri puta više memorije: to je razlog zbog kojeg su teksture modela smanjene s 2048 na 1024 px. Ako četiri teksturirana materijala imaju po tri teksture, nekomprimirano je to 12 tekstura i 64 MB, a u blok kompresiji 16 MB. Na samostalnim naočalama B ta je razlika presudna.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| fizikalno utemeljeno iscrtavanje (engl. physically based rendering, PBR) | opis materijala fizikalnim veličinama (bazna boja, metalnost, hrapavost) koje daju ispravan izgled pod različitim svjetlom |
| bazna boja (engl. base color, albedo) | boja površine bez upečenih sjena i odsjaja, zapisana u prostoru sRGB |
| hrapavost (engl. roughness) | razlivenost odsjaja, od 0 (zrcalo) do 1 (potpuno mat) |
| UV mapa (engl. UV map) | pridruživanje vrhova mreže točkama u ravnini teksture, u kvadratu od 0 do 1 |
| šav (engl. seam) | brid po kojem je površina razrezana pri razmotavanju |
| gustoća teksela (engl. texel density) | broj piksela teksture po jedinici duljine površine, npr. px/cm |
| mip-razine (engl. mipmaps) | niz upola smanjenih kopija teksture za prikaz na većoj udaljenosti; dodaju trećinu memorije |
| atlas tekstura (engl. texture atlas) | jedna tekstura u kojoj su UV mape više dijelova, radi manjeg broja materijala i poziva za crtanje |
| svjetlosna mapa (engl. lightmap) | unaprijed izračunato osvjetljenje statičnih objekata, zapisano preko druge UV mape bez preklapanja |
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
U tijeku rada metalnost i hrapavost, koju vrijednost metalnosti treba dobiti ABS poklopac robota MR-1?
Metalnost razlikuje metal (1) od nemetala (0). Sjaj plastike opisuje se hrapavošću, a ne metalnošću; međuvrijednosti imaju smisla samo na prijelazima.
Pitanje 2 od 4
Zašto tekstura normale ne smije biti zapisana u prostoru sRGB?
Normala, hrapavost, metalnost i okluzija su podaci i zapisuju se linearno. Pretvorba sRGB mijenja vrijednosti i daje krive odsjaje.
Pitanje 3 od 4
Tekstura 1024 × 1024 u zapisu RGBA8 s mip-razinama zauzima u memoriji grafičke kartice oko:
1024 · 1024 · 4 B = 4 MB, a mip-razine dodaju trećinu, ukupno oko 5,3 MB. Veličina na disku nije važna za memoriju kartice.
Pitanje 4 od 4
Koja tvrdnja o drugoj UV mapi (za svjetlosnu mapu) je točna?
Svaka točka statične površine mora imati svoj piksel svjetlosne mape, pa nema preklapanja ni ponavljanja. Pokretni dijelovi robota ne dobivaju pečeno svjetlo.
Odgovoreno 0 od 4.
Vježbe uz jedinicu
Gradivo ove jedinice priprema za sljedeće vježbe: