Preskoči na sadržaj
FORTRONIQ

MODUL 1 · MODELIRANJE DIGITALNIH OBJEKATA ZA VIRTUALNU STVARNOST

Nastavna jedinica 1.3

Slobodno modeliranje i obrada mreže

Program za slobodno modeliranje u lancu pripreme za virtualnu stvarnost služi za dvije stvari: za izradu objekata koji nemaju CAD izvor i za obradu teseliranih mreža. Ova jedinica pokazuje kako se provjerava i čisti topologija, kako se mreža decimira do budžeta i kako se postavljaju ishodišta i transformacije prije izvoza.

Moći ću:
  • objasniti ulogu programa za slobodno modeliranje u lancu pripreme modela za VR
  • prepoznati pogreške topologije koje smetaju prikazu u stvarnom vremenu i ukloniti ih
  • odabrati postupak decimacije prema vrsti plohe i ciljnom broju trokuta
  • postaviti ishodište i primijeniti transformacije prije izvoza
  • pripremiti mrežu za izvoz u razvojno okruženje
  • izračunati broj trokuta nakon decimacije, procijenjeni broj vrhova i memoriju mreže

Program za mrežu u lancu pripreme

U lancu CAD sustav → program za mrežu → razvojno okruženje srednja karika najčešće odlučuje hoće li model u naočalama raditi pri 90 sl/s. Ondje se teselirana mreža čisti, smanjuje, razmotava i imenuje.

Osnovni alati slobodnog modeliranja — izvlačenje, rezovi, petlje bridova, modifikatori, podjela ploha i kiparenje — obrađeni su u području Proširena stvarnost, u jedinici Slobodno modeliranje. Ovdje se usredotočujemo na ono što je za virtualnu stvarnost posebno: broj trokuta za stereo iscrtavanje, čistoću sjenčanja koja se vidi s oba oka i ishodišta za dohvat rukom.

U laboratoriju VR-1 program za slobodno modeliranje (npr. Blender) ima dvije zadaće:

  • izradu objekata bez CAD izvora — prostorija 8 × 6 m s visinom 3 m, radni stol, police, ploča s uputama, rekviziti;
  • obradu teseliranih CAD mreža — dvanaest dijelova robota MR-1 koji iz fine teselacije dolaze s ukupno 312 000 trokuta, a trebaju završiti na 28 000 u najdetaljnijoj razini (LOD0).

Objekti izrađeni izravno u programu za mrežu od početka se modeliraju za prikaz: s predviđenim brojem trokuta, u mjerilu 1 : 1 i s ishodištem na pravom mjestu. Teselirane mreže traže više rada, jer ih je stvarao algoritam, a ne modelar.

Topologija mreže iz kuta prikaza u stvarnom vremenu

Topologija je raspored vrhova, bridova i ploha u mreži. Za modele koji se deformiraju — ruke, avatar, odjeća — presudne su uredne petlje bridova od četverokuta, jer o njima ovisi kako se mreža savija. Za krute objekte poput dijelova robota važnije su tri druge stvari: ukupan broj trokuta, ispravno sjenčanje i oblik samih trokuta.

Teselacija Četverokuti Decimirano 7 uskih trokutalepeza iz jednog vrha 12 četverokuta24 trokuta 2 trokutaisti izgled plohe
Slika 1.5 — Ista ravna ploha u tri oblika mreže. Teselator često stvara lepeze uskih trokuta; za kruti objekt ravna ploha bez detalja treba samo dva trokuta, a mreža četverokuta ima smisla tamo gdje se model deformira ili dalje modelira.

Uski, izduženi trokuti (engl. sliver triangles) posebno su nepovoljni. Grafički procesor sjenča piksele u malim skupinama od 2 × 2, pa trokut širok jedan piksel troši rad kao da je širi, a na njegovim rubovima nastaju vidljive nepravilnosti sjenčanja. CAD teselatori takve trokute stvaraju redovito, najviše na dugačkim ravnim plohama uz zaobljene rubove.

U laboratoriju VR-1 uredna topologija četverokuta potrebna je prije svega za modele ruku. Prsti se savijaju prema položaju tipki na kontroleru ili prema praćenju ruku, a mreža bez petlji bridova oko zglobova pri savijanju se lomi i gubi volumen. Korisnik te ruke gleda iz blizine cijelo vrijeme, pa se svaka takva pogreška odmah primijeti.

Za virtualnu stvarnost važna je i mnogostrukost (engl. manifold): svaki brid dijele najviše dvije plohe, a mreža zatvorenog dijela nema rupa. Nemnogostruke mreže ne smetaju samom prikazu, ali stvaraju probleme pri decimaciji, izradi kolizijskog oblika i pečenju tekstura.

Čišćenje mreže nakon uvoza

Prvi korak nakon uvoza teseliranog modela je čišćenje. Redoslijed je važan: decimacija na neočišćenoj mreži umnožava pogreške. Nazivi naredbi razlikuju se po programu i inačici, pa su ovdje opisane funkcije.

ProblemUzrokPostupak
Dvostruki vrhovi na istom mjestusvaka ploha CAD modela teselira se zasebnospajanje vrhova unutar male udaljenosti (npr. 0,01 mm), uz čuvanje oštrih bridova
Normale okrenute prema unutrapogrešna orijentacija plohe u izvozupreračunavanje normala prema van, zatim vizualna provjera s prikazom stražnjih strana
Degenerirani trokutitrokuti bez površine na spojevima plohabrisanje trokuta ispod zadane površine
Unutarnje ploheskriveni dijelovi i dodirne plohe u sklopubrisanje ploha koje se izvana nikad ne vide
Rupe u mrežiplohe koje teselator nije uspio obraditizatvaranje rupe novom plohom

Pažnja

Spajanje vrhova s prevelikom udaljenošću sažima sitne dijelove u točku i spaja susjedne dijelove koji trebaju ostati odvojeni. Za dijelove robota MR-1 udaljenost spajanja drži se ispod 0,1 mm, a nakon spajanja provjerava se da je broj objekata i dalje dvanaest.

Decimacija do budžeta

Decimacija (engl. decimation) smanjuje broj trokuta uz što manju promjenu oblika. Programi za obradu mreže obično nude tri načina:

  • Sažimanje bridova (engl. edge collapse) — bridovi se redom sažimaju u točku, najprije oni čije uklanjanje najmanje mijenja oblik. Zadaje se omjer ili ciljni broj trokuta.
  • Planarna decimacija — spaja susjedne plohe koje leže u gotovo istoj ravnini (zadaje se granični kut). Idealna je za CAD modele s mnogo ravnih ploha, poput šasije i poklopca.
  • Ponavljanje podjele unatrag — za mreže nastale podjelom ploha; kod teseliranih CAD modela rijetko je primjenjiva.

Budžet se ne dijeli ravnomjerno. Dio koji korisnik drži u ruci i gleda izbliza (motor, baterija, senzor) zaslužuje više trokuta od šasije koja uglavnom leži na stolu. Kotač se vrti i obris mu je stalno vidljiv, pa mu treba dovoljno segmenata po opsegu, dok se kuglični oslonac jedva vidi. Dobra praksa je najprije ukloniti trokute tamo gdje ne donose ništa (planarna decimacija ravnih ploha), a tek zatim smanjivati zakrivljene plohe.

Dio MR-1Kako ga korisnik vidiPrednost pri raspodjeli trokuta
motor s reduktorom, baterija, senzor udaljenostiu ruci, s 0,3–0,5 m, uz točku interesavisoka
pogonski kotačiobris stalno vidljiv, vrte se u vožnjivisoka za opseg, niska za bočne plohe
upravljačka pločica, prekidačizbliza, ali uglavnom ravne plohesrednja, detalji u teksturi
šasija, poklopacnajveći dijelovi, pretežno ravne ploheniska nakon planarne decimacije
kuglični oslonac, IR modul linijeispod robota, rijetko u vidnom poljunajniža

Za robota MR-1 ukupno smanjenje je s 312 000 na 28 000 trokuta, odnosno na 9 % izvornog broja ili 11,1 puta manje. Najveći dio uštede u pravilu dolazi s ravnih ploha i zaobljenja malih polumjera. Detalji koji su nestali iz geometrije, primjerice utisnute oznake na poklopcu, mogu se vratiti pečenjem u mapu normala, o čemu govori jedinica 1.5.

Kod mreža nastalih skeniranjem ili fotogrametrijom (jedinica 1.4) decimacija često nije dovoljna, jer takve mreže imaju milijune trokuta nepravilnog rasporeda. Tada se radi retopologija (engl. retopology): preko izvornog oblika izrađuje se nova, lagana i uredna mreža, a detalji izvornika prenose se pečenjem u teksture.

Zapamtite

Nakon decimacije model se uvijek pregledava u naočalama s udaljenosti s koje ga korisnik stvarno gleda. Ono što na monitoru izgleda grubo s 10 cm udaljenosti često je s 0,6 m sasvim dobro, i obrnuto: pogreška obrisa koja se na monitoru ne primijeti u stereo prikazu upada u oči.

Ishodište i primjena transformacija

Svaki objekt ima dva sloja podataka: podatke mreže (položaje vrhova) i transformaciju objekta (položaj, rotaciju i mjerilo). Model može izgledati ispravno, a da je robot zapravo mreža u milimetrima kojoj je mjerilo objekta postavljeno na 0,001. Razvojna okruženja i fizikalni sustavi takve kombinacije ne tumače uvijek jednako, pa prije izvoza primijenite transformacije: mjerilo 1, rotacija 0, a stvarne dimenzije ostaju zapisane u samoj mreži.

ishodište iz CAD-a ishodište za VR naprijed u kutu prve skice robot lebdi ili tone na podlozi, u osi kotača stoji na stolu, okreće se ispravno
Slika 1.6 — Bočni pogled na MR-1. Lijevo: ishodište preneseno iz CAD sustava u kutu modela, pa robot pri postavljanju na stol lebdi ili tone, a pri okretanju opisuje luk. Desno: ishodište sklopa na podlozi u osi pogonskih kotača; kotač ima vlastito ishodište u osi vrtnje (tirkizna točka).

Program za obradu mreže nudi naredbe za postavljanje ishodišta u središte geometrije, u težište ili u zadanu točku. Za dijelove robota vrijede pravila iz jedinice 1.1: sklop na podlozi u osi kotača, kotač u osi vrtnje, dijelovi koji se hvataju u težištu ili sredini hvatišta. Dijelovi koji se u sklopu ugrađuju na zadano mjesto mogu imati ishodište i u točki ugradnje, jer tada logika „uskakanja“ na mjesto uspoređuje samo dva položaja.

Pažnja

Negativno mjerilo po jednoj osi (zrcaljenje) okreće normale. Ako lijevi kotač nastane zrcaljenjem desnog, nakon primjene transformacije ponovno preračunajte normale.

Izvoz u razvojno okruženje

Gotova mreža izvozi se u formatu glTF ili FBX. Postavke izvoznika mijenjaju se po inačici, ali provjeravate uvijek isto:

  1. Odabir: izvoze se samo objekti za scenu, bez pomoćnih objekata, visokodetaljnih izvornika i mjerne kocke.
  2. Osi: izvoznik za glTF sam pretvara uspravnu os u Y; za FBX provjerite kako ih zapisuje i kako ih čita uvoznik.
  3. Modifikatori: primjenjuju se pri izvozu, jer ih razvojno okruženje ne poznaje.
  4. Nazivi i hijerarhija: dvanaest dijelova ispod korijena MR1_sklop, nazivi prema dogovoru projekta.
  5. Materijali: jedan materijal po dijelu, s nazivom koji se u razvojnom okruženju lako prepozna.
  6. Kontrola: izvezenu datoteku ponovno uvezite u prazan projekt i provjerite dimenzije, broj trokuta i ishodišta.

Budući da se ovaj niz ponavlja nakon svake izmjene konstrukcije, u timu od tri osobe koji radi šest tjedana isplati se korake od čišćenja do izvoza zapisati kao skriptu u programu za obradu mreže. Ručni rad ostaje za odluke (koliko trokuta kojem dijelu), a skripta preuzima ponavljanje.

Decimacija i memorija mreže

Za zatvorenu mrežu bez rupa vrijedi topološka relacija V − E + F = 2 (vrhovi, bridovi, plohe), a budući da svaki trokut ima tri brida koja dijeli sa susjedima, broj vrhova približno je polovina broja trokuta: V ≈ T / 2. Na šavovima UV mape i oštrim bridovima vrh se zapisuje više puta, pa se procjena uvećava za udio razdvojenih vrhova s. Svaki vrh nosi položaj (12 B), normalu (12 B) i UV koordinatu (8 B), dakle najmanje 32 B; s tangentom i drugom UV mapom 56 B. Indeksi trokuta zauzimaju 3 × 2 B ako je vrhova manje od 65 536, inače 3 × 4 B.

T1 = T0 · u    V ≈ T1 / 2 · (1 + s)    M ≈ V · b + 3 · T1 · i

Decimacija i memorija mrežeRačunski prikaz

Iz izvornog broja trokuta i ciljnog udjela računa broj trokuta nakon decimacije, procjenu broja vrhova i memoriju mreže (vrhovi i indeksi) prije i nakon.

Trokuta nakon—
Smanjenje—
Procijenjeno vrhova—
Memorija nakon—
Memorija prije—

Za robota MR-1 s 312 000 trokuta i ciljnim udjelom od 9 % dobiva se oko 28 000 trokuta, odnosno smanjenje od oko 11 puta. Uz 30 % razdvojenih vrhova procjena je oko 18 200 vrhova i oko 0,72 MB za mrežu s osnovnim zapisom vrha (32 B). Prije decimacije ista bi mreža imala oko 202 800 vrhova i trebala 4-bajtne indekse, ukupno gotovo 9,8 MB. Datoteka glTF robota od 3,2 MB veća je od same mreže jer nosi i teksture i materijale dvanaest dijelova. Memorija nije jedini razlog decimacije: broj trokuta po okviru, koji se iscrtava za oba oka, važniji je za vrijeme okvira od 11,1 ms.

Ključni pojmovi

PojamZnačenje
topologija (engl. topology)raspored i povezanost vrhova, bridova i ploha u mreži
mnogostrukost (engl. manifold)svojstvo mreže u kojoj svaki brid dijele najviše dvije plohe; uvjet za pouzdanu obradu
uski trokut (engl. sliver triangle)izduženi trokut vrlo male širine; kvari sjenčanje i troši rad grafičkog procesora
decimacija (engl. decimation)smanjenje broja trokuta uz što manju promjenu oblika
sažimanje bridova (engl. edge collapse)postupak decimacije u kojem se brid sažima u jednu točku
retopologija (engl. retopology)ručna ili poluautomatska izrada nove, uredne mreže preko postojećeg oblika
ishodište (engl. pivot, origin)točka objekta oko koje se okreće, postavlja i drži
primjena transformacija (engl. apply transforms)prijenos položaja, rotacije i mjerila objekta u podatke mreže, tako da mjerilo bude 1

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 su uski, izduženi trokuti iz CAD teselacije nepovoljni za prikaz u stvarnom vremenu?

Trokut širok oko jednog piksela sjenča se kao da je širi, a na rubovima nastaju nepravilnosti sjenčanja.

Pitanje 2 od 4

Koji je postupak decimacije najprikladniji za ravne plohe šasije robota MR-1?

Planarna decimacija spaja susjedne plohe u istoj ravnini, pa ravna ploha dolazi na minimalan broj trokuta bez promjene izgleda.

Pitanje 3 od 4

Robot je izvezen kao mreža u milimetrima s mjerilom objekta 0,001. Što treba učiniti prije izvoza?

Razvojna okruženja i fizikalni sustavi ne tumače uvijek jednako mjerilo objekta; primjenom transformacija mjerilo postaje 1.

Pitanje 4 od 4

Model ima 28 000 trokuta i 30 % razdvojenih vrhova. Koliko vrhova otprilike ima?

V ≈ T/2 · (1 + s) = 14 000 · 1,3 = 18 200.

Odgovoreno 0 od 4.

Vježbe uz jedinicu

Gradivo ove jedinice priprema za sljedeće vježbe: