VJEŽBA V3 · MODUL 1 · MODELIRANJE DIGITALNIH OBJEKATA ZA VIRTUALNU STVARNOST
Vježba V3 · 2 sata
Materijali PBR, UV mapiranje i teksture
Dijelovi mobilnog robota MR-1 dobivaju UV mape, zapečene normale i materijale PBR s teksturama od 1024 piksela. Proračunom se provjeravaju gustoća teksela i memorija tekstura, pa se odlučuje kada je dovoljan jedan atlas.
- razmotati mrežu u UV mapu sa šavovima na skrivenim rubovima i ujednačenom gustoćom teksela
- zapeći normale i okluziju s fine mreže na mrežu LOD0
- izraditi materijal metalnost/hrapavost s osnovnom bojom, normalom i složenom ORM teksturom
- izračunati memoriju tekstura s mip-razinama i bez kompresije te potrebnu gustoću teksela
O vježbi
Prije vježbe proći gradivo: 1.5 Materijali, teksture i UV mapiranje.
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
Model MR-1 (LOD0, 28 000 trokuta, 12 dijelova) treba dobiti materijale koji izgledaju uvjerljivo na 0,3 m od oka, jer korisnik dijelove drži u ruci. Svaki dio ima jedan materijal, a teksturirani materijal ima tri teksture: osnovna boja, normala i ORM (okluzija, hrapavost, metalnost složene u kanale R, G, B). Jednaki dijelovi (dva kotača, dva motora) dijele materijal, a dio jednolične površine, npr. kuglični oslonac, može imati samo stalne faktore bez teksture (jedinica 1.5). Izvorne teksture od 2048 px smanjuju se na 1024 px, a cijeli robot u glTF-u treba stati u oko 3,2 MB.
Materijali: šasija eloksirani aluminij, poklopac mat plastika, kotači guma, motori metalno kućište, pločica zeleni lak s natpisima, baterija plastika s naljepnicom. Treba odrediti i vrijednosti metalnosti i hrapavosti.
Oprema i pribor
- računalo s programom za slobodno modeliranje (npr. Blender), mreža LOD0 iz V02 i fina mreža iz V01
- testna tekstura šahovnice 1024 × 1024 px
- razvojno okruženje s VR predloškom i VR naočale (ili prozor s kamerom)
- zapisnik: dio, broj UV otoka, gustoća teksela, vrijednosti materijala
Pravila koja se primjenjuju
PBR, metalnost/hrapavost. Materijal opisuju fizikalne veličine, pa izgleda ispravno pod svakim svjetlom. Metalnost je za većinu površina 0 ili 1; hrapavost nosi razliku između sjajnog i mat. Format glTF koristi upravo taj model: hrapavost čita iz kanala G, metalnost iz kanala B, a okluziju iz kanala R, pa se sve tri mogu složiti u jednu ORM teksturu.
Gustoća teksela. Svi dijelovi koji se gledaju izbliza trebaju približno istu gustoću (pikseli teksture po metru), da jedan dio ne izgleda mutno uz oštar susjedni.
Razmak otoka. Između UV otoka ostavlja se razmak (dobra praksa: oko 8 px pri 1024 px), jer ga mip-razine smanjuju.
Pažnja
Karta normala ovisi o konvenciji smjera zelenog kanala, a okruženja se u tome razlikuju. Ako izbočine izgledaju udubljeno, obrnite zeleni kanal pri uvozu. Karte normala i ORM uvoze se kao linearni podaci, ne kao boja.
Crtež
Postupak
- Otvorite LOD0 i finu mrežu u istoj datoteci; moraju se točno preklapati.
- Za svaki dio označite šavove na rubovima koje korisnik rijetko vidi: dno šasije, unutarnja strana kotača, spoj poklopca i šasije.
- Razmotajte mrežu i stavite testnu šahovnicu. Kvadrati moraju biti jednaki i neiskrivljeni; ujednačite mjerilo otoka svih dijelova.
- Složite otoke u kvadrat 0–1 s razmakom oko 8 px pri 1024 px, bez preklapanja.
- Zapecite normale i okluziju s fine mreže na LOD0 (1024 px). Udaljenost zrake ili kavez postavite tako da nema rupa ni ponovljenih rubova.
- Izradite materijale. Polazne vrijednosti (preporuka, uskladite prema izgledu): aluminij metalnost 1, hrapavost 0,35; plastika 0 i 0,6; guma 0 i 0,9; lak pločice 0 i 0,3.
- Složite okluziju, hrapavost i metalnost u kanale R, G, B jedne teksture, izvezite teksture 1024 px i glTF i zapišite veličinu datoteke.
- U razvojnom okruženju uvezite model, uključite mip-razine i kompresiju tekstura, a normale i ORM označite kao linearne. Pregledajte dio u ruci na 0,3 m.
Inačica bez naočala: pregled u prozoru s kamerom na 0,3 m od dijela, pod dva različita svjetla.
Pitanja i zadaci
1. Računski. Koliko memorije zauzima tekstura 1024 × 1024 px RGBA (4 bajta po pikselu) bez kompresije, bez mip-razina i s njima? Koliko 2048 × 2048 px?
Prikaži rješenje
1024 · 1024 · 4 B = 4 194 304 B = 4 MB (binarnih, MiB). Mip-razine dodaju trećinu: 4 · 4/3 = 5,3 MB. Za 2048 px: 16 MB, s mip-razinama 21,3 MB, četiri puta više.
2. Računski. Pretpostavite najgori slučaj: svih 12 materijala ima po tri vlastite teksture. Kolika je memorija svih tekstura s mip-razinama pri 2048 px i pri 1024 px? Koliko je pri 1024 px uz blok-kompresiju od 1 bajta po pikselu?
Prikaži rješenje
36 tekstura. Pri 2048 px: 36 · 21,3 = 768 MB. Pri 1024 px: 36 · 5,33 = 192 MB. Uz 1 B po pikselu: 192 / 4 = 48 MB. Procjena: za jedan predmet na samostalnim naočalama s dijeljenom memorijom i 192 MB je previše, pa je kompresija obavezna. U stvarnom modelu kotači i motori dijele materijal, a oslonac nema teksturu, pa je tekstura i memorije manje.
3. Računski. Tekstura od 1024 px pokriva duljinu šasije 0,22 m. Kolika je gustoća teksela i je li dovoljna za uređaj A (oko 21 piksel po stupnju) na 0,3 m?
Prikaži rješenje
1024 / 0,22 = 4 655 px/m. Na 0,3 m jedan stupanj pokriva 300 · tg 1° = 5,24 mm, a u njemu je 4,655 · 5,24 ≈ 24 teksela, više od 21 piksela zaslona. Potrebno je najmanje 21 / 5,24 = 4,0 teksela po mm, tj. 4 010 px/m, pa je 1024 px dovoljno; 2048 px ne bi se vidjelo.
4. Računski. Razmak otoka je 8 px pri 1024 px. Koliki je na mip-razinama 512, 256, 128 i 64 px i od koje razine počinje prelijevanje?
Prikaži rješenje
Razmak se prepolovljuje: 4, 2, 1 i 0,5 px. Na 128 px ostaje jedan piksel, a na 64 px susjedni otoci se miješaju. To se vidi tek na velikim udaljenostima, gdje ionako vrijede LOD1 i LOD2.
5. Gdje stavljate šav na kotaču i zašto?
Prikaži rješenje
Plašt se reže jednim šavom poprijeko, a bočne plohe su zasebni otoci. Šav plašta ide na unutarnju stranu uz osovinu ili na mjesto gdje ga reljef gaznoga sloja skriva.
6. Zašto se normale zapekuju s fine mreže, a ne modeliraju na LOD0?
Prikaži rješenje
Zaobljenja rubova, utori i natpisi fine mreže (312 000 trokuta) prenose se u teksturu, pa ih LOD0 s 28 000 trokuta prikazuje osvjetljenjem, bez dodatnih trokuta.
7. Treba li robotu druga UV mapa za zapečeno svjetlo? A stolu?
Prikaži rješenje
Robotu ne: dijelovi se pomiču, a zapečeno svjetlo vrijedi samo za nepomične predmete. Stol i prostorija su nepomični, pa dobivaju drugu UV mapu bez preklapanja otoka.
8. Računski. Deset izložbenih robota iz V02 spaja se u objekte s jednim atlasom 2048 px (tri teksture). Kolika je memorija atlasa i što se dobiva?
Prikaži rješenje
3 · 21,3 = 64 MB bez kompresije, 16 MB uz 1 B po pikselu, i to jednom za svih deset, jer dijele isti atlas. Dobiva se jedan poziv za crtanje po robotu umjesto 12.
Za nastavnika
Otvori upute za nastavnika
Priprema
Pripremite LOD0 i finu mrežu MR-1 poravnate u istoj datoteci, testnu šahovnicu i za usporedbu jedan gotov materijal s ispravnim ORM kanalima.
Tijek sata
- 10 min: PBR, ORM, gustoća teksela, slika V3.1.
- 25 min: šavovi i razmotavanje, šahovnica.
- 15 min: slaganje otoka i zapečenje.
- 20 min: materijali i izvoz.
- 10 min: uvoz i pregled izbliza.
- 10 min: računska pitanja.
Očekivani rezultati
UV mape bez preklapanja i rastezanja, zapečene normale bez rupa, materijal za svaki od 12 dijelova (teksturirani s tri teksture od 1024 px), glTF blizu 3,2 MB i zapisnik s gustoćom teksela.
Česte pogreške
- karta normala uvezena kao boja ili s obrnutim zelenim kanalom
- šavovi na vidljivim bridovima poklopca
- metalnost 0,5 za „polumetal“
- otoci bez razmaka
Vrednovanje
| Kriterij | Bodovi |
|---|---|
| UV mape: šavovi, gustoća, razmak | 5 |
| zapečene normale i okluzija | 4 |
| materijali PBR i ORM kanali | 4 |
| izvoz, veličina datoteke, uvoz | 2 |
| računska i opisna pitanja | 5 |
| Ukupno | 20 |