1 / 66

Geometriai modellezés

Geometriai modellezés. Szirmay-Kalos László. Számítógépes grafika elemei. modellezés. számok. Virtuális világ modell. képszintézis. Modellezés feladatai. Geometria megadása 2D: pont, görbe, terület, fraktálok ( D 2) 3D: pont, görbe, felület, test, fraktálok ( D 3)

rhonda
Download Presentation

Geometriai modellezés

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

  6. 2D egyenes paraméteres • r = r0 + vt, t  [-∞,∞] • x = x0 + vxt • y = y0 + vyt nnormálvektor virányvektor y r0 implicit r n(r – r0) = 0 nx (x – x0) + ny (y – y0) = 0 ax + by + c = 0 (x, y, 1)  (a, b, c) = 0 x

  7. 3D egyenes paraméteres virányvektor z • r = r0 + vt, t  [-∞,∞] • x = x0 + vxt • y = y0 + vyt • z = z0 + vzt r0 r y x Általában 3D görbék: x = x(t), y = y(t), z=z(t)

  8. Szabadformájú görbék • Definíció vezérlőpontokkal • Polinom: x(t) = Sai ti, y(t) = Sbi ti • A polinomegyütthatók származtatása: • Interpoláció • Approximáció

  9. r2 r1 rn Lagrange interpoláció r(t) ? t2 t1 tn • Vezérlőpontok: 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) = SLi(t) ri r(tk) = rk 1 ha i=k Pj  i (t-tj) Li(t) = Li(tk) = Pj  i (ti-tj) 0egyébként

  10. Lagrange interpoláció bázisfüggvényei 1 0 1 0.33 0.67 Pj  i (t-tj) r(t) = SLi(t) ri Li(t) = Pj  i (ti-tj)

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

  12. Bezier approximáció • Keresett görbe:r(t) = S Bi(t) ri • Bi(t): ne okozzon indokolatlan hullámokat • Konvex burok tulajdonság • Bi(t)  0,  Bi(t) = 1 r2 r1 r3 r(t) r0 B2(t) B3(t) B1(t) B0(t)

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

  14. Bezier approximáció bázisfüggvényei 1 n = 3 0 1 r(t) = S Bi(t) ri () n Bi(t) = ti(1-t)n-i i

  15. BezierCurve • class BezierCurve { • Vector * p; • int np; • float B(int i, float t) { • floatchoose = 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 • 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) C1 G1 G0 = C0

  17. Spline • Spline: C2 folytonos összetett görbe • Harmadfokú spline • B-spline

  18. ri’(1) Harmadfokú spline ri (1) ri+1’(0) ri’(0) ri+1 (0) ri (0) • r(t) = a3t3 + a2t2 + a1t + a0 • Szemléletes reprezentáció: r(0) = a0 r(1) = a3+a2+a1+a0 r’(0) = a1r’(1) = 3a3+2a2+a1 a0 = r(0) a1 = r’(0) a2 =3r(1)-r’(1)-2r’(0)-3r(0) a3 =r’(1)-2r(1)+r’(0)+2r(0) • Interpoláció: r(0) és r(1) a vezérlőpontok • C1 folytonosság: 2 paraméter közös

  19. Harmadfokú spline C2 folytonosság • Követelmény:ri’’(1) = ri+1’’(0) • Második derivált: r’’(0) = 2a2= 6r(1)-2r’(1)-4r’(0)-6r(0) r’’(1) = 6a3+ 2a2= 6r(0)+2r’(0)-6r(1)+4r’(1) • C2 folytonosság az ismeretlen közös első derivált kiszámításával

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

  21. 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 0 1

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

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

  24. NUBS: Non-Uniform B-spline • 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 • 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

  25. NUBS rekurzív konstrukciója t0 t1 t2 t3 t4 Cox-deBoor algoritmus

  26. NUBS konstrukció

  27. NUBS program 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, 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; } S Bi(t) ri

  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 r3 r2 r4 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)

  33. NURBS: Non-uniform Rational B-spline r3 r2 r4 r(t) r1 w3B3(t) w4B4(t) w2B2(t) w1B1(t) Polinom tört! racionális S (wiBi(t) ri) wiBi(t) r(t) = = Sri SwjBj(t) SwjBj(t) Bi*(t)

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

  35. vi+1 ri(t) = ait3 + bit2 + cit 1 + di ri(ti) = ri, ri(ti+1) = ri+1 ri’(ti) = vi ri’(ti+1) = vi+1 vi • Ismeretlen vi -k meghatározása: • C2 folytonosság követelményéből: spline • ri’’(ti+1)= ri+1’’(ti+1) + sebesség a kezdő és végpontban Animációs harmadfokú spline ri+1 r1 rn r0 ri t0 t1 ti ti+1 tn

  36.  = 1  = -1  = 0 Catmull-Rom vi tenzió paraméter (1-) =0.9 =0.5 =0.1  (1-) Kochanek-Bartels (Catmull-Rom) „spline” ri+1 ri-1 rn r0 ri t0 ti-1 ti ti+1 tn ri+1 -ri ri -ri-1 1 2 vi = + ti+1 -ti ti -ti-1

  37. Görbék     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 • 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 - 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 vy = y0 + Rsin 2u sin vz = z0 + R cos vu,v[0,1] • Klasszikus felületek • definíció = paraméterek megadása

  40. Sík nnormálvektor paraméteres a z r0 r = r0+ua+vb r b y implicit x n(r – r0) = 0 nx (x – x0) + ny (y – y0) + nz(z – z0) = 0 ax + by + cz + d = 0 (x, y, z, 1)  (a, b, c, d) = 0

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

  42. Szabadformájú felületek: r(u,v) • Definíció kontrolpontokkal r(u,v) = rv(u) = SBi (u)ri(v) ri(v)=SBj(v)ri,j r(u,v) = SSBi (u) Bj(v)ri,j

  43. Szabadformájú felületek • 2D kontrolpont sereg: szorzatfelületek r(u,v) = SSBi,j (u,v)ri, j =SSBi(u) Bj(v)ri, 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. Szobrászkodás szabadformájú felületekkel

  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 = 1/2 i = 1/v2+2/v2 +(v-3)/v i = 1/4+ 1/2 i

More Related