Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaBrigitta Oroszné Megváltozta több, mint 9 éve
1
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás
2
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Modellezés Modellezés=virtuális világ definiálása objektumok geometriája, színe, anyaga 2D geometria: pontok, görbék, síkbeli területek 3D geometria: mint 2D geom. + térbeli felületek, 3D-s testek Magasabb dimenziójú adatok vizualizációja (mérnöki gyakorlat): alsóbb dimenziós altérbe vetítéssel
3
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Pontok definiálása (2D) Koordináták megadása alkalmas koordináta rendszerben: x y r XhXh YhYh w Descartes koord. rsz. eltolás Polár koord. rsz. elforgatás Baricentrikus Homogén vetítés (lásd később) 1 1 1
4
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Görbék definiálása (2D) Koordinátáik (helyvektoraik) kielégítenek egy egyenletet : implicit: f(x, y) = 0, f(r) = 0 2D egyenes: ax + by + c = 0, n (r – r 0 ) = 0 Kör: (x–x 0 ) 2 + (y–y 0 ) 2 –R 2 = 0,|r – r 0 | 2 – R 2 = 0 paraméteres: x = x(t), y = y(t), r = r(t) 2D egyenes: t [-∞,∞] x(t) = x 0 + v x t,r = r 0 + v t y(t) = y 0 + v y t, Kör:t [0,1] x(t) = x 0 + R cos 2 tr = r 0 + R(cos 2 t, sin 2 t) y(t) = y 0 + R sin 2 t
5
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 3D szakasz -től -ig tartó szakasz egyenlete: p1p1 p2p2 p(t) t súly 1-t súly
6
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Szabadformájú görbék Klasszikus görbeszegmensek – egyszerű analitikus egyenlet pl szakasz, körvonal Általános eset nem írható le klasszikus görbeszegmensekkel Szakaszok sorozatával közelítés – nem differenciálható a kapcsolódási pontokban pl mechanikai alkalmazások esetén ill. animációknál megengedhetetlen – pl út-görbe esetén, a sebesség, gyorsulás nem változhat ugrásszerűen most csak a modellezésről beszélünk (!) a végső rasztertizáció más kérdés...
7
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Szabadformájú görbék Polinom: vagy vektoros formában: polinomegyütthatóknak nincs szemléletes tartalma, közvetlen származtatásuk nehézkes Definíció kontrolpontokkal: a görbe haladjon a mintapontokkal kijelölt út mentén!
8
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Szabadformájú görbék Kontrollpontos definíció fajtái: Interpoláció megköveteljük, hogy a görbe átmenjen a vezérlőpontokon Approximáció csak azt írjuk elő, a görbe „nagyjából” kövesse a kijelölt irányvonalat – cserébe más jó tulajdonságokat várunk
9
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Lagrange interpoláció Kontrolpontok: Knot vektor Keressük azt az -t, amelyre azaz:
10
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Lagrange interpoláció Megoldás: Pl n=3 ahol
11
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Lagrange interpoláció bázisfüggvényei 0 1 1 0.330.67
12
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Görbeszerkesztés Lagrange interpolációval Gond 1: egy-egy új/módosított vezérlőpont az egész görbe alakját változtatja Gond 2: nem várt görbületek
13
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Lagrange görbe implementációja Együttható számítás: double L( int i, double tt ) { double Li = 1.0; for(int j = 0; j < ptnum; j++) { if (i != j) Li *= (tt - knotVector[j]) / (knotVector[i] -knotVector[j]); } return Li; } Egyenletes knot vektor inicializálás: for (int i=0;i<=ptnum;i++) { knotVector[i]=(double)i/(double(ptnum-1)); }
14
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Lagrange görbe implementációja (Csak pszeudo kód!!!) MyPoint CalcLagrangePoint(float t) { MyPoint actPT(0,0); for(int i = 0; i <= ptnum; i++) actPT=ctrlPoint[i]*L(i,t); } return actPT; }
15
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Approximáció vs interpoláció Cél: ne legyen felesleges hullámosság Könnyítés: nem írjuk elő hogy a görbe átmenjen az összes vezérlőponton, csupán a görbe minden pontja legyen a vezérlőpontok konvex burkán belül az első és az utolsó vezérlőpontra pontosan illeszkedjen r3r3 r1r1 r2r2 r4r4
16
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Bezier approximáció Keresett görbe: ne okozzon indokolatlan hullámokat Konvex burok tulajdonság elégséges feltétele: r0r0 r1r1 r3r3 B0(t)B0(t) B1(t)B1(t) B2(t)B2(t) B3(t)B3(t) r(t)r(t) r2r2
17
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Bézier approximáció Súlyfüggvények a Bernstein polinomok Nemnegatívitás triviális Súlyfüggvények összege mindig 1 – binomiális tétel: Kezdet-vég feltétel teljesül, mivel:
18
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Bezier approximáció bázisfüggvényei Bernstein polinomok 0 1 1 n = 3
19
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME BezierCurve implementáció MyPoint ctrlpoints[MAXPTNUM]; int ptnum; … float B(int i, float t) { GLfloat Bi = 1.0; for(int j = 1; j <= i; j++) Bi *= t * (ptnum-j)/j; for( ; j < ptnum; j++) Bi *= (1-t); return Bi; } MyPoint CalcBezierPoint (float t) { //Pszeudo Point MyPoint actPT(0,0); for(int i = 0; i <= ptnum; i++) { actPT=ctrlpoints [i]*L(i,t); } return actPT; }
20
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Bezier görbe OpenGL implementációja void glMap1{fd}(Glenum target, TYPE u1, TYPE u2, GLInt stride, GLInt order, const TYPE * points) Egydimenziós leképezés, target: mit reprezentálnak a kontrollpontok: modelltérbeli pontot ( GL_MAP1_VERTEX_3 ) vagy színt ( GL_MAP1_COLOR_4 ) stb u1, u2 : paramétertartomány (nálunk [0,1]) stride : nálunk a pontok dimenziója (itt 3) order : görbe rendje (kpontok száma+1) points : kontrollpontokat tartalmazó tömb Előtte engedélyezni kell az opciót: glEnable(GL_MAP1_VERTEX_3);
21
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Bezier görbe OpenGL implementációja Kontroll pontok definiálása GLfloat ctrlpoints[MAXPTNUM][3]; ctrlpoints[i][j] az i-edik kontrolpont j-edik koordinátája 3D pontokkal dolgozik, a pont koordinátái rendre: [x,y,z], 2D-ben z=0-t használjunk
22
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Bezier görbe OpenGL implementációja void glEvalCoord1{fd}(TYPE u); az u paraméterértéknél kiértékeli a görbét, azaz meghatározza az aktuális pontot és esetünkben a glVertex*() parancsot is automatikusan végrehajtja rá (tehát azonnal meg is jeleníti)
23
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Bonyolult görbék Nagyon magas fokszámú polinom Összetett görbék: Több alacsony fokszámú + folytonos illesztés
24
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Folytonossági kategóriák C n folytonos: a két görbe szegmens n-edik deriváltig megegyezik az illeszkedési pontban: r 1 (n) (t veg )= r 2 (n) (t kezd ) G 0 = C 0 G0G0 C 0 : r 1 (t veg ) = r 2 (t kezd ) C 1 : r 1 ‘ (t veg ) = r 2 ‘ (t kezd ) G1G1 C 2 : r 1 ‘‘ (t veg ) = r 2 ‘‘ (t kezd ) C 1 G 1 pl rugó animáció: a pozíciókoordináták C n folytonossága biztosítja az erő sima változását (F=ma=mx’’)
25
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Spline Spline: C 2 folytonos összetett görbe Harmadfokú spline B-spline
26
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Harmadfokú spline p(t) = a 3 t 3 + a 2 t 2 + a 1 t 1 + a 0 Új szemléletes reprezentáció: p(0) = a 0 p(1) = a 3 + a 2 + a 1 + a 0 p’(0) = a 1 p’(1) = 3a 3 + 2a 2 + a 1 (p(0),p(1),p’(0),p’(1)), ↔ ( a 3,a 2,a 1,a 0 ) p i (0)=r i, p i (1)=r i+1 C 1 folytonosság: 2 paraméter közös C 2 folytonosság: p i ’’(1) = p i+1 ’’(0) p i (0) p i (1) p i ’(0) p i ’(1) P i+1 (0) P i+1 ’(0)
27
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Harmadfokú spline Pl: Két egymást követő szegmens p 1 (t), p 2 (t) paramétereinek számítása, Adott: r 1, r 2, r 3 vezérlőpontok Ismeretlen: p 1 (0),p 1 (1),p 1 '(0),p’ 1 (1), p 2 (0),p 2 (1),p 2 '(0),p’ 2 (1) paraméterek 6 egyenlet, 8 ismeretlen p 1 (0)=r 1, p 1 (1)=r 2 p 2 (0)=r 2 p 2 (1)=r 3 p’ 1 (1)=p’ 2 (0) p 1 ’’ (1) = p 2 ’’(0): p 1 ’’(t) =6a 13 t + 2a 12 = f (p 1 (0),p 1 (1),p 1 '(0),p’ 1 (1)), p 2 ’’(t) =6a 23 t + 2a 22 = f (p 2 (0),p 2 (1),p 2 '(0),p’ 2 (1)), p’ 1 (0) és p’ 2 (1) rögzítésével teljesen határozott lesz
28
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME B-spline Válasszunk olyan reprezentációt, amely C 2 folytonos, ha 3-t közösen birtokolnak Reprezentáció: vezérlőpontok – egy görbeszegmenst 4 egymást követő vezérlő pont definiál r i (t) = B 0 (t)r i + B 1 (t)r i+1 + B 2 (t)r i+2 + B 3 (t)r i+3 r i+1 (t) = B 0 (t)r i+1 + B 1 (t)r i+2 + B 2 (t)r i+3 + B 3 (t)r i+4
29
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME B-spline bázisfüggvények Cirkuszi elefántok + Járulékos szempont: B i (t) = 1 B 0 (t) = ( 1-t) 3 /6 B 1 (t) = (1+3 ( 1-t)+3t ( 1-t) 2 ) /6 B 2 (t) = (1+3t+3 ( 1-t)t 2 ) /6 B 3 (t) = t 3 /6 0 1 1
30
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME B-spline görbeszegmens B 0 (t) = ( 1-t) 3 /6 B 1 (t) = (1+3 ( 1-t)+3t ( 1-t) 2 ) /6 B 2 (t) = (1+3t+3 ( 1-t)t 2 ) /6 B 3 (t) = t 3 /6 0 1 1 konvex burok tulajdonság
31
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME A B-spline lokálisan vezérelhető
32
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME NUBS: Non-Uniform B-spline B-spline minden szegmens 1 hosszú paramétertartomány Akkor megy át a kontrol ponton, ha három egymás követő kontrolpont egymásra illeszkedik NUBS az i. szegmens t i -től t i+1 -ig. Egy kontrolpont többször is számíthat: A legalább 3-szoros pontokon a görbe átmegy
33
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME NUBS tulajdonságok Vezérlőpont „súlyozása” – közeli paramétertartomány kicsire választása csak durva súlyozásra alkalmas, nehéz szemléletesen állítani a megfelelő hossz- paramétert Zérus hosszúságú intervallumok – a görbe interpolálja a vezérlőpont Elsőfokú (sátor) esetén elég 1 zérus hosszú intervallum Másodfokú NUBS esetén 2, harmadfokúnál 3 egymást követő intervallumot kell zérusra állítani
34
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Idáig: Nem racionális B-spline r3r3 r1r1 r2r2 r4r4 B1(t)B1(t) B2(t)B2(t) B3(t)B3(t) B4(t)B4(t) r(t)r(t) Idáig a súlyfüggvények: B i (t) = 1 Súlypont: (B i (t) r i ) r(t) = = B i (t) r i B i (t) Polinom!
35
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME NURBS: Non-uniform Rational B-spline r1r1 r2r2 r4r4 w1B1(t)w1B1(t) w2B2(t)w2B2(t) w3B3(t)w3B3(t) w4B4(t)w4B4(t) r(t)r(t) (w i B i (t) r i ) r(t) = = r i w j B j (t) Polinom tört! racionális wiBi(t)wiBi(t) w j B j (t) Bi*(t)Bi*(t)
36
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME NURBS súly w=1 w=2 w=3 w=1
37
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Nurbs görbe OpenGL implementációja Adattagok: GLUnurbsObj *theNurb; //NURBS objektum ORDER //NURBS rendje – ellentétben Bézierrel, ez tőlünk függő szabad partaméter, nálunk legyen konst 3! GLfloat ctrlpoints[MAXPTNUM][3]; //kontrollpontok GLfloat knots[MAXPTNUM+ORDER]; //kiértékelés paraméterértékeit tartalmazó vektor
38
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Nurbs görbe létrehozása theNurb=gluNewNurbsRenderer(); gluNurbsProperty(theNurb,GLU_SAMPLIN_TOLERANCE, 25.0); gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL); ptnum= >//knot vektor hasznos része mindig ptnum+ORDER elemű //Knot inicializáció: töltsük fel a KNOT vektor első ptnum+ORDER elemét osszuk be a [0 1] intervallumot egyenletesen
39
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Nurbs görbe OpenGL implementációja theNurb=gluNewNurbsRenderer(); … gluNurbsProperty(theNurb,GLU_SAMPLI N_TOLERANCE, 25.0); gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL);
40
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Területek Határ + belső tartományok azonosítása Belső tartományok:
41
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Felületek Felület 3D pontok halmaza: koordinátáik kielégítenek egy egyenletet implicit: f(x, y, z) = 0 gömb:(x - x 0 ) 2 + (y - y 0 ) 2 + (z - z 0 ) 2 - r 2 = 0 paraméteres: x = x(u,v), y = y(u,v), z = z(u,v), u,v [0,1] gömb:x = x 0 + r cos 2 u sin v y = y 0 + r sin 2 u sin v z = z 0 + r cos v u,v [0,1] Klasszikus felületek definíció = paraméterek megadása
42
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Kvadratikus felületek x T A x = 0x T = [x, y, z, 1] A koordináták legfeljebb másodfokon gömb, ellipszoid, sík, paraboloid, hiperboloid, hengerfelület,... + + -1=0 Ellipszoid x 2 y 2 z 2 a 2 b 2 c 2 + - z 2 =0 Végtelen kúp x 2 y 2 a 2 b 2 Végtelen henger x 2 y 2 a 2 b 2 + - 1 =0
43
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Szabadformájú felületek: r(u,v) Definíció kontrolpontokkal ij B ij (u,v) =1 minden u,v-re r(u,v) = B ij (u,v) r i,j u,v Є [0,1]
44
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Szorzatfelületek Definíció kontrolpontokkal r(u,v) = r v (u) = B i (u) r i (v) r i (v) = B j (v) r i,j r(u,v) = B i (u) B j (v) r i,j
45
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Vezérlőpontok, súlyok módosítása
46
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Vezérlőpontcsoportok módosítása
47
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Szobrászkodás szabadformájú felületekkel
48
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Szobrászkodás szabadformájú felületekkel
49
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Felosztásos (subdivision) módszerek Durva poligonmodell simítása NURBS illesztés, majd finomabb poligon közelítés közvetlen finomítás (subdivision)
50
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Felosztásos (subdivision) módszerek = 1/2 + 1/4
51
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME = 1/2 + 1/16 + 1/16 Subdivision felületek (Catmull-Clark) = 1/4 = 1/4 + 1/4
52
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Subdivision felületek (Catmull-Clark)
53
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Durva poligon modell
54
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Subdivision simítás: 1 szint
55
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Subdivision simítás: 2. szint
56
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Progresszív hálók „Túl finom” poligonháló – nagy méret Közelítés kevesebb poligont tartalmazó hálóval Hoppe-féle progresszív háló: élzsugorítások sorozata a poligonhálót legkevésbé módosító élt töröljük élek prioritása – a legkisebb törlendő heurisztika pl: tartsuk meg azokat az éleket akik hosszúak, illetve a rájuk illeszkedő lapok normálisa által bezárt szög nagy (nem garantálja a topológia megtartását)
57
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Progresszív hálók Egyszerűsítés előnye: kisebb leíró adatmennyiség gyorsabb képszintézis (pl játék) több részletezettségi szintet alkalmazó geometriai modellek Progresszív tárolás: tároljuk a durva hálót és az egyszerűsítés műveletek inverzét alkalmazás: pl lassú hálózati átvitel – először a durva modell érkezik, majd ez fokozatosan finomítható
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.