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

Geometriai modellezés

  • Upload
    rhonda

  • View
    34

  • Download
    0

Embed Size (px)

DESCRIPTION

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) - PowerPoint PPT Presentation

Citation preview

Page 1: Geometriai modellezés

Geometriai modellezésGeometriai modellezés

Szirmay-Kalos László

Page 2: Geometriai modellezés

Számítógépes grafika elemeiSzámítógépes grafika elemei

képszintézis

Virtuális világmodell

modellezésszámok

Page 3: Geometriai modellezés

Modellezés feladataiModellezés feladatai

Geometria megadása– 2D: pont, görbe, terület, fraktálok (D2)– 3D: pont, görbe, felület, test, fraktálok (D3)

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

Page 4: Geometriai modellezés

Pontok megadásaPontok megadása

x

yr

Xh

Yh

w

Descartes

eltolásszemléletes!

Polár

elforgatás

BaricentrikusHomogén

vetítés

1

1

1

Mindent számmal!1. Koordináta rendszer2. Koordináták megadása

Page 5: Geometriai modellezés

GörbékGörbék = pontok halmaza = pontok halmazaKoordiná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 2t r = r0 + R(cos 2t, sin 2t) y(t) = y0 + R sin 2t

Page 6: Geometriai modellezés

2D egyenes2D egyenes

n(r – r0) = 0

nx (x – x0) + ny (y – y0) = 0

ax + by + c = 0

(x, y, 1) (a, b, c) = 0

yr0 r

v irányvektor

n normálvektor

r = r0 + v t, t [-∞,∞]

x = x0 + vx ty = y0 + vy t

x

implicit

paraméteres

Page 7: Geometriai modellezés

3D egyenes3D egyenes

y

r0 r

v irányvektor

r = r0 + v t, t [-∞,∞]

x = x0 + vx ty = y0 + vy tz = z0 + vz t

z

paraméteres

x

x = x(t), y = y(t), z=z(t)

Általában 3D görbék:

Page 8: Geometriai modellezés

Szabadformájú görbékSzabadformájú görbék Definíció vezérlőpontokkal

Polinom: x(t) = ai ti, y(t) = bi ti

A polinomegyütthatók származtatása:– Interpoláció– Approximáció

Page 9: Geometriai modellezés

Lagrange Lagrange interpolációinterpoláció

Vezérlőpontok: r1, r2, r3,..., rn

Keressük azt az r(t) = [ai, bi ] ti-t amelyrer(t1) = r1, r(t2) = r2, … , r(tn) = rn,

Megoldás:

– r(t) = Li(t) ri

Li(t) = j i (t-tj)

j i (ti-tj)Li(tk) =

1 ha i=k

0 egyébként

r(tk) = rk

r1

r2

rn

t1 t2 tn

r(t) ?

Page 10: Geometriai modellezés

Lagrange interpoláció bázisfüggvényeiLagrange interpoláció bázisfüggvényei

r(t) = Li(t) riLi(t) = j i (t-tj)

j i (ti-tj)

0

1

1

0.33 0.67

Page 11: Geometriai modellezés

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

Page 12: Geometriai modellezés

Bezier approximációBezier approximáció

Keresett görbe: r(t) = Bi(t) ri

– Bi(t): ne okozzon indokolatlan hullámokat

– Konvex burok tulajdonság

– Bi(t) 0, Bi(t) = 1

r2

r0

r1r3

B0(t) B1(t)B2(t)

B3(t)

r(t)

Page 13: Geometriai modellezés

1n = (t+(1-t))n = t i (1-t)n-ini( )

Bi(t)

Bernstein polinomokBernstein polinomok

i=0

n

Bi(t) 0, Bi(t) = 1 teljesül

Page 14: Geometriai modellezés

Bezier approximáció bázisfüggvényeiBezier approximáció bázisfüggvényei

Bi(t) = t i (1-t)n-i( )n

ir(t) = Bi(t) ri

0

1

1

n = 3

Page 15: Geometriai modellezés

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

Page 16: Geometriai modellezés

Bonyolult görbékBonyolult 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 = C0

G0

C0:r1(tveg) = r2(tkezd)

C1:r1‘ (tveg) = r2‘ (tkezd)

G1

C2:r1‘‘ (tveg) = r2‘‘ (tkezd)

C1 G1

Page 17: Geometriai modellezés

SplineSpline

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

Page 18: Geometriai modellezés

Harmadfokú Harmadfokú splinespline

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

ri (0)

ri (1)

ri’(0)

ri’(1)

ri+1 (0)

ri+1’(0)

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

Page 19: Geometriai modellezés

Harmadfokú spline CHarmadfokú spline C22 folytonosság 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

Page 20: Geometriai modellezés

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

r0

r1

r2

r3

r4

Bi(t) = 1

Page 21: Geometriai modellezés

B-spline bázisfüggvényekB-spline bázisfüggvények Cirkuszi elefántok + Járulékos szempont: Bi(t) = 1

B0(t) = (1-t)3 /6 B1(t) = (1+3(1-t)+3t(1-t)2) /6B2(t) = (1+3t+3(1-t)t2) /6B3(t) = t3 /6

0

1

1

Page 22: Geometriai modellezés

B-spline görbeszegmensB-spline görbeszegmens

0

1

1

konvex buroktulajdonság

B0(t) = (1-t)3 /6 B1(t) = (1+3(1-t)+3t(1-t)2) /6B2(t) = (1+3t+3(1-t)t2) /6B3(t) = t3 /6

Page 23: Geometriai modellezés

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

Page 24: Geometriai modellezés

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

Page 25: Geometriai modellezés

NUBS rekurzív konstrukciójaNUBS rekurzív konstrukciója

t0 t1 t2 t3 t4

Cox-deBooralgoritmus

Page 26: Geometriai modellezés

NUBS konstrukciNUBS konstrukcióó

Page 27: Geometriai modellezés

NUBS programNUBS 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őpontt[i]: n+k db. csomópontFokszám = k-1Hasznos: t[k-1]…t[n]

Bi(t) ri

Page 28: Geometriai modellezés

VVégpontokon átmenő égpontokon átmenő NUBSNUBS

n=5k=4 (harmadfokú)t = [0,0,0,0,1,2,2,2,2]Tartomány: [0,2]

Page 29: Geometriai modellezés

B-Spline mint NUBSB-Spline mint NUBS

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

Page 30: Geometriai modellezés

BBéézierzier görbe mint NUBS görbe mint NUBS

n=4k=4 (harmadfokú)t = [0,0,0,0,1,1,1,1]Tartomány: [0, 1]

Page 31: Geometriai modellezés

NUBS rendszámNUBS rendszám

Page 32: Geometriai modellezés

Idáig: Nem racionális B-splineIdáig: Nem racionális B-spliner3

r1

r2r4

B1(t) B2(t)B3(t)

B4(t)

r(t)

Idáig a súlyfüggvények: Bi(t) = 1

Súlypont: (Bi(t) ri )r(t) = = Bi(t) ri Bi(t)

Polinom!

Page 33: Geometriai modellezés

r(t) = =

ri

NURBS: NURBS: Non-uniform Rational B-splineNon-uniform Rational B-spline

r1

r2r4

w1B1(t)w2B2(t)

w3B3(t) w4B4(t)

r(t)

(wiBi(t) ri)

wjBj(t)

Polinom tört!racionális

wiBi(t)

wjBj(t)

Bi*(t)

r3

Page 34: Geometriai modellezés

NURBS súlyNURBS súly

w=1

w=2

w=3

w=1

w=1

w=1w=1

Page 35: Geometriai modellezés

Animációs harmadfokú splineAnimációs harmadfokú spline

t0 t1 ti ti+1 tn

r0

r1

ri

ri+1

rn

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

Page 36: Geometriai modellezés

Kochanek-Bartels (Catmull-Rom) Kochanek-Bartels (Catmull-Rom) „spline”„spline”

t0 ti-1 ti ti+1 tn

r0

ri-1

ri

ri+1

rn

vi =12

ri+1 - ri

ti+1 - ti

ri - ri-1

ti - ti-1

+ (1-)

tenzióparaméter

= 1 = 0Catmull-Rom = -1

(1-) =0.5=0.9=0.1

vi

Page 37: Geometriai modellezés

GörbékGörbékInter-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

Page 38: Geometriai modellezés

TerületekTerületek

. b e ls ő p o n t

1 ) 2 ) 3 )

Határ + belső tartományok azonosítása

Belső tartományok:

Page 39: Geometriai modellezés

FelületekFelü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 2u sin v

y = y0 + R sin 2u sin v z = z0 + R cos v u,v

[0,1]

Klasszikus felületek– definíció = paraméterek megadása

Page 40: Geometriai modellezés

SSíkík

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

y

n normálvektor

z

x

r0

rr = r0+ua+vb

a

b

paraméteres

implicit

Page 41: Geometriai modellezés

Kvadratikus felületekKvadratikus 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,...

+ + -1=0

Ellipszoid x2 y2 z2

a2 b2 c2 + - z2 =0

Végtelen kúp x2 y2

a2 b2

Végtelen henger x2 y2

a2 b2 + - 1 =0

Page 42: Geometriai modellezés

Szabadformájú felületek: Szabadformájú felületek: rr((u,vu,v)) Definíció kontrolpontokkal

r(u,v) = rv(u) = Bi (u) ri (v)

ri (v) = Bj(v) ri,j

r(u,v) = Bi (u) Bj(v) ri,j

Page 43: Geometriai modellezés

Szabadformájú felületekSzabadformájú felületek 2D kontrolpont sereg: szorzatfelületek

r(u,v) = Bi,j (u,v) ri, j

= Bi(u) Bj(v) ri, j

Súlyfüggények: Interpoláció, Approximáció

Page 44: Geometriai modellezés

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

Page 45: Geometriai modellezés

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

Page 46: Geometriai modellezés

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

Page 47: Geometriai modellezés

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

Page 48: Geometriai modellezés

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

Page 49: Geometriai modellezés

Felosztásos (subdivision) Felosztásos (subdivision) módszerekmódszerek

= 1/2 + 1/4

Page 50: Geometriai modellezés

Subdivision felületekSubdivision felületek (Catmull-Clark)(Catmull-Clark)

= 1/4i = 1/2

= 1/v2 +2/v2 +(v-3)/vi

= 1/4 + 1/2 i

Page 51: Geometriai modellezés

Durva poligon modellDurva poligon modell

Page 52: Geometriai modellezés

Subdivision simítás: 1 szintSubdivision simítás: 1 szint

Page 53: Geometriai modellezés

Subdivision simítás: 2. szintSubdivision simítás: 2. szint

Page 54: Geometriai modellezés

TestekTestek

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

Page 55: Geometriai modellezés

2.5 dimenziós módszerek2.5 dimenziós módszerek

Kihúzás: extrude Forgatás: rotate

Page 56: Geometriai modellezés

FelületmodellezőkFelületmodellezők

Test = határfelületek gyűjteménye

Topológiai ellenőrzés (Euler tétel):

csúcs + lap = él + 2

Page 57: Geometriai modellezés

B-rep: Euler operátorokB-rep: Euler operátorok

M E V V F

C s in á lj c s ú c so té s é lt

C s in á lj é lté s la p o t

C s in á lj é lt ,k é t c s ú c so t

é s la p o t

E E E1.V

M V E M E F

FF

FE 1

F V

V

E

1

2

s e m m i

Page 58: Geometriai modellezés

ImplementImplementációá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

Page 59: Geometriai modellezés

Gyakorlati Euler operátorokGyakorlati Euler operátorok Face extrude

Face split

Edge Collapse Vertex split

Page 60: Geometriai modellezés

Poligon modellezés: téglatestPoligon modellezés: téglatest

Page 61: Geometriai modellezés

Poligon modellezés: Poligon modellezés: 1. extruding 1. extruding

Page 62: Geometriai modellezés

Poligon modellezés: Poligon modellezés: 2. extruding2. extruding

Page 63: Geometriai modellezés

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

Page 64: Geometriai modellezés

Poligon modellezés: Poligon modellezés: 6. extruding6. extruding

Page 65: Geometriai modellezés

Subdivision simításSubdivision simítás

Page 66: Geometriai modellezés

Poligon modellePoligon modellezészés