1 3 úrovně pohledu na modely 2 Modely prostorových těles 1997 Josef Pelikán, MFF UK Praha 2007 Jiří Sochor, FI MU Brno svět - fyzikální objekty nemůžeme postihnout jejich složitost a mikroskopické detaily matematické objekty vhodná idealizace fyzikálních objektů, intuitivně odpovídá nejvyšší úrovni našeho poznání reálného světa reprezentace (datové modely) přiřazení datové reprezentace pro vybranou třídu matematických objektů, vhodná pro manipulaci (počítačové zpracování) http://www.fi.muni.cz/~sochor/ 3 4 Modelování těles (solid modeling) Požadavky na reprezentaci těles důraz je kladen na tvorbu úplných reprezentací fyzických prostorových objektů úplná reprezentace umožňuje řešit libovolný geometrický problém algoritmicky (bez zásahu uživatele modelovacího a zobrazovacího systému) široká doména jednoznačnost (úplnost) unikátnost přesnost nemožnost vytvořit chybnou reprezentaci snadnost vytvoření platné reprezentace uzavřenost vůči vybraným operacím kompaktnost efektivní algoritmy
5 6 Těleso, plochy, hrany, vrcholy Drátové modely jednoznačná interpretace? 7 8 Drátové modely a modelování Modelovací postupy primitivní tělesa, transformace a booleovské operace s okamžitým zpracováním dtto s odloženým zpracováním - CSG strom Eulerovy operátory - úprava beztvarého jádra topologicky korektními operacemi lokální tvarování těles globální deformace těles lokální deformace těles
9 10 Modely reprezentace 3D scén Objemové reprezentace objemové reprezentace přímé informace o vnitřních objemech těles snadný test bod těleso (leží daný bod uvnitř tělesa?), zobrazování může být obtížnější používají se též jako pomocné datové struktury pro rychlé vyhledávání povrchové reprezentace přímé informace o povrchu těles (hrany, stěny) obtížnější test bod těleso (tělesa vůbec nemusí mít vnitřní objem), poměrně snadné zobrazování 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, oktalový strom CSG reprezentace velice silná a přesná metoda (elementární tělesa, geometrické transformace, množinové operace) obtížnější zobrazování (vrhání paprsku) 11 12 Buněčný model Buněčný model - příklad 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
13 14 Buněčný model - příklad 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í kontrukce izoploch separace oblastí (např. orgánů ) 15 16 Volume based modeling Visible human project Aplikace: visible human project snímky řezů mrtvoly muže každý řez je pole voxelů celé tělo je popsáno sadou volumetrických dat
17 18 Oktantový model Oktantový strom (octree) oktalový strom y 66 62 63 67 4 5 2 7 64 65 7 5 3 3 1 x z F F F F F F 0 1.... 7 F F F F 60 61.... 67 19 20 Oktantový strom CSG (Constructive Solid Geometry) 3D analogie 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 kreslení odzadu-dopředu 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ů elementární geometrická tělesa snadno definovatelná a vyčíslitelná kvádr, poloprostor, hranol, koule, válec, kužel,... množinové operace kompozice složitějších těles z elementárních sjednocení, průnik, rozdíl,.. geometrické transformace modifikace elementárních i složitějších těles (homogenní) maticové transformace
21 22 CSG strom - modelování CSG strom - transformace množinové operace T 3 T 4 T 1 T 2 výsledek!!! T 3.T 1 T 4.T 1 geometrické transformace elementární tělesa, primitiva 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í) 23 Transformace v CSG stromu uložení transformací jen v listech kumulované součiny (např. T 3 T 2 T 1 nebo inverzní T 1-1 T 2-1 T 3-1 ) urychlení vyčíslovacích algoritmů (pro editaci je výhodnější distribuované uložení transformací) úsporné uložení elementárních těles 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),... 24
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,...) 25 Test bod x CSG strom bod A T 1 T 2-1 bod A T 1 Uvnitř T 3 T 4-1 bod A T 2 Mimo -1-1 bod A T 1-1 T 3 bod A T 1-1 T 4 Uvnitř Mimo 26 27 28 Prořezávání CSG stromů Úprava CSG výrazů A B C směr pohledu úplný CSG strom (A+B)-C A + - B C podprostory s prořezanými CSG stromy A + - B - C D A. not C not D + B. not C not D A ((A+B)-C)-D=(A-C-D)+(B-C-D)=A.notC.notD+B.notC.notD + - A B B C
Zobrazování CSG reprezentace 29 CSG operace - záludnosti 30 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 Je nutné definovat tzv. regularizované operace Povrchové reprezentace drátový model pseudo-povrchová reprezentace pouze vrcholy a hrany těles (nelze použít pro výpočet viditelnosti) VEF(S) reprezentace kompletní topologická informace: seznamy vrcholů (Vertex), hran (Edge), stěn (Face) a těles (Solid) okřídlená hrana ( winged-edge ) redundantní informace pro rychlé vyhledávání sousedních objektů (hrany incidentní s vrcholem,..) 31 Povrchová reprezentace VEFS V 5 E 5 F 2 V 4 E 3 E 4 V 3 E 2 F 1 V 1 E 1 V 2 těleso S 1 hrany stěny tělesa 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 S 1 F 1 F 2 E 1 E 2 E 3 E 4 E 5 32
33 34 Polygonální geometrie - běžné úlohy Nalezení hraničních hran 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í vrchoku a přilehlých trojúhelníků - kolaps hran/rozdělení vrcholů 35 36 Přemístění vrcholu Kolaps hrany
Rozdělení vrcholu 37 Geometrie a topologie Primitiva vrcholy hrany stěny (polygony, často jen trojúhelníky) Topologické vztahy vrcholy sousedící s hranou hrany sousedící (připojené) ke stěně vrcholy připojené ke stěně. Geometrie pozice a tvar vrcholů, hran, stěn Topologie konektivita/sousednost mezi různými vrcholy, hranami, stěnami 38 39 40 Topologicky identické sítě Topologicky odlišné sítě identická geometrie vrcholů odlišná topologie a geometrie trojúhelníků/hran
41 42 Manifoldy Okřídlená hrana (winged edge) Def: 2-manifold: Pro každý povrchový bod existuje okolí, které je topologicky ekvivalentní s rovinou V 4 V 1 E 2 E 3 F 1 E 1 F2 E 4 E 5 x x x y y y z z z V 1 V 2 V 3 vrcholy V 3 V 2 V 5 hrany V 1 V 2 E 1 těleso S 1 F 1 F 2 E 2 E 5 stěny E 4 E 3 S 1 tělesa + - F 1 F 2 43 44 Okřídlená hrana - (F,E,V) Okřídlená hrana 2 F, E, V : F E ( V, F,2E) Příklad: průchod hranami levé stěny
45 46 Okřídlená hrana Orientovaná okřídlená hrana problém orientace: význam před/succ se mění podle pořadí procházení Idea: vytvoření symetrické datové struktury uložení dvou polovičních hran místo jedné hrany poloviční hrany na sebe vzájemně ukazují 47 48 Orientovaná okřídlená hrana Orientovaná okřídlená hrana Všechny hrany mají své předchůdce a následníky i v těch případech, že je to okrajová hrana Komponenty: poloviční hrana trojúhelník vrchol
49 50 Orientovaná okřídlená hrana Orientovaná okřídlená hrana Alg: Ověření, zda vrchol je na hranici Alg: Nalezení vrcholu na hranici Orientovaná okřídlená hrana Alg: Výstup všech hran na okraji 51 Eulerova rovnost pro jednoduchý polyedr (bez děr) platí vzorec V - E + F = 2 V -počet vrcholů, E -počet hran, F -počet stěn zobecněný vzorec (dovoluje díry): V - E + F - L = 2 (S - H) L -počet děr ve stěnách, S -počet těles, H -počet děr procházejících celým tělesem 52
53 54 Euler.rovnost - jednoduchá tělesa Eulerovy operátory konstrukce 2-manifoldu po krocích v každém kroku je zajištěna platnost Eulerových vzorců (těleso je topologicky korektní) ke každému operátoru existuje inverzní (snadná implementace příkazu undo ) příklady Eulerových operátorů: Mvsf - make vertex, solid, face, Mev - make edge, vertex, Mef - make edge, face, Kef - kill edge, face,... 55 56 Topologicky korektní model kfmrh kill face make ring hole mvsf mev mev,mev mef mev,mev,mev,mev mef,mef,mef,mef mev mev,mev,mev,mef kemr mev,mev,mev,mev mef,mef,mef,mef, kfmrh Porovnání modelů
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ů 57 stěna: barva normálový vektor (stínování, přivrácená/odvrácená) těleso: barva Ukázka - formát OBJ v 0.0 0.0 0.0 v 0.0 0.0 1.0 v 0.0 1.0 0.0 v 0.0 1.0 1.0 v 1.0 0.0 0.0 v 1.0 0.0 1.0 v 1.0 1.0 0.0 v 1.0 1.0 1.0 vn 0.0 0.0 1.0 vn 0.0 0.0-1.0 vn 0.0 1.0 0.0 vn 0.0-1.0 0.0 vn 1.0 0.0 0.0 vn -1.0 0.0 0.0 f 1//2 7//2 5//2 f 1//2 3//2 7//2 f 1//6 4//6 3//6 f 1//6 2//6 4//6 f 3//3 8//3 7//3 f 3//3 4//3 8//3 f 5//5 7//5 8//5 f 5//5 8//5 6//5 f 1//4 5//4 6//4 f 1//4 6//4 2//4 f 2//1 6//1 8//1 f 2//1 8//1 4//1 58 59 60 Modely a zobrazování Modely a světlo - realita a iluze