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

Geometriai modellezés Szirmay-Kalos László. Számítógépes grafika elemei képszintézis Virtuális világ modell modellezés számok.

Hasonló előadás


Az előadások a következő témára: "Geometriai modellezés Szirmay-Kalos László. Számítógépes grafika elemei képszintézis Virtuális világ modell modellezés számok."— Előadás másolata:

1 Geometriai modellezés Szirmay-Kalos László

2 Számítógépes grafika elemei képszintézis Virtuális világ modell modellezés számok

3 Modellezés feladatai l Geometria megadása –2D: pont, görbe, terület, fraktálok (D  2) –3D: pont, görbe, felület, test, fraktálok (D  3) l Transzformációk (mozgatás) –Referencia helyzetből a világkoordináta rendszerben az aktuális helyzetbe (animáció, kényelmes definíció) l Színek, felületi optikai tulajdonságok

4 Pontok megadása x y r  XhXh YhYh w Descartes eltolás szemléletes! Polár elforgatás Baricentrikus Homogén vetítés Mindent számmal! 1. Koordináta rendszer 2. Koordináták megadása

5 Görbék = pontok halmaza Koordinátáik kielégítenek egy egyenletet (nem egyértelmű): –implicit: f(x, y) = 0 f(r) = 0 l 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) Kör:t  [0,1] x(t) = x 0 + R cos 2  t r = r 0 + R(cos 2  t, sin 2  t) y(t) = y 0 + R sin 2  t

6 2D egyenes n  (r – r 0 ) = 0 n x (x – x 0 ) + n y (y – y 0 ) = 0 ax + by + c = 0 (x, y, 1)  (a, b, c) = 0 y r0r0 r v irányvektor n normálvektor r = r 0 + v t, t  [-∞,∞] x = x 0 + v x t y = y 0 + v y t x implicit paraméteres

7 3D egyenes y r0r0 r v irányvektor r = r 0 + v t, t  [-∞,∞] x = x 0 + v x t y = y 0 + v y t z = z 0 + v z t z paraméteres x x = x(t), y = y(t), z=z(t) Általában 3D görbék:

8 Szabadformájú görbék l Definíció vezérlőpontokkal Polinom: x(t) =  a i t i, y(t) =  b i t i l A polinomegyütthatók származtatása: – Interpoláció – Approximáció

9 Lagrange interpoláció l Vezérlőpontok: r 1, r 2, r 3,..., r n Keressük azt az r(t) =  [a i, b i ] t i -t amelyre r(t 1 ) = r 1, r(t 2 ) = r 2, …, r(t n ) = r n, l Megoldás: – r(t) =  L i (t) r i L i (t) =  j  i ( t-t j )  j  i ( t i -t j ) L i (t k ) = 1 ha i=k 0 egyébként r(t k ) = r k r1r1 r2r2 rnrn t1t1 t2t2 tntn r(t) ?

10 Lagrange interpoláció bázisfüggvényei r(t) =  L i (t) r i L i (t) =  j  i ( t-t j )  j  i ( t i -t j )

11 Görbeszerkesztés Lagrange interpolációval

12 Bezier approximáció Keresett görbe: r(t) =  B i (t) r i –B i (t): ne okozzon indokolatlan hullámokat –Konvex burok tulajdonság –B i (t)  0,  B i (t) = 1 r2r2 r0r0 r1r1 r3r3 B0(t)B0(t) B1(t)B1(t) B2(t)B2(t) B3(t)B3(t) r(t)r(t)

13 1 n = (t+(1-t)) n =   t i ( 1-t) n-i n i ( )( ) Bi(t)Bi(t) Bernstein polinomok i=0 n B i (t)  0,  B i (t) = 1 teljesül

14 Bezier approximáció bázisfüggvényei B i (t) = t i ( 1-t) n-i ( )( ) n i r(t) =  B i (t) r i n = 3

15 BezierCurve class BezierCurve { Vector * p; int np; float B(int i, float t) { float choose = 1; for(int j = 1; j <= i; j++) choose *= (float)(np-j+1)/j; return choose * pow(t, i) * pow(1-t, np-i); } public: BezierCurve(int n) { np = n; p = new Vector[np+1];} Vector r(float t) { Vector rr(0, 0); for(int i = 0; i <= np; i++) rr += p[i] * B(i,t); return rr; } };

16 Bonyolult görbék l Nagyon magas fokszámú polinom l Összetett görbék: –Több alacsony fokszámú + folytonos illesztés –folytonossági kategóriák 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

17 Spline l Spline: C 2 folytonos összetett görbe – Harmadfokú spline – B-spline

18 Harmadfokú spline l r(t) = a 3 t 3 + a 2 t 2 + a 1 t + a 0 l Szemléletes reprezentáció: r(0) = a 0 r(1) = a 3 +a 2 +a 1 +a 0 r’(0) = a 1 r’(1) = 3a 3 +2a 2 +a 1 r i (0) r i (1) r i ’(0) r i ’(1) r i+1 (0) r i+1 ’(0) a 0 = r(0) a 1 = r’(0) a 2 =3r(1)-r’(1)-2r’(0)-3r(0) a 3 = r’(1)-2r(1)+r’(0)+2r(0) l Interpoláció: r(0) és r(1) a vezérlőpontok l C 1 folytonosság: 2 paraméter közös

19 Harmadfokú spline C 2 folytonosság l Követelmény: r i ’’(1) = r i+1 ’’(0) l Második derivált: r’’(0) = 2a 2 = 6r(1)-2r’(1)-4r’(0)-6r(0) r’’(1) = 6a 3 + 2a 2 = 6r(0)+2r’(0)-6r(1)+4r’(1) l C 2 folytonosság az ismeretlen közös első derivált kiszámításával

20 B-spline l Válasszunk olyan reprezentációt, amely C 2 folytonos, ha 3-t közösen birtokolnak l Reprezentáció: vezérlőpontok r i (t) = B 0 (t)r 0 + B 1 (t)r 1 + B 2 (t)r 2 + B 3 (t)r 3 r i+1 (t) = B 0 (t)r 1 + B 1 (t)r 2 + B 2 (t)r 3 + B 3 (t)r 4 r0r0 r1r1 r2r2 r3r3 r4r4  B i (t) = 1

21 B-spline bázisfüggvények l 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 /

22 B-spline görbeszegmens konvex burok tulajdonság 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

23 A B-spline lokálisan vezérelhető

24 NUBS: Non-Uniform B-spline l B-spline –minden szegmens 1 hosszú paramétertartomány –Akkor megy át a kontrol ponton, ha három egymást követő kontrolpont egymásra illeszkedik l NUBS –az i. szegmens t i -től t i+1 -ig. –Egy kontrolpont többször is számíthat: l A legalább 3-szoros pontokon a görbe átmegy

25 NUBS rekurzív konstrukciója t0t0 t1t1 t2t2 t3t3 t4t4 Cox-deBoor algoritmus

26 NUBS konstrukció

27 NUBS program B(i, k, t) {// 0/0 = 1. if (k == 1) { if (t[i] <= t < t[i+1]) return 1; else return 0; } else return ( B(i, k-1, t ) * ( t – t[i] ) / ( t[i+k-1] – t[i] ) + B(i+1, k-1, t) * ( t[i+k] – t ) / ( t[i+k] – t[i+1] ) ); } NUBS(k, t) { Vector r(0, 0); for(i = 0; i < n; i++) r += r[i] * B(i, k, t); return r; } r[i]: n db. Vezérlőpont t[i]: n+k db. csomópont Fokszám = k-1 Hasznos: t[k-1]…t[n]  B i (t) r i

28 Végpontokon átmenő NUBS n=5 k=4 (harmadfokú) t = [0,0,0,0,1,2,2,2,2] Tartomány: [0,2]

29 B-Spline mint NUBS n=4 k=4 (harmadfokú) t = [-3,-2,-1,0,1,2,3,4] Tartomány: [0, 1]

30 Bézier görbe mint NUBS n=4 k=4 (harmadfokú) t = [0,0,0,0,1,1,1,1] Tartomány: [0, 1]

31 NUBS rendszám

32 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!

33 r(t) = =   r i 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 )  wjBj(t) wjBj(t) Polinom tört! racionális wiBi(t)wiBi(t)  wjBj(t) wjBj(t) Bi*(t)Bi*(t) r3r3

34 NURBS súly w=1 w=2 w=3 w=1

35 Animációs harmadfokú spline t0t0 t1t1 titi t i+1 tntn r0r0 r1r1 riri r i+1 rnrn r i (t) = a i t 3 + b i t 2 + c i t 1 + d i r i (t i ) = r i, r i (t i+1 ) = r i+1 r i ’(t i ) = v i r i ’(t i+1 ) = v i+1 vivi v i+1 Ismeretlen v i -k meghatározása: C 2 folytonosság követelményéből: spline r i ’’(t i+1 )= r i+1 ’’(t i+1 ) + sebesség a kezdő és végpontban

36 Kochanek-Bartels (Catmull-Rom) „spline” t0t0 t i-1 titi t i+1 tntn r0r0 r i-1 riri r i+1 rnrn v i = 1212 r i+1 - r i t i+1 - t i r i - r i-1 t i - t i-1 + (1-  ) tenzió paraméter  = 1  = 0 Catmull-Rom  = -1(1-  )   =0.5  =0.9  =0.1 vivi

37 Görbék Inter- polációs Lokális Vez. Konvex burok Folyt.Animáció Törött vonal Lagrange Bézier Harmadrendű spline Catmull-Rom B-spline NUBS/NURBS G0/C0  Cn  Cn   C2  C1  C2   Ck

38 Területek Határ + belső tartományok azonosítása Belső tartományok:

39 Felületek l Felület 3D pontok halmaza: –koordinátáik kielégítenek egy egyenletet –implicit: f(x, y, z) = 0 l 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: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] l Klasszikus felületek –definíció = paraméterek megadása

40 Sík n  (r – r 0 ) = 0 n x (x – x 0 ) + n y (y – y 0 ) + n z (z – z 0 ) = 0 ax + by + cz + d = 0 (x, y, z, 1)  (a, b, c, d) = 0 y n normálvektor z x r0r0 r r = r 0 +ua+vb a b paraméteres implicit

41 Kvadratikus felületek l x T A x = 0x T = [x, y, z, 1] l A koordináták legfeljebb másodfokon l 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

42 Szabadformájú felületek: r(u,v) l 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

43 Szabadformájú felületek l 2D kontrolpont sereg: szorzatfelületek r(u,v) =   B i,j (u,v) r i, j =   B i (u) B j (v) r i, j Súlyfüggények: Interpoláció, Approximáció

44 Vezérlőpontok, súlyok módosítása

45 Vezérlőpontcsoportok módosítása

46 Szobrászkodás szabadformájú felületekkel

47

48 Felületmodellezés mint poligonháló módosítás

49 Felosztásos (subdivision) módszerek = 1/2 + 1/4 

50 Subdivision felületek (Catmull-Clark) = 1/4  i = 1/2  = 1/v 2  +2/v 2  +(v-3)/v i = 1/4  + 1/2 i

51 Durva poligon modell

52 Subdivision simítás: 1 szint

53 Subdivision simítás: 2. szint

54 Testek l Ellenpéldák l Érvényes testek: reguláris halmaz –nem lehetnek alacsony dimenziós elfajulásai –minden határpont környezetében van belső pont l Garantáltan érvényes testet építő módszerek –2.5 dimenziós eljárások –speciális felületi modellezés: B-rep –Konstruktív tömörtest geometria

55 2.5 dimenziós módszerek Kihúzás: extrudeForgatás: rotate

56 Felületmodellezők l Test = határfelületek gyűjteménye l Topológiai ellenőrzés (Euler tétel): csúcs + lap = él + 2

57 B-rep: Euler operátorok

58 Implementáció class BRepCore { “Winged-Edge data-structure” protected: void MEVVF(…); void MVE(float t, Edge& e); void MEF(Vertex& v1,Vertex& v2); public: void Move(Vertex& v, Vector p); }; class BRep : public BRepCore { void FaceExtrude( ); void FaceSplit( ); void EdgeCollapse( ); void VertexSplit( ); … }; él Pont=p_él +(x,y,z) lap=p_él

59 Gyakorlati Euler operátorok l Face extrude l Face split l Edge Collapse l Vertex split

60 Poligon modellezés: téglatest

61 Poligon modellezés: 1. extruding

62 Poligon modellezés: 2. extruding

63 Poligon modellezés: 4. és 5. extruding

64 Poligon modellezés: 6. extruding

65 Subdivision simítás

66 Poligon modellezés


Letölteni ppt "Geometriai modellezés Szirmay-Kalos László. Számítógépes grafika elemei képszintézis Virtuális világ modell modellezés számok."

Hasonló előadás


Google Hirdetések