Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
mgr-szz:in-gra:3-gra [2013/06/09 16:34]
csilla8852
mgr-szz:in-gra:3-gra [2016/06/17 16:20]
haf
Řá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. (PA010, PB009, PA157, PA158)
  
 +===== 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|}}
 +
 +====== Zdroj ======
 +Žára, Beneš, Sochor, Felkel. Moderní počítačová grafika. Computer Press, Brno, 2004. ISBN: 80-251-0454-0
mgr-szz/in-gra/3-gra.txt · Poslední úprava: 2020/04/12 16:56 (upraveno mimo DokuWiki)
Nahoru
CC Attribution-Noncommercial-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0