Geometrické modelování 1997 Josef Pelikán, MFF UK Praha 2007 Jiří Sochor, FI MU Brno 2007-12 Petr Felkel, ČVUT FEL Praha 2007 Jiří Žára, ČVUT FEL Praha felkepet@fel.cvut.cz Datum poslední aktualizace 22.1.2016
Geometrické modelování = soubor metod k popisu těles (tvaru, vlastností, postupu výroby, ) Vzniklo se vznikem a rozvojem počítačů (přelom 50/60 let) První systém - 50. léta (letectvo, SAGE) Boom přelom 60 a 70 let (auta, letadla, ) Sutherland, Ross, Coons, Fergusson, de Casteljau, Bézier, Eshleman, Meriwether, Forrest, Zpočátku podpora konstruování (vytvoření, editace, zobrazení) Postupně nabaluje další funkce aerodynamika, simulace chování modelování struktury (FEM) digitální prototypy (mock-up) řízení NC strojů, Computer Aided Manufacturing (CAM), Postavy a objekty do her a filmů 2
Model Model [Angel] = abstrakce světa, idealizace reálného (v němž žijeme), existující výrobek virtuálního (vytvořeného počítačem), návrh výrobku Svět (fyzické objekty) složitý a proto nepostihnutelný Př.: déšť-kapky-částice Matematický model rovnice zjednodušeně popisující fyzické objekty Reprezentace (datové modely) reprezentace matematických modelů vhodné pro počítačové zpracování Počítačové vědy abstraktní datové typy Počítačová grafika geometrické objekty 3
Požadavky na reprezentaci těles [Schene] Široká doména co nejvíce použitelných geometrických objektů Jednoznačnost (úplnost) tvar je jasný na první pohled Unikátnost reprezentace konkrétní těleso jen jedním způsobem, lze testovat shodu Přesnost bez aproximace Nemožnost vytvořit chybnou reprezentaci nelze vytvořit objekt, který by nebyl tělesem Uzavřenost transformací vznikne zase platné těleso Kompaktnost šetří místo Efektivní algoritmy 4
Těleso, plochy, hrany a vrcholy 5
Metody reprezentace 3D objektů a scén A) Drátový model B) Povrchová reprezentace C) Objemová reprezentace 6
A) Drátový model A) Drátový model (wire-frame, GL_LINE) Velmi úsporný jen vrcholy a hrany těles Nezná plochy, proto nejde určit viditelnost Nejednoznačný Nevhodný pro modelovací operace 7
A) Drátový model a modelování 8
Metody reprezentace 3D objektů a scén B) Povrchová reprezentace (Boundary Representation, B-rep) Jen slupka, popsány plochy a hrany (hranice tělesa) C n spojité záplaty (patch) C 0 spojité mřížky (mesh) polygony -> trojúhelníky Snadno se zobrazují Není informace o vnitřku => Obtížný test bod těleso (test zda je bod uvnitř tělesa) C) Objemová reprezentace Přímé informace o objemu tělesa => Snadný test bod těleso Obtížněji se zobrazují Často jako pomocné datové struktury pro rychlé vyhledávání 9
B) Polygonální geometrie - běžné úlohy kreslení -průchod všemi trojúhelníky, pozice vrcholů zjištění vlastností objektů - nalezení všech hraničních hran - nalezení sousedního trojúhelníku změny sítě - vložení/zrušení trojúhelníku -přemístění vrcholu a přilehlých trojúhelníků - kolaps hran/rozdělení vrcholů 10
Nalezení hraničních hran 11
Přemístění vrcholu 12
Kolaps hrany 13
Rozdělení vrcholu 14
Geometrie a topologie Primitiva vrcholy hrany stěny (polygony, často jen trojúhelníky) Topologické vztahy vrcholy incidující s hranou hrany incidující se stěnou vrcholy incidující se stěnou hrany incidující s vrcholem Geometrie pozice a tvar vrcholů, hran, stěn Topologie konektivita/sousednost mezi různými vrcholy, hranami, stěnami 15
Topologicky identické sítě 16
Topologicky odlišné sítě identická geometrie vrcholů odlišná topologie a geometrie trojúhelníků/hran 17
Manifold Def: 2-manifold: Pro každý povrchový bod existuje okolí, které je topologicky ekvivalentní s rovinou (kruhem) 18
B) Povrchová reprezentace ploškami - C 0 VEF(S) reprezentace -max Polygonální polévka -min Okřídlená hrana ( winged-edge ) - spec 19
Povrchová reprezentace VEFS V 5 F 2 E 5 V 4 E 3 E 4 F 1 V 1 E 1 stěny tělesa S 1 DAG Přímé odkazy V 3 E 2 V 2 F 1 F 2 těleso S 1 hrany E 1 E 2 E 3 E 4 E 5 + Hierarchická + Kompletní topologie + Sdílí záznamy V Interakce - Q: hrany(v 1 ) chybí zpětné odkazy vrcholy x x x x x y y y y y z z z z z V 1 V 2 V 3 V 4 V 5 20
Polygonální polévka Polygonální polévka (polygon soup) Zjednodušená VEF reprezentace na VF Izolované stěny trojúhelníky (polygony), neukládá topologii Redundantní vrcholy (opakují se) nebo sdílené vrcholy (topologie dodatečně odvoditelná) Zná plochy, proto lze určit viditelnost Nevhodný pro modelovací operace, ideální pro export těles stěny F 1 F 2 DAG vrcholy x y z x y z x y z x y z x y z V 1 V 2 V 3 V 4 V 5 Sdílené vrcholy 21
Okřídlená hrana (winged-edge) V 3 V 2 x vrcholy x x DAG E 2 E 3 F 1 E 1 F 2 y z y z y z E 4 E 5 V 1 V 2 V 3 Zpětné odkazy V 4 V 1 V 5 těleso S 1 Omezeny přímé odkazy, přidány zpětné odkazy Snadno - Q: hrany(v 1 ) hrany tělesa (L) (n) F 1 F 2 E 2 E 5 E 4 E 3 E 1 stěny S V 1 V 2 1 Přímé odkazy F 1 F 2 22
Okřídlená hrana - (F,E,V) DAG Přímý odkaz Zpětné odkazy Přímý odkaz Přímé odkazy Seznamy či Tabulky 23
Okřídlená hrana Hrana struct Edge { Vertex *start; Vertex *end; Face * left; Face * right; Edge *leftsucc; Edge *leftpred; Edge *rightsucc; Edge *rightpred; }; Příklad: průchod hranami levé stěny leftface( Edge *startedge ) { Edge *current = startedge; do { output( current ); current = current->leftsucc; } while( current!= startedge ); } 24
B) Povrchová reprezentace ploškami - shrnutí VEF(S) reprezentace (česky VHS(T)) Kompletní topologická informace: Seznamy vrcholů (Vertex), hran (Edge), stěn (Face) a těles (Solid) Přímé odkazy S F E V Polygonální polévka Zjednodušená VEF na VF Okřídlená hrana ( winged-edge ) Redundantní informace pro rychlé vyhledávání sousedních objektů (hrany incidentní s vrcholem (V E),...) Omezeny přímé odkazy jen jeden, doplněny zpětné odkazy S F E V V E, E F 25
Eulerovy rovnosti Pro jednoduchá tělesa bez děr: F + V = E + 2 F počet stěn, V počet vrcholů, E počet hran 6 + 8 = 12 + 2 Obecný vzorec (s dírami): F + V = E + 2*(S-H) + R S počet těles H počet děr procházejících celým tělesem R počet děr ve stěnách Solid, Hole, Ring (Loop) 10 + 16 = 24 + 2*(1-1) + 2 26
Euler.rovnost - jednoduchá tělesa V + F = E + 2(S H) + R 24 + 15 = 36 +2(1 1) + 3 27
Operace Undo Složitá u množinových operací nad B-rep. Eulerovy operátory: zajišťují topologickou korektnost modelu umožňují operace Undo/Redo operátory zapsané do souboru mohou sloužit jako přenosový formát Příklady Eulerových operátorů mvsf - make vertex, solid, face, mev - make edge, vertex, mef - make edge, face, kef - kill edge, face,... F + V = E + 2*(S-H) + R +1 +1 = 2*1 +1 = +1 +1 = +1 1 = 1 28
Eulerovy operátory... F+V=E+2 nic mvsf kvsf mev kev 2x mev Balónek s bodem na povrchu mef 4x mev 4x mef kef s = 1 f = 6 v = 8 e = 12 29
Další Eulerovy operátory 4x mev mef kemr Dočasná pomocná hrana Pomocná hrana odstraněna 4x mev 4x mef kfmrh kfmrh kill face make ring hole Existence algoritmu pro rozklad tělesa na nic 30
C) Objemové reprezentace Výčtové reprezentace přímé vyčíslení obsazeného prostoru (diskrétní reprezentace omezená přesnost) používají se hlavně jako pomocné datové struktury pro rychlé vyhledávání buněčný model (rastr), oktalový strom CSG reprezentace (konstruktivní geometrie těles) velice silná a přesná metoda (elementární tělesa, geometrické transformace, množinové operace) Obtížnější zobrazování (vrhání paprsku) 31
Buněčný model voxel volume element pole k l m voxelů jednobitová varianta: 0 - nic, 1 - těleso vícebitová varianta: 0 - nic, n > 0 - těleso číslo n nebo skalární hodnota (hustota, pohltivost, ) 32
Buněčný model - příklad 33
Visible human project 36
Voxelová data běžné úlohy nastavení přední roviny ořezání (výběr vrstvy dat) pohledové transformace množinové operace nad modelem osvětlení konstrukce izoploch separace oblastí (např. orgánů ) 37
Zpracování v prostoru obrazu a v prostoru objemu image order (po pixelech) objem dat rovina obrazu pixel paprsky pro jeden pixel object order (po voxelech) rovina obrazu pixel projekce voxelu voxel objem dat 38
Osvětlovací model - principy Voxely algoritmus ray casting / ray marching: Vzájemně si nezakrývají okolní světlo Navzájem světlo neodrážejí zrcadlově Rozptylují dopadající a tlumí procházející světlo (nebo dokonce vyzařují vlastní) 39
Osvětlovací model (spojitý) t 2 t 2 t 1 L t t 1 - t R D(s)ds t 1 ( ) e útlum na cestě t t 1... I 0 t 2 t t 1 I(t) D(t) P(cos ) dt barva v bodě t hustota D, útlum, odrazová funkce P, úhel mezi paprskem a světlem 40
Diskrétní osvětlovací model 0 L C(i) příspěvek barvy ve voxelu i od světla L dle osvětlovacího modelu neprůhlednost voxelu i i pozadí 123 k R C R = K K [ C(i) i (1- j ) ] i=0 j=i+1 barva voxelu i útlum na cestě ke kameře 42
Oktantový model 43
Oktantový strom (octree) oktalový strom y 2 3 66 62 63 67 64 65 7 7 5 3 1 x 4 5 z F F F F F F 0 1.... 7 F F 60 61.... 67 F F F Full E Empty P Partial 44
Oktantový strom 3D analogie 2D kvadrantového stromu je-li vnitřek krychle nehomogenní, rozdělí se na osm částí (dělí se až do úrovně voxelu) úspora paměti proti buněčnému modelu (uloženy jen obsazené kostičky) kreslení odzadu-dopředu (malířův algoritmus) pouze přivrácené stěny krychlí pouze stěny na povrchu těles (stěny mezi 0 a >0) několikanásobné překreslování některých pixelů 45
CSG (Constructive Solid Geometry) Prvky CSG stromu elementární geometrická tělesa (listy) snadno definovatelná a vyčíslitelná kvádr, poloprostor, hranol, koule, válec, kužel,... Odpovídají tvarům nástrojů a materiálu množinové operace (vnitřní uzly) kompozice složitějších těles z elementárních sjednocení, průnik, rozdíl, odpovídají operacím s nástroji geometrické transformace (hrany) modifikace elementárních i složitějších těles (homogenní) maticové transformace 46
CSG strom - modelování 47
CSG strom hierarchie modelovacích transformací množinové operace T 3 T 4 T 1 T 2 výsledek!!! T 1 T 3 T 1 T 4 geometrické transformace elementární tělesa, primitiva 48
Transformace v CSG stromu význam (sémantika) transformace T i T i mohou být uloženy v každé hraně CSG stromu převod souřadnic ze soustavy podtělesa (podstromu, elementárního tělesa) do soustavy nadtělesa podtěleso transformuji pomocí T i před tím, než ho přidám do nadtělesa snadná transformace libovolného podstromu změním pouze jednu matici inverzní transformace T i -1 pro vyčíslovací algoritmy (test bod CSG, zobrazení - RT) 49
Transformace v CSG stromu uložení transformací jen v listech kumulované součiny (např. T 1 T 2 T 3 nebo inverzní T 3-1 T 2-1 T 1-1 ) urychlení vyčíslovacích algoritmů pro editaci je výhodnější distribuované uložení transformací na hranách úsporné uložení elementárních těles Elementární tělesa jsou uložena v normovaném tvaru, všechny změny se provádí geometrickými transformacemi krychle (jednotková, vrchol v počátku), koule (jednotková, střed v počátku), válec (vodorovná podstava - jednotkový kruh, svislá osa, výška 1),... 50
Test bod x CSG strom leží daný bod A uvnitř tělesa? někdy chceme zjistit i podtělesa obsahující bod A testy bod elementární těleso jsou snadné (především pro normované tvary těles) průchod CSG stromem souřadnice bodu A se převádějí do souřadných soustav elementárních těles (inverzní transformace) místo množinových operací se provádějí jejich booleovské ekvivalenty ( místo, místo,...) 51
Test bod x CSG strom bod Uvnitř bod A ve světových souřadnicích T 1-1 A T 3 T 4 T 1 T 2 Uvnitř bod T 2-1 Mimo A bod T -1 3 T -1 1 A Uvnitř bod T 4-1 T 1-1 Mimo A Bod A v modelovacích souřadnicích jednotlivých elementárních těles 52
Prořezávání CSG stromů A B C směr pohledu úplný CSG strom (A+B)-C A + - B C podprostory s prořezanými CSG stromy A + - A B B C 53
Úprava CSG výrazů - vyvažování - + - D.. + C not not not not A B A C D B C D ((A+B)-C)-D=(A-C-D)+(B-C-D)=A.notC.notD+B.notC.notD 54
Zobrazování CSG reprezentace převedení do povrchové reprezentace pro každý druh elementárního tělesa: rutina převádějící těleso na mnohostěn množinové operace nad mnohostěny (omezená přesnost - výsledek nemusí být správně ani v topologickém smyslu) vrhání paprsku ( Ray-casting ) přesné zobrazování v rastrovém prostředí (pixelová přesnost) výpočetně náročnější metoda 55
CSG operace - záludnosti A B Je nutné definovat tzv. regularizované operace 56
Porovnání modelů 57
Porovnání modelů + Kompaktní + Snadno test in vykreslování + Obsáhlý test in + vykreslování 58
Další informace o tělese vrchol: (normálový vektor pro spojité stínování) hrana: příznak umělé hrany: pro reprezentaci děravých stěn nebo aproximaci křivých ploch sítí polygonů stěna: Barva normálový vektor (stínování, přivrácená/odvrácená) těleso: barva 59
Reference [MPG] Žára, Beneš, Sochor, Felkel. Moderní počítačová grafika, 2. vydání, Computer Press, 2004, kap. 5. [Mortenson] M. E. Mortenson. Geometric Modeling, 2nd edition, Wiley Computer Publishing, 1997 [Ježek] F. Ježek: Geometrické a počítačové modelování, pomocný učební text, ZČU Plzeň, 2000 http://www.fd.cvut.cz/personal/voracova/gm/021/gm_jezek.pdf [Finn] D. Finn: Geometric Modelling: lecture notes http://www.rosehulman.edu/~finn/ [Shene] C. K. Shene: Introduction to Computing with Geometry Notes, Michigan Technological University, http://www.cs.mtu.edu/~shene/courses/cs3621/notes/notes.html [Cubic] Cubic Tragedy, Story: Chun-Wang Sun, Director Ming-Yuan Chuan, National Taiwan University of Science and Technology, Taipei, presented at Computer Animation Festival, SIGGRAPH 05 60