MODUL 1 · MODELIRANJE DIGITALNIH OBJEKATA
Nastavna jedinica 1.7
Priprema i optimizacija modela za proširenu stvarnost
Model koji je dobar za konstrukciju gotovo nikad nije dobar za tablet. Ova jedinica pokazuje kako se broj trokuta smanjuje, kako se izrađuju razine detalja, kako se detalj prenosi u teksturu i kako se sve zajedno svodi na datoteku koju uređaj učita brzo i prikaže bez zastajkivanja.
- navesti granice mobilnog uređaja i izvesti iz njih zahtjeve za model
- primijeniti decimaciju i ocijeniti gubitak oblika
- izraditi razine detalja i odrediti udaljenosti prijelaza
- objasniti pečenje tekstura i uporabu atlasa
- odabrati format i način sažimanja pri izvozu
- izračunati veličinu datoteke, zauzeće memorije i vrijeme učitavanja
Granice uređaja
Optimizacija bez brojeva je nagađanje. Zato se prije svakog zahvata zapisuju granice uređaja na kojem aplikacija mora raditi. Za projekt AR-1 to je uređaj A: tablet zaslona 10,5 palca, s kamerom 1920 × 1080 pri 30 sličica u sekundi i 6 GB radne memorije.
Iz tih podataka slijede tri cilja prikaza. Prvi: najmanje 30 sličica u sekundi, jer ispod te vrijednosti sadržaj počinje zaostajati za pomicanjem tableta i prividno klizi po prostoru. Drugi: najviše 850 MB radne memorije, jer ostatak troše kamera, prepoznavanje prostora i sam operacijski sustav. Treći: pokretanje scene do 2,0 sekunde, jer dulje čekanje tehničar na poslu doživljava kao kvar.
| Veličina | Granica uređaja A | Što je troši | Posljedica prekoračenja |
|---|---|---|---|
| Brzina prikaza | najmanje 30 sličica/s | broj trokuta, broj crtanja, materijali | sadržaj klizi po prostoru |
| Radna memorija | najviše 850 MB | teksture, mreže, zvuk | aplikacija se zatvara |
| Pokretanje scene | do 2,0 s | veličina datoteke, raspakiravanje | korisnik odustaje |
| Veličina isporuke | do 60 MB | svi modeli i teksture | preuzimanje traje predugo |
| Zagrijavanje | trajan rad 20 min | stalno visoko opterećenje | uređaj usporava sam sebe |
Iz granica se izvodi proračun scene: koliko trokuta, koliko tekstura i koliko megabajta smije imati pojedini korak uputa. Za AR-1 je dogovoreno najviše 60 000 trokuta u vidnom polju istodobno, najviše osam tekstura 1024 × 1024 i najviše 12 MB po koraku. Proračun se dijeli među objektima prije nego što se ijedan model pripremi.
Proračun nije preporuka nego ograničenje. Ako jedan objekt traži više, netko drugi mora dobiti manje. Time optimizacija prestaje biti posao na kraju projekta i postaje dio odluke o tome što se uopće prikazuje.
Decimacija
Decimacija je smanjenje broja poligona uz zadržavanje prepoznatljivog oblika. Postupak radi tako da traži bridove čije bi uklanjanje najmanje promijenilo oblik, spaja njihove vrhove i ponavlja to dok se ne dosegne zadani broj. Ravne plohe gube trokute prve, a oštri bridovi i jaka zakrivljenja zadnji.
Na prihvatnici AR-1 decimacija vodi od 486 000 na 24 000 trokuta, dakle na oko pet posto polazne mreže. Gubitak oblika mjeri se najvećom udaljenošću između izvorne i smanjene mreže; dogovorena granica je 0,3 mm, što je znatno ispod onoga što korisnik s pola metra može vidjeti.
Postupak ima svoje zamke. Prejaka decimacija stvara vrlo tanke trokute koji pri pomicanju trepere. Decimacija bez zaštite rubova zaobljuje oštre bridove, pa dio izgleda kao izlizan. Decimacija preko granica dijelova može spojiti ono što treba ostati odvojeno, primjerice čeljust i tijelo.
Zato se prije decimacije uvijek najprije briše ono što se ne vidi. Unutarnji kanali, navoji, podloške i vijci u nevidljivim provrtima mogu nositi i polovicu svih trokuta. Brisanje takve geometrije ne mijenja izgled ni za piksel, a smanjuje posao decimaciji.
Razine detalja
Razine detalja (level of detail, LOD) su inačice istog modela s različitim brojem trokuta. Aplikacija bira inačicu prema udaljenosti objekta od kamere: bliski objekt dobiva punu razinu, udaljeni grubu. Time se troši onoliko trokuta koliko se doista vidi.
| Razina | Udaljenost | Broj trokuta | Što se zadržava |
|---|---|---|---|
| LOD 0 | do 0,6 m | 24 000 | svi bridovi, provrti, utori |
| LOD 1 | 0,6 do 1,5 m | 12 000 | glavne značajke i obris |
| LOD 2 | 1,5 do 3 m | 4 000 | obris s grubim značajkama |
| LOD 3 | preko 3 m | 900 | samo silueta |
Razine se ne izrađuju napamet nego prema pravilu: svaka sljedeća ima oko polovicu do trećine trokuta prethodne, a prijelaz se postavlja ondje gdje razlika prestaje biti vidljiva. Na uređaju A to znači da se s udaljenosti veće od 1,5 m razlika između 12 000 i 4 000 trokuta ne može razaznati.
Prijelaz među razinama mora biti neprimjetan. Ako se model naglo zamijeni, korisnik vidi treptaj. Rješenja su dva: kratko preklapanje dviju razina ili postavljanje prijelaza izvan vidnog polja, na udaljenosti na kojoj objekt ionako nije u središtu pozornosti.
Razine detalja ne koriste se uvijek. Za objekt koji se gleda samo izbliza, poput vijka u četvrtom koraku uputa, dovoljna je jedna razina. Svaka dodatna razina je još jedna datoteka koju treba izraditi, održavati i učitati, pa se radi samo ondje gdje se raspon udaljenosti doista mijenja.
Pečenje tekstura i atlas
Pečenje (baking) je postupak u kojem se podatak s gustog modela prenosi u sliku koja se poslije nanosi na rijedak model. Najčešće se peku dvije stvari: sitni reljef, koji prelazi u sliku normala, i zasjenjenje udubina, koje prelazi u osnovnu boju. Rezultat je model s malo trokuta koji izgleda kao da ih ima mnogo.
Uz pečenje ide atlas tekstura: više malih slika spojenih u jednu veću. Razlog nije ušteda prostora nego brzina. Svaka promjena teksture pri iscrtavanju znači novi poziv grafičkoj kartici, a broj tih poziva je na mobilnom uređaju jednako važan kao broj trokuta. Šest objekata s jednim zajedničkim atlasom crta se u jednom pozivu umjesto u šest.
Stranica teksture bira se prema tome koliko se objekt približava korisniku. Za prihvatnicu koja se gleda s pola metra dovoljno je 1024 × 1024; polazna tekstura iz konstrukcijskog prikaza imala je 2048 × 2048, što je četiri puta više podataka bez vidljive dobiti. Stranica se uvijek bira kao potencija broja dva jer se tako pravilno izrađuju smanjene inačice slike.
Smanjene inačice (mipmap) izrađuju se unaprijed i uređaj bira onu koja odgovara udaljenosti. Bez njih udaljena tekstura treperi i zrnasta je. S njima zauzeće memorije raste za oko trećinu, ali je prikaz mirniji i brži, pa se gotovo uvijek koriste.
Sažimanje i izvoz
Posljednji korak je izvoz. Bira se format, način sažimanja i ono što se u datoteku uopće zapisuje. Pravilo je da se izvozi samo ono što aplikacija koristi: ako se ne koristi boja vrha, ne izvozi se; ako postoji samo jedan skup koordinata teksture, drugi se briše.
Sažimanje djeluje odvojeno na geometriju i na teksture. Geometrija se sažima zaokruživanjem koordinata na potrebnu točnost i pametnim zapisom redoslijeda vrhova; time se dobiva smanjenje od pet do deset puta uz gubitak koji se ne vidi. Teksture se zapisuju u obliku koji grafička kartica čita izravno, pa se ne moraju raspakirati pri učitavanju.
| Korak izvoza | Prije | Poslije | Dobitak |
|---|---|---|---|
| Izvorni zapis | STEP, 41 MB | — | polazište |
| Mreža s animacijom | FBX, 8,4 MB | — | 5 puta manje |
| Sažeta geometrija | 8,4 MB | 3,0 MB | 2,8 puta manje |
| Teksture 2048 → 1024 | 3,0 MB | 2,1 MB | manje memorije i brže učitavanje |
| Ukupno | 41 MB | 2,1 MB | oko dvadeset puta manje |
Izvoz se provjerava odmah nakon izrade, i to na uređaju, a ne na računalu. Provjeravaju se četiri stvari: učitava li se scena unutar zadanog vremena, drži li se brzina prikaza iznad 30 sličica u sekundi, ostaje li zauzeće memorije ispod granice i izgleda li model onako kako treba pri stvarnom osvjetljenju.
Prikaz spaja broj trokuta, stranicu teksture i način sažimanja u procjenu veličine datoteke, zauzeća memorije, vremena pokretanja i brzine prikaza. Granice su one uređaja A iz projekta AR-1: 850 MB memorije, 2,0 s pokretanja i najmanje 30 sličica u sekundi.
Prikaz spaja sve veličine iz jedinice u jedan proračun. Vidi se da broj trokuta najviše utječe na brzinu prikaza, a stranica teksture na zauzeće memorije. Veličina datoteke ovisi o oboma, ali najviše o tome je li sažimanje uključeno.
Mjerenje umjesto dojma
Optimizacija se ne prosuđuje na oko. Svaki zahvat mora se moći izmjeriti, jer se inače ne zna je li donio dobitak ili samo promjenu. Mjere se četiri veličine, i to uvijek na istom uređaju i u istim uvjetima: brzina prikaza, zauzeće memorije, vrijeme pokretanja i odstupanje oblika od izvornog modela.
Brzina prikaza mjeri se dok se tablet polako pomiče oko predmeta, a ne dok stoji na stolu. Tek u gibanju se vide troškovi koje mirna slika skriva: učitavanje razina detalja, promjene tekstura i ponovno prepoznavanje prostora. Bilježi se najmanja izmjerena vrijednost, a ne prosječna, jer korisnik primijeti upravo pad.
Zauzeće memorije čita se nakon nekoliko minuta rada, a ne odmah po pokretanju. Neki se resursi učitavaju tek kad na njih dođe red, pa scena koja na početku troši 500 MB nakon petoga koraka može biti na 800 MB. Mjeri se stoga najveća vrijednost tijekom cijelog prolaska kroz svih osam koraka uputa.
Odstupanje oblika mjeri se usporedbom sa zadržanim izvornikom. Rezultat je najveća udaljenost između dviju mreža, a na projektu AR-1 dopušteno je 0,3 mm. Bez te mjere lako se dogodi da se u trci za manjim brojem trokuta izgubi upravo ono obilježje po kojem tehničar razlikuje dvije slične prihvatnice.
Postupak od konstrukcije do uređaja
Sve što jedinica opisuje slaže se u jedan postupak koji se ponavlja za svaki model. Redoslijed nije proizvoljan: svaki korak olakšava sljedeći, a preskočeni korak poskupljuje sve iza sebe.
- Brisanje nevidljivog — unutarnji dijelovi, navoji, skriveni vijci.
- Tesselacija s razumnim odstupanjem — umjesto najfinije pa naknadnog smanjenja.
- Čišćenje mreže — dvostruki vrhovi, normale, izdvojeni dijelovi.
- Decimacija na ciljani broj trokuta uz mjerenje odstupanja od izvornika.
- UV razvijanje i pečenje — reljef i zasjenjenje prelaze u teksture.
- Izrada razina detalja ondje gdje se raspon udaljenosti mijenja.
- Izvoz sa sažimanjem u format koji razvojno okruženje čita izravno.
- Provjera na uređaju pri stvarnom osvjetljenju i s prave udaljenosti.
Na projektu AR-1 taj postupak daje brojke kojima modul i završava: od 486 000 na 24 000 pa na 12 000 trokuta, od tekstura 2048 × 2048 na 1024 × 1024 i od 41 MB preko 8,4 MB na 2,1 MB. Model je time spreman za scenu, a scena je predmet sljedećih modula.
Pažnja
Optimizacija ima granicu iza koje se gubi značenje. Model prihvatnice sveden na tisuću trokuta i dalje se učitava brzo, ali tehničar na njemu više ne prepoznaje utor vodilice ni položaj vijaka. Mjerilo uspjeha nije najmanji broj, nego najmanji broj pri kojem uputa još radi svoj posao.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Proračun scene | Unaprijed zadana granica broja trokuta, tekstura i megabajta po koraku prikaza. |
| Decimacija | Smanjenje broja poligona uz zadržavanje prepoznatljivog oblika. |
| Razina detalja | Inačica modela koja se prikazuje na zadanom rasponu udaljenosti. |
| Pečenje | Prijenos reljefa i zasjenjenja s gustog modela u teksturu rijetkog modela. |
| Atlas tekstura | Više slika spojenih u jednu radi smanjenja broja poziva iscrtavanja. |
| Smanjene inačice slike | Unaprijed izrađene manje inačice teksture za veće udaljenosti. |
| Sažimanje geometrije | Zapis koordinata smanjenom točnošću uz znatno manju datoteku. |
Provjeri se
Kratka provjera prije prelaska na sljedeću jedinicu. Odgovor se potvrđuje klikom, a obrazloženje se prikazuje odmah.
Pitanje 1 od 6
Koja je granica brzine prikaza postavljena u projektu AR-1?
Ispod 30 sličica u sekundi sadržaj prividno klizi u odnosu na stvarni prostor.
Pitanje 2 od 6
Što se radi prije decimacije?
Skrivena geometrija može nositi polovicu trokuta, a njezino brisanje ne mijenja izgled.
Pitanje 3 od 6
Čemu služi atlas tekstura?
Objekti s istim atlasom crtaju se jednim pozivom umjesto nizom poziva.
Pitanje 4 od 6
Što se pečenjem prenosi s gustog na rijedak model?
Detalj prelazi u sliku normala i osnovnu boju, pa rijedak model izgleda bogatije.
Pitanje 5 od 6
Koliki je udio početne mreže ostao nakon decimacije prihvatnice AR-1?
Iz 486 000 trokuta ostalo je 24 000, dakle približno pet posto.
Pitanje 6 od 6
Koja veličina najviše utječe na zauzeće radne memorije?
Memorija za teksturu raste s kvadratom stranice, pa udvostručenje znači četiri puta više.
Odgovoreno 0 od 6.