Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.

Hasonló előadás


Az előadások a következő témára: "Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás."— Előadás másolata:

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ó


Letölteni ppt "Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás."

Hasonló előadás


Google Hirdetések