Geometriai modellezés

Slides:



Advertisements
Hasonló előadás
Számítógépes geometriai leíró nyelvek
Advertisements

Az egyenest meghatározó adatok a koordináta-rendszerben
Koordináta transzformációk
Koordináta transzformációk
2D képszintézis Szirmay-Kalos László.
Geometriai Transzformációk
Analitikus (koordináta) geometriai gyorstalpaló
Geometriai transzformációk
Inkrementális 3D képszintézis
Sugárkövetés: ray-casting, ray-tracing
Animáció Szirmay-Kalos László. Animáció = időfüggés T1(t)T1(t) T2(t)T2(t) TV(t)TV(t) Transzformációk alak szín megjelenítési attribútumok, stb.
Inkrementális 3D képszintézis Szirmay-Kalos László.
2D képszintézis Szirmay-Kalos László. Számítógépes grafika feladata képszintézis Virtuális világ modell modellezés Metafórák: 2D rajzolás világ = sík.
Geometriai modellezés
Számítógépes grafika Szirmay-Kalos László
Számítógépes grafika Szirmay-Kalos László
3D képszintézis fizikai alapmodellje
Virtuális világ tárolása Szirmay-Kalos László. Belső világ tárolása l Geometria: pontok koordinátái l Topológia: élek-pontok; lapok-pontok;... l hierarchia:
Bevezetés.  A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja  Teljesítménykövetelmények:  Animáció: néhány nsec.
Regresszió számítás Mérnöki létesítmények ellenőrzése, terveknek megfelelése Geodéziai mérések – pontok helyzete, pontszerű információ Lineáris regresszió.
Klasszikus mechanikai kéttestprobléma és merev test szabad mozgása állandó pozitív görbületű sokaságon Kómár Péter témavezető: Dr. Vattay Gábor
Számítógépes grafika, PPKE-ITK, Benedek Csaba, D képszintézis 4. előadás.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
A számítógépes grafika céljai és feladatai
Modellezés és tervezés c. tantárgy Óbudai Egyetem Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek Intézet Mérnöki Informatikus MSc 4. Előadás.
A virtuális technológia alapjai Dr. Horváth László Budapesti Műszaki Főiskola Neumann János Informatikai Kar, Alkalmazott.
Mérnöki objektumok leírása és elemzése virtuális terekben c. tantárgy Budapesti Műszaki Főiskola Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek.
Modellezés és szimuláció c. tantárgy Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Matematikai Intézet Mechatronikai Mérnöki MSc 2. Kontextuális.
Modellezés és tervezés c. tantárgy Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Matematikai Intézet Mérnöki Informatikus MSc 4. Előadás A.
Modellezés és szimuláció c. tantárgy Óbudai Egyetem Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek Intézet Mechatronikai Mérnöki MSc 10.
Mérés koordináta mérőgépen KMG programozásának alapjai
A GEOMETRIA MODELLEZÉSE
2. Koordináta-rendszerek és transzformációk 2.1. Koordináta-rendszerek 2.2. Az egyenes és a sík egyenlete 2.3. Affin transzformációk 2.4. Projektív transzformációk.
PTE PMMK Matematika Tanszék dr. Klincsik Mihály Matematika III. előadások MINB083, MILB083 Gépész és Villamosmérnök szak BSc képzés 2007/2008. őszi félév.
Számítógépes geometria
2D képszintézis és textúrák
Koordináta-geometria
Bevezetés a Számítógépi grafikába - előadás
2. Koordináta-rendszerek és transzformációk
2. Koordináta-rendszerek és transzformációk
Bevezetés az alakmodellezésbe I. Budapesti Műszaki Főiskola Neumann János Informatikai Főiskolai Kar A Műszaki Tervezés Rendszerei 2000/2001 tanév, I.
Bevezetés az alakmodellezésbe II. Budapesti Műszaki Főiskola Neumann János Informatikai Főiskolai Kar A Műszaki Tervezés Rendszerei 2000/2001 tanév, I.
A tranzisztor kimeneti karakterisztikái
Rezgések elmélete: kétatomos molekula klasszikus leírása
Pixel műveletek, képek Szirmay-Kalos László.
Grafikus alaphardver Szirmay-Kalos László. Jelfeldolgozási megközelítés modellezés modell képszintézis Digitális kép megjelenítés Analog Digitál Képinformáció.
Játékfejlesztés.
Sugárkövetés: ray-casting, ray-tracing
2D képszintézis Szirmay-Kalos László.
Analitikus geometria gyorstalpaló
Inkrementális 3D képszintézis Szirmay-Kalos László.
Számítógépes grafika Bevezetés
3D képszintézis fizikai alapmodellje Szirmay-Kalos László Science is either physics or stamp collecting. Rutherford.
Animáció Szirmay-Kalos László.
Transzformációk Szirmay-Kalos László. Transzformációk (x,y) (x’,y’) = T(x,y) l Tönkre tehetik az egyenletet l Korlátozzuk a transformációkat és az alakzatokat.
Inkrementális 3D képszintézis
3. Vetületi ábrázolások számítási eljárásai
Geometriai transzformációk
2.2. Az egyenes és a sík egyenlete
2. Koordináta-rendszerek és transzformációk
Bevezetés a számítógépi grafikába 2. Paraméteres görbék Paraméteres görbe: 2D-ben: paraméter: általában: kikötések: legyen folytonos legyen folytonosan.
Fotorealisztikus képszintézis valós időben Szirmay-Kalos László, Csébfalvi Balázs BME IIT.
Geometriai transzformációk
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
Hermite-interpoláció
A számítógépes grafika alapjai, PPKE-ITK, Benedek Csaba, 2010 Tanagyag forrás © Szirmay-Kalos László, BME A számítógépes grafika céljai és feladatai 1.
Algoritmusok és adatszerkezetek elemzése II.
Bevezetés a számítógépi grafikába 1.Bevezetés: A Számítógépi grafika tárgya 2.Képek kódolása 3.A geometrikus grafika alapjai 4.Koordináta-rendszerek és.
Görbék, felületek.
Bevezetés Tematika Számonkérés Irodalom
Előadás másolata:

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 Transzformációk (mozgatás) 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

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

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

2D egyenes r = r0 + v t, t  [-∞,∞] x = x0 + vx t y = y0 + vy t paraméteres r = r0 + v t, t  [-∞,∞] x = x0 + vx t y = y0 + vy t n normálvektor v irá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

3D egyenes r = r0 + v t, t  [-∞,∞] x = x0 + vx t y = y0 + vy t v irányvektor paraméteres z r = r0 + v t, t  [-∞,∞] x = x0 + vx t y = y0 + vy t z = z0 + vz t r0 r y x Általában 3D görbék: x = x(t), y = y(t), z=z(t)

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

Lagrange interpoláció rn Lagrange interpoláció r(t) ? t1 t2 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) = S Li(t) ri r(tk) = rk P j  i (t-tj) 1 ha i=k Li(t) = Li(tk) = P j  i (ti-tj) 0 egyébként

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)

Görbeszerkesztés Lagrange interpolációval

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)

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

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

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; };

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

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

Harmadfokú spline ri’(1) 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) = a1 r’(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

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

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

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

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

A B-spline lokálisan vezérelhető

NUBS: Non-Uniform 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

NUBS rekurzív konstrukciója Cox-deBoor algoritmus

NUBS konstrukció

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

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

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

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

NUBS rendszám

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)

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)

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

Animációs harmadfokú spline ri(t) = ai t3 + bi t2 + cit 1 + di ri(ti) = ri, ri(ti+1) = ri+1 ri’(ti) = vi ri’(ti+1) = vi+1 vi vi+1 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 ri+1 r1 rn r0 ri t0 t1 ti ti+1 tn

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

Görbék    G0/C0     Cn    Cn     C2   C1       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   

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

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

Sík r = r0+ua+vb n(r – r0) = 0 n normálvektor a paraméteres 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

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 x2 y2 z2 Végtelen kúp x2 y2 Végtelen henger x2 y2  +  +  -1=0  +  - z2 =0  +  - 1 =0 a2 b2 c2 a2 b2 a2 b2

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

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ó

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

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

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

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

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

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

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

Durva poligon modell

Subdivision simítás: 1 szint

Subdivision simítás: 2. szint

Testek Ellenpéldák Érvényes testek: reguláris halmaz nem lehetnek alacsony dimenziós elfajulásai minden határpont környezetében 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

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

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

B-rep: Euler operátorok

Implementáció él Pont=p_él +(x,y,z) lap=p_él 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

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

Poligon modellezés: téglatest

Poligon modellezés: 1. extruding

Poligon modellezés: 2. extruding

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

Poligon modellezés: 6. extruding

Subdivision simítás

Poligon modellezés