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

Hasonló előadás


Az előadások a következő témára: "Geometriai modellezés"— Előadás másolata:

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

2 Számítógépes grafika elemei
modellezés virtuális világ képszintézis

3 Modellezés feladatai Geometria megadása Transzformációk
pont, görbe, terület, felület, test, fraktálok Transzformációk lokális modellezési és világkoordináta rendszer Színek, felületi optikai tulajdonságok

4 Pontok megadása Mindent számmal! Koordináta rendszerek
Koordináták megadása Koordináta rendszerek Descartes Polár Homogén

5 Koordináta rendszerek
Yh y r 1 f w Xh x 1 1 Descartes eltolás Polár elforgatás Baricentrikus Homogén vetítés

6 Görbék = pontok halmaza
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 – r0) = 0 Kör: (x–x0)2 + (y–y0)2 –R2 = 0, |r – r0 |2 – R2 = 0 paraméteres: x = x(t), y = y(t), r = r(t) 2D egyenes: t  [-∞,∞] x(t) = x0 + vx t, r = r0 + v t y(t) = y0 + vy t, Kör: t  [0,1] x(t) = x0 + R cos 2t r = r0 + R(cos 2t, sin 2t) y(t) = y0 + R sin 2t

7 Szabadformájú görbék Definíció kontrolpontokkal
Polinom: x(t) = S ai ti, y(t) = S bi ti A polinomegyütthatók származtatása: Interpoláció Approximáció

8 Lagrange interpoláció
Kontrolpontok: r1, r2, r3,..., rn Keressük azt az r(t) = S [ai, bi ] ti-t amelyre r(t1) = r1, r(t2) = r2, … , r(tn) = rn, Megoldás: r(t) = S Li(t) ri P j  i (t-tj) Li(t) = P j  i (ti-tj)

9 Lagrange interpoláció bázisfüggvényei
1 1 0.33 0.67 P j  i (t-tj) r(t) = S Li(t) ri Li(t) = P j  i (ti-tj)

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

11 Bezier approximáció Keresett görbe: r(t) = S Bi(t) ri
Bi(t): ne okozzon nem indokolt hullámokat Konvex burok tulajdonság Bi(t)  0,  Bi(t) = 1 r3 r2 r4 r(t) r1 B3(t) B4(t) B2(t) B1(t)

12 Bezier approximáció bázisfüggvényei
1 n = 3 1 r(t) = S Bi(t) ri ( ) n Bi(t) = t i (1-t)n-i i Bernstein polinomok

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

14 Bonyolult görbék Nagyon magas fokszámú polinom Összetett görbék:
Több alacsony fokszámú + folytonos illesztés folytonossági kategóriák G0 G1 C0: r1(tveg) = r2(tkezd) C1: r1‘ (tveg) = r2‘ (tkezd) C2: r1‘‘ (tveg) = r2‘‘ (tkezd) G0 = C0 C1  G1

15 Spline Spline: C2 folytonos összetett görbe Harmadfokú spline B-spline

16 Harmadfokú spline p(t) = a3 t3 + a2 t2 + a1t 1 + a0
Új szemléletes reprezentáció: p(0) = a p(1) = a3 + a2 + a1 + a0 p’(0) = a p’(1) = 3a3 + 2a2 + a1 C1 folytonosság: 2 paraméter közös C2 folytonosság: pi’’(1) = pi+1’’(0) pi’(1) pi (1) Pi+1’(0) pi’(0) Pi+1 (0) pi (0)

17 B-spline Válasszunk olyan reprezentációt, amely C2 folytonos, ha 3-t közösen birtokolnak Reprezentáció: vezérlőpontok r i(t) = B0(t)r0 + B1(t)r1 + B2(t)r2 + B3(t)r r i+1(t) = B0(t)r1 + B1(t)r2 + B2(t)r3 + B3(t)r4

18 B-spline bázisfüggvények
Cirkuszi elefántok + Járulékos szempont:  Bi(t) = 1 B1(t) = (1+3(1-t)+3t(1-t)2) /6 B0(t) = (1-t)3 /6 B2(t) = (1+3t+3(1-t)t2) /6 B3(t) = t3 /6 1 1

19 B-spline görbeszegmens
1 konvex burok tulajdonság 1 B0(t) = (1-t)3 /6 B1(t) = (1+3(1-t)+3t(1-t)2) /6 B3(t) = t3 /6 B2(t) = (1+3t+3(1-t)t2) /6

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

21 NUBS: Non-Uniform 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 ti -től ti+1 -ig. Egy kontrolpont többször is számíthat: A legalább 3-szoros pontokon a görbe átmegy

22 NUBS rekurzív konstrukciója
Cox-deBoor algoritmus

23 NUBS konstrukció

24 NUBS program S Bi(t) ri r[i]: n db. Vezérlőpont
t[i]: n+k db. csomópont Fokszám = k-1 Hasznos: t[k]-t[n+1] B(i, k, t) { // 0/0 = 1. if (k == 1) { if (t[i] <= t < t[i+1]) return 1; else return 0; } else return ( ( t - t[i] ) * B(i, k-1, t ) / ( t[i+k-1] - t[i] ) + (t[i+k] - t) * B(i+1, k-1, 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; S Bi(t) ri

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

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

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

28 NUBS rendszám

29 Idáig: Nem racionális B-spline
r(t) r1 B3(t) B4(t) B2(t) B1(t) Idáig a súlyfüggvények: S Bi(t) = 1 Súlypont: Polinom! S (Bi(t) ri ) r(t) = = S Bi(t) ri S Bi(t)

30 NURBS: Non-uniform Rational B-spline
r(t) r1 w3B3(t) w4B4(t) w2B2(t) w1B1(t) Polinom tört! racionális S (wiBi(t) ri) wiBi(t) r(t) = = S ri S wjBj(t) S wjBj(t) Bi*(t)

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

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

33 Felületek Felület 3D pontok halmaza: Klasszikus felületek
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 - r2 = 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] Klasszikus felületek definíció = paraméterek megadása

34 Kvadratikus felületek
xT A x = 0 xT = [x, y, z, 1] A koordináták legfeljebb másodfokon gömb, ellipszoid, sík, paraboloid, hiperboloid, hengerfelület,... Ellipszoid x y z2 Végtelen kúp x y2 Végtelen henger x y2  +  +  -1=0  +  - z2 =0  +  - 1 =0 a b c2 a b2 a b2

35 Szabadformájú felületek: r(u,v)
Definíció kontrolpontokkal r(u,v) = rv(u) = S Bi (u) ri (v) ri (v) = S Bj(v) ri,j r(u,v) = S S Bi (u) Bj(v) ri,j

36 Szabadformájú felületek
2D kontrolpont sereg: szorzatfelületek r(u,v) = S S Bi,j (u,v) ri, j = S S Bi(u) Bj(v) ri, j Súlyfüggények: Interpoláció, Approximáció

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

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

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

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

41 Felületmodellezés mint Poligonháló módosítás

42 Felosztásos (subdivision) módszerek
= 1/ /4 

43 Subdivision felületek (Catmull-Clark)
= 1/4  = 1/4  + 1/4  = 1/ /16  + 1/16 

44 Durva poligon modell

45 Subdivision simítás: 1 szint

46 Subdivision simítás: 2. szint

47 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 2.5 dimenziós eljárások speciális felületi modellezés: B-rep Konstruktív tömörtest geometria

48 2.5 dimenziós módszerek Kihúzás: extrude Forgatás: rotate

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

50 B-rep: Euler operátorok

51 Implementáció él Pont +(x,y) lap class BRepCore { … public:
void MEVVF(…); void MVE(float t, Edge& e); void MEF(Vertex& v1,Vertex& v2); void Move(Vertex& v, Vector p); }; class BRep : BRepCore { void FaceExtrude( ); void FaceSplit( ); void EdgeCollapse( ); void VertexSplit( ); Pont +(x,y) lap

52 Gyakorlati Euler operátorok
Face extrude Face split Edge Collapse Vertex split

53 Poligon modellezés: téglatest

54 Poligon modellezés: 1. extruding

55 Poligon modellezés: 2. extruding

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

57 Poligon modellezés: 6. extruding

58 Subdivision simítás

59 Poligon modellezés


Letölteni ppt "Geometriai modellezés"

Hasonló előadás


Google Hirdetések