3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás 7. Interpoláló felületek
http://cg.iit.bme.hu/portal/node/312 https://www.vik.bme.hu/kepzes/targyak/VIIIAV54 Dr. Várady Tamás, Dr. Salvi Péter BME, Villamosmérnöki és Informatikai Kar Irányítástechnika és Informatika Tanszék 1
Tartalom
Bevezetés: nem tenzor alapú felületek Coons felületek
n-oldalú felületek
lineáris harmadfokú alapkoncepció n-oldalú poligonális tartományok oldal- és sarokinterpolánsok súlyfüggvények parametrizálás
Görbeháló alapú tervezés - Demó
3D-s számítógépes geometria
2
Bevezetés1 Szabadformájú felületreprezentációk 1. Tenzor szorzat alapú felületek
Bézier- és B-spline felületek négyoldalú paramétertartomány n x m-es kontroll háló
s(u, v ) = [α(u )][C][β( v )]T
2. Bézier és B-spline kiterjesztése n-oldalra (n ≠ 4) 3. Transzfinit interpoláció
határgörbék és keresztderivált függvények négyoldalú → Coons patch általános n-oldalú felületek
4. Poliéder-alapú általános topológiájú felületek
felosztásos felületek (rekurzív szubdivizió) összeillesztett spline felületek
Bevezetés
3
Bevezetés2 A szabadformájú tárgyak felületei nem kizárólag 4-oldalú darabokból tevődnek össze! Megoldások: 4-oldalú felületek körbevágása n-oldalú tartományok 4-oldalúakra való bontása általános topológiájú poliéder alapú felületek n-oldalú felületek
Bevezetés
4
Bevezetés3 Görbeháló alapú tervezés általános topológiájú görbeháló keresztirányú deriváltak kiszámítása n-oldalú felületek interpolációja
Bevezetés
5
Lineáris Coons felületek1 • adott négy tetszőleges parametrikus határgörbe: S1
c1 (u ), c 2 (u ), d1 ( v ), d 2 ( v )
• keressük S(u,v)-t, amely interpolál:
S2
+
S(u,0) = c1 (u ), S(u,1) = c 2 (u ), S(0, v ) = d1 ( v ), S(1, v ) = d 2 (v ) • két lineáris tag:
S1 (u, v ) = (1 − v ) S(u,0) + v S(u,1),
-
S12
S
=
S 2 (u, v ) = (1 − u ) S(0, v ) + u S(1, v ) • korrekciós tag: S(0,0) S(0,1) 1 − v S12 (u, v ) = [1 − u u ] S(1,0) S(1,1) v • felületegyenlet (Boolean sum):
S(u, v ) = S1 (u, v ) + S 2 (u, v ) − S12 (u, v ) Coons felületek
6
Hermite-interpoláció (emlékeztető)
Hermite-interpoláció:
r (u ) = PA F0 (u ) + TAG0 (u ) + PB F1 (u ) + TB G1 (u )
Hermite interpoláció
7
G1 Coons felületek2 • adott négy határgörbe és hozzátartozó keresztderivált: S(u,0), S(u,1), S(0, v ), S(1, v ); S v (u,0), S v (u,1), S u (0, v ), S u (1, v )
• két harmadfokú simítás (Hermite függvények): S1 (u, v ) = F0 ( v ) S(u,0) + G0 (v ) S v (u,0) + F1 ( v ) S(u,1) + G1 ( v ) S v (u,1), S 2 (u, v ) = F0 (u ) S(0, v ) + G0 (u ) S u (0, v ) + F1 (u ) S(1, v ) + G1 (u ) S u (1, v )
• korrekciós tag:
S(0,0) S v (0,0) S(0,1) S v (0,1) F0 (v) S (0,0) S (0,0) S (0,1) S (0,1) G (v) uv u uv 0 S12 (u , v) = [F0 (u ) G0 (u ) F1 (u ) G1 (u )] u S(1,0) S v (1,0) S(1,1) S v (1,1) F1 (v) S u (1,0) S uv (1,0) S u (1,1) S uv (1,1) G1 (v)
• felületegyenlet (Boolean sum): S(u, v ) = S1 (u, v ) + S 2 (u, v ) − S12 (u, v ) Coons felületek
8
Parametrikus konstrukciók
Pontok – 0D, Görbék – 1D, Felületek – 2D Kontroll pontokból származtatott elemek:
p1 (t1 (u )) p 2 (t 2 (u ))
Q = ∑ Piαi , 0 D → 0 D
r (u )
r (u ) = ∑ Pi β i (u ), 0 D → 1D S(u, v ) = ∑∑ Pij β ij (u, v ), 0 D → 2 D
Görbékből görbe:
r (u ) = ∑ p i (u )α i , 1D → 1D r (u ) = ∑ p i (ti (u ))γ i (u ), 1D → 1D
Görbékből felület:
S(u, v) = ∑ p i (u )γ i (v), 1D → 2 D
Felületekből felület:
u → t1 , t2 , t3
p 3 (t3 (u ))
p1 (u )
S(u , v)
S(u, v) = ∑ R i (u, v) α i , 2 D → 2 D S(u, v) = ∑ R i ( si (u, v), ti (u, v)) γ i (u , v), 2 D → 2 D
p 2 (u ) 9
Ribbon-alapú görbeinterpoláció
Hermite görbe - pozició és tangens interpoláció:
r (u ) = PA F0 (u ) + TAG0 (u ) + PB F1 (u ) + TBG1 (u )
Formális átírás:
r (u ) = ∑ Pi F0 (ui ) + Ti G0 (ui ), ahol
i∈{1, 2}
u1 = u, u2 = 1 − u, T2 = −TB
Módosított görbe egyenlet:
R i (ui ) = Pi + ui Ti , rˆ (u ) =
∑ R (u ) F (u ) i
i
0
i
i∈{1, 2}
rˆ (u1 = 0) = P1 ,
∂rˆ (u1 = 0) = T1 ∂u1
csak egy súlyfüggvény ribbon: pozició + tangens egyben a Hermite görbéhez hasonló tulajdonságok n-oldalú felületek
10
Ujjgyakorlat* - ribbonok rˆ (u ) = ∑ R i (ui ) H i (u1,u2 ), u1 = u, u2 = 1 − u i∈{1,2}
R i (ui ) = Pi + ui Ti , i ∈ {1,2} u22 u12 H1 (u1,u2 ) = 2 , H 2 (u1,u2 ) = 2 , 2 2 u1 + u2 u1 + u2
R 2 (u2 )
R1(u1 )
P1
u1 : 0 → 1 u2 : 1 ← 0
P2 n-oldalú felületek
u1
0
0.25
0.5
0.75
1
H1
.
.
.
.
.
H2
.
.
.
.
.
Feladat: a súlyfüggvény értékeinek meghatározása a görbe 3 belső pontjának kiszerkesztése 11
Ujjgyakorlat - ribbonok rˆ (u ) = ∑ R i (ui ) H i (u1,u2 ), u1 = u, u2 = 1 − u i∈{1,2}
R i (ui ) = Pi + ui Ti , i ∈ {1,2} u22 u12 H1 (u1,u2 ) = 2 , H 2 (u1,u2 ) = 2 , 2 2 u1 + u2 u1 + u2
R 2 (u2 )
R1(u1 ) u1 = 0.25
P1
u1
0
0.25
0.5
0.75
1
H1
1
0.9
0.5
0.1
0
H2
0
0.1
0.5
0.9
1
u1 = 0.5
u1 : 0 → 1 u2 : 1 ← 0
u1 = 0.75
P2 n-oldalú felületek
Feladat: a súlyfüggvény értékeinek meghatározása a görbe 3 belső pontjának kiszerkesztése 12
n-oldalú felületek1 • adott n határgörbe és a hozzájuk tartozó keresztderivált függvények • cél: interpoláló felület, természetes belső összesimítás • n oldal-interpoláns (ribbon) konvex kombinációja: n −1
S(u, v ) = ∑ R i ( si (u, v ), ti (u, v )) Blendoldal (u, v ) i =0
• parametrikus domén: – n-oldalú konvex poligon
n-oldalú felületek
13
n-oldalú felületek2
mindegyik ribbon egy négyoldalú parametrikus felület:
R i ( si , ti ), ( si , ti ) ∈ [0, S i ] × [0, Ti ]
a domén tartalmazza minden [si,ti] parametrikus tartomány leképzését domén leképzés (nehéz):
(u , v) ⇒ ( si , ti ), i = 1,K, n
(u,v)
3D leképzés (behelyettesítés):
Ri(si,ti)
R i ( si , ti ) = R i ( si (u, v ), ti (u, v ))
meghatározandó elemek konvex domén domén leképző függvények interpolánsok súlyfüggvények
n-oldalú felületek
(si,ti)
(si,ti)
14
Konvex poligonális domén1 Adott - 3D határgörbék, hosszuk: a , b, c, d , e... - sarokszögek: ζ 1 , ζ 2 , ζ 3 , ζ 4 , ζ 5 ... Cél: domén poligon előállítása (i) szabályos sokszög (ii) szögek aránya → oldalak aránya (körpoligon) (iii) oldalak és szögek optimalizálása * szögek normalizálása ζ i → ζ i
(i )
ζ4
e
d
ζ3
ζ5
c
ζ2 ζ1
a
b
nyitott → zárt poligon: különbségvektor eltüntetése
(ii )
(iii ) δ
ζ 4* e
ε γ α β
Domén
ζ 3* c
ζ 2*
ζ 5*
α : β :γ :δ :ε = a : b : c : d : e
d
a ζ* 1
b 15
Ribbon-alapú felületek Ribbon (oldal-interpoláns): egy határgörbét és egy keresztirányú tangens függvényt interpolál
Pi ( si ) Ti ( si )
R i ( si , ti ) = Pi ( si ) + ti Ti ( si ), i = 1,..., n, si = si (u, v ), ti = ti (u, v ) n-oldalú felület egyenlete:
ribbonok súlyozott kombinációja n −1
S(u, v ) = ∑ R i ( si (u, v ), ti (u, v )) Blend ioldal (u, v ) i =0
n-oldalú felületek
16
Oldal - súlyfüggvények Általános távolságfogalom ● az i-edik oldalon
di = 0
● monoton nő, ahogy "távolodunk" ● pl. merőleges távolság
d3 d2
Oldal-alapú súlyfüggvény: ● i-edik oldalon: ● j≠i oldalakon:
d4
Blend ioldal = 1 Blend ioldal = 0 ∏ d j (u, v ) 2
Blend ioldal (u, v ) =
d1 d0
j ≠i
∑∏ d j (u, v ) 2 k
j ≠k
● a sima kapcsolódás érdekében a kitevő 2 ● a sarkokban szingularitás
Példa: n=3, az 1-es ribbon súlyozása d 22 d 32 1 Blend oldal = 2 2 d1 d 2 + d 22 d 32 + d 32 d12 n-oldalú felületek
17
Ujjgyakorlat* - súlyfüggvények Oldal-alapú súlyfüggvény: ● i-edik oldalon: ● j≠i oldalakon:
Blend ioldal = 1 Blend ioldal = 0 ∏dj
Blendioldal ( d1, d 2 ,...d n ) =
d1
d4
d3 d2
2
j ≠i
d3 = 0
d2 = 0
2 ∑ ∏dj k j ≠k
...... ... + .... + .... + .... 2 Blend oldal ( d 2 = 0) = ?
Feladat: •
2 Blend oldal =
n=4, a 2-es blend függvény
meghatározása • ellenőrzés a 2. és 3. oldalakon
2 Blend oldal ( d 3 = 0) = ?
n-oldalú felületek
18
Ujjgyakorlat - súlyfüggvények Oldal-alapú súlyfüggvény: ● i-edik oldalon: ● j≠i oldalakon:
Blend ioldal = 1 Blend ioldal = 0 ∏dj
Blendioldal ( d1, d 2 ,...d n ) =
d4
d1
d3
d2
2
j ≠i
∑ ∏dj
d3 = 0
d2 = 0
2
k j ≠k
Feladat: •
n=4, a 2-es blend függvény
meghatározása • ellenőrzés a 2. és 3. oldalakon
Blend
2 oldal
d12 d 32 d 42 = 2 2 2 d1 d 2 d 3 + d 22 d 32 d 42 .... + d 32 d 42 d12 + d 42 d12 d 22
2 Blend oldal ( d 2 = 0) = 1 2 Blend oldal (d 3 = 0) = 0
n-oldalú felületek
19
Ribbonok leképzése s,t = 1/6, 1/3, 1/2, 2/3, 5/6
Adott egy (u,v) domén pont
Meghatározandó: az i-edik oldalhoz tartozó ribbon (s,t) koordinátái
C
P
s: 0 ≤ s ≤ 1 t: az aktuális élen 0, máshol pozitív ( u, v )
Sugárirányú söprő egyenesek algoritmusa:
C: a szomszédos élek metszéspontja P: sugár (C-n és az (u,v)-n átmenő
t=1/2
egyenes) és az él metszéspontja
t: P és az (u,v) távolsága s: P aránya az adott élen n-oldalú felületek
t=2/3 s=1/3
s=1/6
20
3D görbehálón alapuló tervezés Demó - Sketches
Sketches - demo
21
Sketches1
Courtesy of ShapEx, Ltd., Budapest
22
Sketches2
Courtesy of EveryBodyLovesSketces and ShapEx, Ltd., Budapest
23
Sketches3
Courtesy of Comp.Sci.Eng., Wash.Univ., St. Louis & ShapEx, Ltd.
24
Önálló projekt N-oldalú felület generálás (N=5,6) szemináriumi előadás és prototípus implementáció
határgörbék - Bézier görbék
keresztderiváltak - Bézier-szerű kontrollpontok
3D-s háromszögháló előállítása
kontrollpontok módosítása
3D Számítógépes Geometria
25
Sketches
Examples
26
Sketches
Examples
27