Obsah

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.

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ů).

Voxelový model

Hraniční reprezentace těles

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).

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

Nelze jednoznačně interpretovat (viz. obr.), ale vhodné k vytvoření náhledu, pro prozkoumání vnitřku tělesa.

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

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, …

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.

Modelování pomocí deformací

Deformace je dodatečné tvarování, může být lokální nebo globální.

Barrovy deformace

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

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

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

Ohýbání (bending)

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ů.

Zdroj

Žára, Beneš, Sochor, Felkel. Moderní počítačová grafika. Computer Press, Brno, 2004. ISBN: 80-251-0454-0