Geometriai modellezés Szécsi László
Adatáramlás vezérlés Animáció világleírás Modellezés kamera Virtuális világ kép Képszintézis
A modellezés részfeladatai Geometria megadása [1. előadás] pont, görbe, terület, felület, test, fraktálok jellemzően fix Transzformációk [2. előadás] a fenti objektumokból hány van, mekkora és hol jellemzően időben változnak Színek, felületi optikai tulajdonságok [3. előadás]
Pontok megadása Számokat tárolunk a memóriában egy pontot leíró számok a koordináták az összerendelés a koordináta-rendszer Rendszerek Descartes (angolul: Cartesian) polár súlyozáson alapuló baricentrikus homogén
Descartes koordináták x, y, z: tengelyek mentén elmozdulás kitüntetett origó x, y, z irányok Miért hasznos? eltolás: összeadás irány: 1 hosszú vektor közbezárt szög cosinusa: skalárszorzat (dot) merőleges: vektoriális szorzat (cross) y 1 1 x
Baricentrikus koordináták a, b, c súlyok: pont a síkon kitüntetett 3 csúcs Miért hasznos? mind pozitív: pont a háromszögön belül a súlyok használhatók a csúcsokhoz rendelt értékek közötti interpolációra homogén 2x súly: ugyanaz a pont 1 1 súlypont 3
Homogén koordináták legyen a 3 pont: [0,0], [0,1] és [1,0] (Descartes koordinátákban megadva) Y h ekkora súlyok kellenek [x,y]-hoz X h = x Y h = y w = 1 - X h - Y h ha a súlyösszeg 1, különben ezek valahányszorosa ( 0) w X h
Homogén koordináták w helyett inkább adjuk meg h súlyösszeget homogén koordináták a síkon [X h, Y h, h] ugyanez a pont 1 összsúllyal (/h): [X h /h, Y h /h, 1] Descartesban: [X h /h, Y h /h]
Mennyivel tud többet? szemléletesen X h, Y h pont irányában, 1/h-szoros távolságra h lehet 0 is! ideális pont végtelen távol Descartesban nem ábrázolható [0,0,0] pont nincs! eltolás, középpontos vetítés lineáris transzformáció [2. előadás]
Görbék Görbe: pontok halmaza koordinátáik kielégítenek egy egyenletet implicit: f(x, y) = 0 Kör: (x - x0) 2 + (y - y0) 2 - r 2 = 0 paraméteres: x = x(t), y = y(t), t [0,1] Kör: Klasszikus görbék van egyenlet x(t) = x0 + r cos 2πt y(t) = y0 + r sin 2πt t [0,1] definíció = paraméterek megadása
Szabadformájú görbék Definíció kontrolpontokkal Polinom: x(t) = Σ a i t i, y(t) = Σ b i t i A polinomegyütthatók származtatása: Lagrange interpoláció Bezier approximáció
Spline Spline: C 2 folytonos összetett görbe alacsony fokszámú görbékből gyorsan számítható lokálisan vezérelhető
vezérlőpontok, súlyok NURBS csomóvektor t o t 1 t 2 t 3 paramétertartomány
NURBS görbék Maya-ban
Felületek Felület 3D pontok halmaza: koordinátáik kielégítenek egy egyenletet implicit: f(x, y, z) = 0 gömb: (x - x0) 2 + (y - y0) 2 + (z - z0) 2 - r 2 = 0 paraméteres: x = x(u,v), y = y(u,v), z = z(u,v), u,v [0,1] gömb: Klasszikus felületek x = x0 + r cos 2πu sin πv y = y0 + r sin 2πu sin πv z = z0 + r cos πv u,v [0,1] definíció = paraméterek megadása
Kvadratikus felületek x T A x = 0 x T = [x, y, z, 1] A koordináták legfeljebb másodfokon gömb, ellipszoid, sík, paraboloid, hiperboloid, hengerfelület,... Ellipszoid Végtelen kúp x 2 + y 2 + z 2 x -1=0 2 y + 2 - z 2 =0 a 2 b 2 c 2 a 2 b 2 Végtelen henger x 2 y + 2-1 =0 a 2 b 2
Példa kvadratikus felület Felület egyenlete legyen 3x 2 + 2xy + z 2 + 2z - 7 = 0 Ugyanez mátrixformában x y z 1 3 2 0 0 0 0 0 0 0 0 1 2 0 0 0-7 x y z 1 = 0
Szabadformájú felületek A felület izoparamterikus görbékből áll megadott vezérlőpontok izop. vezélőpontja Az izoparametrikus görbék vezérlőpontjait szintén görbével adjuk meg
2D vezérlőpontsereg u, v-t behelyettesítve a felület egy pontját kapom r(u,v)
NURBS felületek Maya-ban
Testek Ellenpéldák: Érvényes testek: reguláris halmaz nem lehetnek alacsony dimenziós elfajulásai minden határpont mellett van belső pont Garantáltan érvényes testet építő módszerek speciális felületi modellezés: B-rep konstruktív tömörtest geometria
CSG: konstruktív tömörtest geometria 3D ponthalmazok uniója, metszete is ponthalmaz Kizárás: reguláris halmazműveletek (határpontok eltávolítása + halmazművelet + új határpontok hozzávétele)
CSG alapműveletek Reguláris unió Reguláris különbség Reguláris interszekció
CSG modellezés * \* * Reprezentáció: bináris fa
Normál és ciklikus CSG
CSG modellezés Maya-ban
Poliéder-modellezés Test = határfelületek gyűjteménye Topológiai ellenőrzés (Euler tétel): csúcs + lap = él + 2
Poligon alkotóelemek
Euler operátorok Elemi műveletek nem sérthetik a topológiát Elvi operátor-készlet: MVE Ṿ E E E 1 Csinálj csúcsot és élt F MEF F Csinálj élt és lapot F E 1 semmi MEVVF Csinálj élt, két csúcsot és lapot F V 1 E V 2
Gyakorlati Euler operátorok Face extrude Face split Edge Collapse Vertex split
Poligonmodellezés Maya-ban
Poligonmodellek inkrementális képszintézisben grafikus kártya háromszöget tud rajzolni háromszög-háló = mesh
Háromszögháló reprezentáció Mesh Vertex buffer Index buffer Attribútum tábla Vertex buffer csúcs-rekordok tömbje pos normal tex pos normal tex pos normal tex vertex
Primitívek összeállítása non-indexed vertex bufferben egymás után következők triangle list triangle strip 1 2 3 4 5 6 1 2 3 4 5 2 5 2 4 1 3 4 6 1 3 5 triangle fan 2 1 2 3 4 5 1 3 5 4
Indexelt primitívek Index buffer egészek tömbje Indexed primitive index bufferben egymás utáni következő indexekhez tartozó vertexek list, strip, fan előny kényelmes nem kell strip hogy gyors legyen
Attribútum tábla Vertex bufferben nincs bent minden adat a megjelenítéshez + anyagok textúra egyéb shader paraméterek Melyik lap milyen anyaggal: attribútum tábla tömb számokkal
Submesh Azonos attribútúmú lapok halmaza Hatékonyság: legyen az index bufferben attribútum szerint rendezve Submesh egy folytonos tartomány Mesh rajzolása minden submeshre textúra/shader beállítás rajzolás