Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze | Následující verze Obě strany příští revize | ||
mgr-szz:in-gra:3-gra [2013/06/09 16:34] csilla8852 |
mgr-szz:in-gra:3-gra [2014/10/27 09:07] 127.0.0.1 upraveno mimo DokuWiki |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | =====Zadání===== | ||
+ | Modelování v počítačové grafice. Druhy modelů, vytváření a modifikace, zobrazení. Lokální a globální úpravy modelů, deformační metody FFD, EFFD. Princip zjednodušování povrchu, LOD modely, spojitý přechod mezi úrovněmi LOD. | ||
+ | ===== Druhy modelů ===== | ||
+ | |||
+ | Těleso je množina bodů v 3D splňující určitá kritéria (např. sousednost). | ||
+ | |||
+ | ===Trojúhelníková síť=== | ||
+ | Trojúhelníková síť (triangle mesh) je množina trojúhelníků sdílející své hrany. | ||
+ | * jednoduchá, vždy konvexní, každý vrchol leží v rovině | ||
+ | * pro vyplňování existují velmi rychlé algoritmy | ||
+ | * zobrazování je podporováno grafickým procesorem | ||
+ | * výpočty lze snadno optimalizovat (např. sledování paprsků) | ||
+ | * Datová struktura: geometrická část (obsahuje souřadnice vrcholů) + topologická část (které vrcholy tvoří trojúhelník, které trojúhelníky spolu sousedí) | ||
+ | Není vhodná na modelování tvaru těles a ploch (namísto např. NURBS), ale užitečná při deformaci. | ||
+ | Optimalizace sítě – trojúhelníky pokrývají plochu pravidelně vs. jemněji v místech s větší křivostí. Při zpracování dat v grafickém procesoru je vhodnější popsat síť trojúhelníků pomocí lineární struktury, která zajistí, že každý trojúhelník je zpracován právě jednou: pruh trojúhelníků (triangle strip), vejíř trojúhelníků (triangle fan). | ||
+ | Nevýhody: nesnadné mapování textur, může vzniknout geometrický alias (např. při změně měřítka - crack, u T-vrcholů). | ||
+ | |||
+ | {{:mgr-szz:in-gra:surfacemodeling015.png|}} | ||
+ | |||
+ | ===Voxelový model=== | ||
+ | |||
+ | * pole k x l x m voxelů („volume element“) | ||
+ | * jednobitová varianta (0 – nic, 1 – těleso) vs. vícebitová varianta (0 – nic, n>0 – těleso č. n) | ||
+ | |||
+ | {{:mgr-szz:in-gra:vox.png|}} | ||
+ | |||
+ | ===Hraniční reprezentace těles=== | ||
+ | |||
+ | * popis množiny hraničních bodů | ||
+ | |||
+ | {{:mgr-szz:in-gra:hr.png|}} | ||
+ | |||
+ | Manifold je těleso, které odpovídá nějakému skutečnému tělesu (tj. jehož hrany incidují právě s 2 plochami, jehož hrany neprotínají jiné plochy, osamocený vrchol nespojuje 2 části tělesa). | ||
+ | |||
+ | {{:mgr-szz:in-gra:topomodelnonmanifold.gif|}} | ||
+ | |||
+ | ==Eulerova rovnost== | ||
+ | |||
+ | Hraniční reprezentace jednoduchého mnohostěnu splňuje rovnici (opačně nemusí platit, tj. objekt splňující rovnici nemusí být jednoduchým mnohostěnem): | ||
+ | F + V = E + 2 | ||
+ | F (faces) – počet ploch | ||
+ | V (vertices) – počet vrcholů | ||
+ | E (edges) – počet hran | ||
+ | Musí platit, že každá hrana propojuje 2 vrcholy, stěny a hrany se neprotínají. | ||
+ | Pro manifoldy s otvory platí zobecněná Eulerova rovnost: | ||
+ | F + V = E + 2 (C – H) + R | ||
+ | R (ring) – počet vnitřních smyček hran | ||
+ | C (component) – počet samostatných komponent tělesa | ||
+ | H (hole) – počet otvorů | ||
+ | Platnost Eulerova rovnosti souvisí s vlastnostmi planárních grafů. | ||
+ | |||
+ | ===Hranová reprezentace=== | ||
+ | |||
+ | * drátový, „wire-frame“ model | ||
+ | * Implementace: seznam vrcholů + seznam hran (obsahuje ukazatele do seznamu vrcholů) | ||
+ | Nelze jednoznačně interpretovat (viz. obr.), ale vhodné k vytvoření náhledu, pro prozkoumání vnitřku tělesa. | ||
+ | |||
+ | {{:mgr-szz:in-gra:wirefr.gif|}} | ||
+ | |||
+ | ===Plošková reprezentace=== | ||
+ | |||
+ | Implementace: seznam vrcholů + seznam hran + seznam ploch (pořadí vrcholů v poli: counter clockwise) | ||
+ | Vhodná pro vykreslování zohledňující viditelnost. | ||
+ | |||
+ | ==Strukturovaná plošková reprezentace== | ||
+ | |||
+ | * Baumgart: Okřídlená hrana (winged edge) | ||
+ | * vhodné pro manifoldy | ||
+ | * je snadné odvodit mnoho topologických informací | ||
+ | * Pro nonmanifoldy: půlhrana | ||
+ | |||
+ | {{:mgr-szz:in-gra:we.gif|}} | ||
+ | |||
+ | ===Bodová reprezentace=== | ||
+ | |||
+ | Je množina povrchových bodů (většinou získány digitálním snímáním reálných objektů). Data v jednom bodě: souřadnice, normála, barva, … | ||
+ | * lze je uspořádat hierarchicky a zobrazovat jenom do určité úrovně | ||
+ | * vysoké paměťové nároky | ||
+ | |||
+ | ===Konstruktivní geometrie těles, CSG (Constructive Solid Geometry)=== | ||
+ | |||
+ | Založena na reprezentaci tělesa stromovou strukturou (CSG strom), který uchovává historii dílčích konstrukčních kroků. Vnitřní uzly obsahují množinové operace, listy CSG primitivy nebo prostorové transformace. CSG primitivy: kvádr, koule, válec, kužel, jehlan, … poloprostor, plocha NURBS, … | ||
+ | Vhodné pro tvarování tělesa, nevhodné pro zobrazení (lze ale snadno přetransformovat např. do hraniční reprezentace). | ||
+ | Prořezaný CSG strom: odstraní se nevyužité větve stromu (pokud se v dané části prostoru nevyskytuje to dané těleso). | ||
+ | CSG tree pruning – zásadní zjednodušení CSG stromu. | ||
+ | |||
+ | {{:mgr-szz:in-gra:csg.png|}} {{:mgr-szz:in-gra:csg_res.png|}} | ||
+ | |||
+ | ===== Modelování pomocí deformací ===== | ||
+ | |||
+ | Deformace je dodatečné tvarování, může být lokální nebo globální. | ||
+ | |||
+ | ===Barrovy deformace=== | ||
+ | |||
+ | * globální | ||
+ | * neuniformní změna měřítek: X = F_x(x), Y = F_y(y), Z = F_z(z), kde [x,y,z] je nedeformovaný, [X,Y,Z] je deformovaný bod | ||
+ | |||
+ | Základní deformace: | ||
+ | |||
+ | ==Změna měřítek (Scale)== | ||
+ | |||
+ | X = S_x(x) = S_x . x | ||
+ | Y = S_y(y) = S_y . y | ||
+ | Z = S_z(z) = S_z . z | ||
+ | |||
+ | {{:mgr-szz:in-gra:scale.png|}} | ||
+ | |||
+ | ==Zeslabování, zašpičatění (tapering)== | ||
+ | |||
+ | ve směru osy z: | ||
+ | X = r_x . x | ||
+ | Y = r_y . y | ||
+ | Z = z | ||
+ | r_x, r_y jsou lineární nebo nelineární zeslabovací funkce | ||
+ | |||
+ | {{:mgr-szz:in-gra:tapering.png|}} | ||
+ | |||
+ | ==Zkroucení (twisting)== | ||
+ | |||
+ | kolem osy z: | ||
+ | X = x . cos(f(z)) – x . sin(f(z)) | ||
+ | Y = y . sin(f(z)) – y . cos(f(z)) | ||
+ | Z = z | ||
+ | |||
+ | {{:mgr-szz:in-gra:twist.png|}} | ||
+ | |||
+ | ==Ohýbání (bending)== | ||
+ | |||
+ | * složená transformace | ||
+ | * ohýbací zóna - aplikuje se kruhová deformace | ||
+ | * vnější zóny tělesa - dochází k posuvu a natočení | ||
+ | |||
+ | {{:mgr-szz:in-gra:bend.png|}} | ||
+ | |||
+ | ===== Volné tvarování těles (FFD, Free-Form Deformation) ===== | ||
+ | |||
+ | Lze aplikovat na hraniční i na CSG modely, plochy, části ploch v prostoru. Idea je následující: obejkt z elastického materiálu vložíme do formy ve tvaru hranolu a prázdný prostor zalijeme materiálem. Pak aplikujeme sadu transformací na hranol, s tím současně deformujeme i samotný objekt. | ||
+ | Postup: | ||
+ | Máme souřadnicový systém O, X, Y, Z, zavedeme pomocný souřadnicový systém X_0, bázi tvoří vektory S, T, U, které vymezují rovnoběžnostěn (nemusí být kolmý). Rovnoběžnostěn obsahuje objekt nebo jeho část. Bod X = [x, y, z] má v lokálném souřadnicovém systému X_0 souřadnice [s, t, u] a platí: X_0 + s . S + t . T + u . U | ||
+ | s = {T x U(X-X_0)}/{T x U . S} | ||
+ | t = {S x U(X-X_0)}/{S x U . T} | ||
+ | u = {S x T(X-X_0)}/{S x T . U} | ||
+ | V prostoru rovnoběžnostěnu vytvoříme pravidelnou mřížku řídících bodů P_ijk. | ||
+ | Prostor zdeformujeme přemístěním řídících bodů. | ||
+ | Pro určení změněné pozice bodu objektu se nejprve určí lokální souřadnice bodu, pak poloha bodu ve světových souřadnicích, výslednou polohu ovlivní jednotlivé řídící body s určitou váhou (např. lineární interpolací) – měla by zaručit požadovanou hladkost (spojitost) objektu, např. pomocí Bernsteinových polynomů. | ||
+ | |||
+ | * deformovaný parametrický povrch zůstane parametrickým povrchem, deformované parametrické křivky zůstanou parametrickými křivky. | ||
+ | * FFD je možné aplikovat postupně | ||
+ | * hlavním aspektem je udržet předepsanou spojitost navazujících deformovaných a nedeformovaných oblastí | ||
+ | * některé operace CAD systémů nelze použít, např. zaoblování ostrých hran, svařování, … | ||
+ | * nevýhoda: rozhraní mezi deformovanou a nedeformovanou oblastí leží v rovině | ||
+ | |||
+ | {{:mgr-szz:in-gra:ffd.png|}} | ||
+ | |||
+ | ===== Zjednodušování scény ===== | ||
+ | |||
+ | Může se odehrávat na úrovni sítí trojúhelníků, objektů, skupin objektů, … Některé metody zachovávají reprezentaci objektu, jiné přecházejí od složitější do jednodušší reprezentace. | ||
+ | |||
+ | === LOD (Level of Detail) === | ||
+ | |||
+ | Úroveň detailu, bezrozměrná. Intuitivně: možnost odebírat a přidávat detaily objektu. Kritérium pro změnu LOD při zobrazování scény je např. vzdálenost objektu od pozorovatele, velikost průmětu objektu na plochu obrazovky, velikost prostorového úhlu, v němž je objekt, … | ||
+ | Díky stínování může být zjednodušený objekt vizuálně velmi blíže původnímu objektu. | ||
+ | Jev vyskakování částí objektu (popping effect) – objeví se nebo zmizí skupiny trojúhelníků. Lze omezit pomocí obrazových technik (v předstihu vytvoříme snímek po změně LOD a poté interpolujeme mezi aktuálním a tímto snímkem). | ||
+ | Rozdělení metod LOD: | ||
+ | |||
+ | == Geometrické stupně detailu == | ||
+ | * Spojité stupně LOD - vychází z decimačních algoritmů, LOD se mění v jemných krocích, vše vloženo do vhodné datové struktury (vysoké paměťové nároky). | ||
+ | * Diskrétní stupně LOD - nejsou paměťově ani výpočetně až tak náročné, 3-5 samostatných reprezentací s klesajícím množstvím detailů (připravuje návrhář), každé úrovni je přiřazeno číslo - vzdálenost, u níž dochází k přepnutí na další reprezentaci. Nevýhody: redundance dat, skokový přechod z jedné reprezentace do druhé. Výhody: snadná implementace, jednoduché rozhodování o změně LOD. | ||
+ | |||
+ | == Zjednodušování sítě trojúhelníků == | ||
+ | * Metody zachovávající vs. nezachovávající přesnost modelu | ||
+ | * Metody zachovávající vs. nezachovávající topologie modelu | ||
+ | * Metody zachovávající podmnožinu původních vrcholů sítě vs. vytvoří novou síť převzorkováním | ||
+ | |||
+ | == Zjednodušená reprezentace objektů pomocí obrázků a bodů == | ||
+ | Přírodní objekty (stromy, květiny, ...) se obtížně modelují, zobrazují (ve větším počtu). Náhradná reprezentace: 2D obrázek, textura aplikovaná na jednoduchý polygon (pozadí musí být plně průhledné). | ||
+ | * Impostor - Pokud se pozorovatel přiblíží k impostoru, pak je nahrazen geometrickými objekty. Vytvářejí se dynamicky, snižují iluzi hloubky prostoru. | ||
+ | * Billboard - Jeden objekt - jeden polygon, který je vždy natočený k pozorovateli. Používá se ve virtuální realitě. | ||
+ | * Sprite - Jeden nosný polygon, jeden objekt, poloha se nezmění. | ||
+ | |||
+ | ====== Zdroj ====== | ||
+ | Žára, Beneš, Sochor, Felkel. Moderní počítačová grafika. Computer Press, Brno, 2004. ISBN: 80-251-0454-0 |