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.
-
Spočítej střední hodnotu délky hran (L).
-
Rozděl každou hranu, která je moc dlouhá (> 4/3 L).
-
Spoj každou hranu, která je moc krátká (< 4/5 L).
-
Flipni každou hranu, pokud to přiblíží stupeň vertexů k 6.
-
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.
- Catmull-Clark Subdivision
-
Primal subdivision schéma. Generalizace regular B-spline subdivision pro iregulární (nemřížkové) meshe. Generuje souvislé limitní povrchy.
-
Pro každý face spočítej jako střední hodnota okolních vertexů.
-
Pro každou edge mezi oddělující faces spočítej .
-
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.
-
-
Spoj hranou každý nový face point s edge pointy hran, které tvořily ten face.
-
Spoj hranou každý nový vertex point s edge pointy hran, které vedly do původního vertexu.
-
Máš nové faces.
NoteBy UserTwoSix - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=99207210, https://commons.wikimedia.org/w/index.php?curid=99207376
-
- Loop Subdivision
-
Primal subdivision schéma pro trojúhelníkové povrchy. Generuje souvislé limitní povrchy.
- Butterfly Subdivision
-
Primal subdivision schéma pro trojúhelníkové povrchy. Generuje souvislé limitní povrchy.
"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.
"A yellow replaced by 4 reds."
- Midedge Subdivision
-
Duální subdivision schéma generující kvadrilaterální mesh.
- Kobbelt Subdivision
-
Primal subdivision schéma generující kvadrilaterální mesh.
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.
-
Umísti objekt, který chceš deformovat do mřížky (kostky či jiného konvexního objemu).
-
Transformuj "world" souřadnice na "lokální" souřadnice mřížky .
-
Modifikuj body mřížky dle libosti.
-
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:
-
Měj původní křivku se začátkem a koncem.
-
Pro každý vertex objektu najdi nejbližší bod křivky.
-
V každém bodě křivky měj lokální souřadnicový systém (Frenetův rámec).
Fáze II:
-
Deformuj křivku, aplikuj změny.
-
- Free-form Deformations with Catmull-Clark Volumes (CCV FFD)
-
Preprocessing fáze:
-
Oblast, kterou chceš deformovat obal mřížkou.
-
Subdividuj mřížku pomocí Catmull-Clark na kroků.
-
Každý vertex deformovaného objektu označkuj indexem buňky, ve které se nachází.
-
Parametrizuj vertex pomocí lokálních souřadnic buňky, ve které se nachází.
Deformační fáze:
-
-
Deformuj původní mřížku.
-
Subdividuj mřížku pomocí Catmull-Clark na kroků.
-
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.