3D Models

Meshes

Manifolds

-manifold je prostor, kde okolí každého bodu je homeomorfní s -dimenzionálním Euklidovským prostorem.

Kružnice je 1-manifold. Koule je 2-manifold.

Interior tělesa

Body uvnitř tělesa.

Takové body, pro které platí, že otevřená koule (bez "obalu") s dostatečně malým poloměrem obsahuje jen body uvnitř tělesa.

Boundary tělesa

Body na hranici tělesa.

Takové body , pro které platí, že existuje takový bod , že všechny body mezi a (kromě , včetně ) jsou uvnitř tělesa.

Closure tělesa

Body, které nejsou vně tělesa:

Regularized boolean operators

Booleanovské operace na tělesech, které eliminují "zbytky", které mohou vzniknout při booleanovských operacích.

Orientability

Dá se konzistentně rozhodnout, na které straně povrchu jsem v každém bodě?

Koule — ano.

Möbius strip — ne.

Boundary representation (B-rep)

Reprezentace tělesa jako množiny pospojovaných (orientabilních) povrchů, které tvoří boundary.

Topologie

Jak jsou povrchy pospojovaný dohromady?

Geometry

Kde ty povrchy vlastně jsou v prostoru?

Genus

"Kolik donutových děr to má?"

Maximální počet řezů podél uzavřených vzájemně se neprotínajících křivek, které nerozpojí těleso.

Euler characteristic (Euler-Poincaré formula)

Popisuje topologii nějakého prostoru nezávisle na tom, jak je zohybáný.

kde

  • je počet vertexů,

  • je počet hran,

  • je počet stěn,

  • je počet souvislných komponent,

  • je genus,

  • je počet boundary loops.

Mesh representation
  • Strom solids → faces → edges → vertices.

  • Triangles (face set) — list of triangles with redundancy.

  • Indexed triangles — list of triangles with less redundancy.

  • Winged edge.

  • Half-edges.

  • Corner tables — tabulka rohů (vertex + trojúhelník).

Isotropic remeshing

Uniformizuje trojúhelníky.

  1. Spočítej střední hodnotu délky hran (L).

  2. Rozděl každou hranu, která je moc dlouhá (> 4/3 L).

  3. Spoj každou hranu, která je moc krátká (< 4/5 L).

  4. Flipni každou hranu, pokud to přiblíží stupeň vertexů k 6.

  5. Posuň každý vertex směrem k průměru jeho sousedů (centroidu).

Subdivision

Parametric continuity

Popisuje, jak "pěkně" na sebe parametrické křivky navazují:

  •  — obě křivky jsou spojité.

  •  — obě křivky a jejich první derivace jsou spojité.

  •  — obě křivky a jejich druhé derivace jsou spojité.

Geometric continuity

Křivka nebo povrch může mít kontinualitu. Pro segmenty křivky po obou stranách libovolného bodu :

  •  — křivky se v dotýkají.

  •  — křivky se v dotýkají a sdílí v něm tangentu.

  •  — křivky se v dotýkají, sdílí v něm tangentu a střed křivosti.

  • …​

    Křivka je kontinuální, pokud se dá zapsat jako parametrická kontinuální křivka.

Typy vertexů
  • interior,

  • smooth boundary,

  • convex corner,

  • concave corner.

Subdivision scheme (refinement scheme)

Postup, podle kterého subdivizi křivky nebo povrchu provádíme. Schéma může být:

  • Approximating — přidá body do hran a existující body posouvá..

  • Interpolating — přidává nové body, ale prochází původními.

  • Corner-cutting — "seká rohy".

    V případě povrchů je lze také dělit podle toho, jaká primitiva dělí:

  • Primal — dělí faces.

  • Dual — dělí vertices.

Subdivision Curves

Chaikin’s corner-cutting method (1974)

Pro každý segment lomené čáry nahradí segmentem , kde:

Bézier (De Casteljau) subdivision

Bézierovu křivku řádu můžeme rozdělit na dvě Bézierovy křivky řádu v kterémkoli bodě pomocí De Castaljau algoritmu. Není to interpolační schéma, jelikož (až na kraje) zahazuje kontrolní body.

Subdivision Surfaces

Primal — triangles Primal — quads Dual

Aproximating

Loop

Catmull-Clark

Doo-Sabin, midedge, Dyn-Levin-Liu

Interpolating

Butterfly

Kobbelt

Regular B-spline subdivision

Podobně jako u Bézier subdivision pro křivky, můžeme složitě spočítat matici, která nám dá nové kontrolní body. Dá se to ale udělat i jednoduššeji:

kde pro 1 level subdivize musím spočítat 4 nové face pointy , 4 nové edge pointy a vertex point uprostřed nich.

regular b spline

Catmull-Clark Subdivision

Primal subdivision schéma. Generalizace regular B-spline subdivision pro iregulární (nemřížkové) meshe. Generuje souvislé limitní povrchy.

  1. Pro každý face spočítej jako střední hodnota okolních vertexů.

  2. Pro každou edge mezi oddělující faces spočítej .

  3. Pro každý původní vertex spočítej nový vertex , kde:

    • je valence vertexu (stupeň uzlu),

    • je průměr nově vytvořených sousedících s ,

    • je průměr midpointů všech hran dotýkajících se , kde midpoint je střed oné hrany ne ten nový edge point.

  4. Spoj hranou každý nový face point s edge pointy hran, které tvořily ten face.

  5. Spoj hranou každý nový vertex point s edge pointy hran, které vedly do původního vertexu.

  6. Máš nové faces.

    cc 01 cc 02

Loop Subdivision

Primal subdivision schéma pro trojúhelníkové povrchy. Generuje souvislé limitní povrchy.

loop

Butterfly Subdivision

Primal subdivision schéma pro trojúhelníkové povrchy. Generuje souvislé limitní povrchy.

butterfly

"New points on edges, original points remain."

Doo-Sabin Subdivision

Duální subdivision schéma pro polygonální povrchy. Generalizuje bi-kvadratické B-spliny. Generuje souvislé limitní povrchy.

doo sabin

"A yellow replaced by 4 reds."

Midedge Subdivision

Duální subdivision schéma generující kvadrilaterální mesh.

midedge

Kobbelt Subdivision

Primal subdivision schéma generující kvadrilaterální mesh.

kobbelt

Advanced modeling techniques

Barr’s global deformations
  • Scaling:

  • Tapering (zúžení):

  • Twisting (podél z)

  • Bending (podél y) pro bending range , bending rate , center of the bend .

Free-form Deformation (FFD)

Lokální deformace podle mřížky.

  1. Umísti objekt, který chceš deformovat do mřížky (kostky či jiného konvexního objemu).

  2. Transformuj "world" souřadnice na "lokální" souřadnice mřížky .

  3. Modifikuj body mřížky dle libosti.

  4. Transformuj objekt uvnitř mřížky zpět do "world" souřadnic.

Extended Free-form Deformation (EFFD)

Rozšíření FFD pro mřížky nesložené z rovnoběžnostěnů.

Axial deformations

Fáze I:

  1. Měj původní křivku se začátkem a koncem.

  2. Pro každý vertex objektu najdi nejbližší bod křivky.

  3. V každém bodě křivky měj lokální souřadnicový systém (Frenetův rámec).

Fáze II:

  1. Deformuj křivku, aplikuj změny.

Free-form Deformations with Catmull-Clark Volumes (CCV FFD)

Preprocessing fáze:

  1. Oblast, kterou chceš deformovat obal mřížkou.

  2. Subdividuj mřížku pomocí Catmull-Clark na kroků.

  3. Každý vertex deformovaného objektu označkuj indexem buňky, ve které se nachází.

  4. Parametrizuj vertex pomocí lokálních souřadnic buňky, ve které se nachází.

Deformační fáze:

  1. Deformuj původní mřížku.

  2. Subdividuj mřížku pomocí Catmull-Clark na kroků.

  3. Pro každý vertex najdi podle značky jeho novou buňku a deformuj .

Sweep-based FFD

Modifikuje mesh přímo, ne skrze mřížku. Na řezy meshem aplikuješ afinní transformace.

Implicit surfaces

Objekty definované pomocí reálných funkcí. Normály lze získat gradientem. Dají se použít i v constructive solid geometry.

Blobs

Meshe popsané součtem Gaussových křivek.

Volume data rendering — surface reconstruction

Volume data visuliation

Aplikace při zpracování dat z Roentgenu, MRI, pozitronové emisní tomografie. Takže v medicíně, geologii, seismologii, meteorologii, matematice.

Formáty dat
  • Colinear Regular Grid

  • Colinear Irregular Grid

  • Grid with Regular topology

  • Hybrid grid

  • Voxels — hodnoty uprostřed buněk

  • Cells — hodnoty v mřížce

Iso-surface reconstruction

Výpočet a vykreslení povrchu, kde mají data stejné hodnoty. Mezi metody patří:

  • Non-transparent voxels

  • Iso-lines-based surface — spojování 2D iso-křivek

  • Marching cubes

Marching cubes
Mesh simplification

Nový vertex vznikne průměrováním okolí.

Quadric Error Metric (QEM) Simplification

Postupně smršťuj hrany (kratší než threshold) od té, která má nejmenší cenu. Cena se odvíjí od kvadratické chyby vzhldem k okolním trojúhelníkům.

Progressive meshes

Meshe, na kterých lze provádět operaci ecol (edge collapse) a její inverzi vsplit (vertex split). Používá explicit energy metric — součet vzdáleností mezi vertexy + penalta za počet vertexů + energie hran, kdyby to byly pružiny.

Geomorphs

Smooth přechody mezi dvěma progressive meshi.