Transcript PPT

Teksture
Lastnosti snovi
O teksturah
2D-3D lepljenje tekstur
2D cilindricno lepljenje
Primeri 2d cilindricnega lep.
Sferično lepljenje
Primeri sferičnega lepljenja
Primerjava cil-sfer
Cilindrično lepljenje
tekstur
Sferično lepljenje
tekstur
3D lepljenje - prosevanje
Primeri 3D lepljenja
3D lepljenje, variacije, les
Lepljenje tekstur (Texture Mapping)
Teksturna slika je dvo dimenzionalno polje barvnih
vrednosti (texels)
“Texels” so specificirani v (u,v) prostoru teksture
za vsak piksel na zaslonu lahko uporabimo texel za
nadomestek površinske lastnosti poligona
preslikati moramo (u,v) prostor v (s, t) prostor poligona
T
V
U
S
Lepljenje tekstur
Preslikavo (u,v) na (s,t) lahko eksplicitno nastavimo na verteksih tako,
da na verteksih shranimo koordinate teksture z vsakim verteksom
kako preračunavamo preslikavo (u,v) na (s,t) za vmesne točke?
– Pazimo na problem “aliasing”
– Pazimo na problem preslikave več v eno
– Pazimo na učinke perspektive in linearno interpolacijo
Interpolacija tekstur
Specificiramo, kje se verteksi
iz svojega prostora preslikajo v
prostor teksture
Linearno interpoliramo
preslikavo za ostale točke v
realnem prostoru
– Ravne črte v realnem
prostoru bodo ravne črte v
prostoru teksture
t
s
Slika teksture
Trikotnik v
realnem
prostoru
Interpolacija koordinat
(x3, y3), (s3, t3)

 y  y2 
y  y2 
 s2  
 s3
sL  1 
y3  y2 

 y3  y2 

 y  y1 
y  y1 
 s1  
 s3
sR  1 
y

y
y

y
3
1

 3 1

 x  xL 
x  xL 
 sL  
 sR
s  1 
x

x
x

x
R
L 
L 

 R
(x2, y2), (s2, t2)
(x1, y1), (s1, t1)
Tekstura prosojnosti
Prosojnost - refrakcija
Tekstura odbojnosti
Reflektivnost
Tekstura izbočenja
Lepljenje izboklin (bump mapping)
Lepljenje izboklin (bump mapping)
Teksture uporabimo za spreminjanje geometrije površin
Vrednosti texel uporabimo za spreminjanje normal
poligona
Vrednosti texel ustrezajo višinskemu polju
– Z višinskim poljem modeliramo hrapavo ploskev
Parcialni odvod “bump map” določa spremembo v normali
na ploskev
Primerjava tekstur in izboklin
“Texture mapping”
simulira podrobnosti z
barvo, ki se spreminja
vzdolž ploskve
“Bump mapping” simulira
podrobnosti z normalami
na ploskev, ki se
spreminjajo vzdolž
kd
tex(s,t)
ploskve
+
*

L
*

ks
N
H
+
kd
*

tex(s,t)
L
*

bump()
N
ks
H
B
Primerjava lepljenja odmika in izboklin
(Displacement v. Bump
B
Displacement mapping
– Spreminja lokacije verteksov
– Zahteva delitev mreže na nivo
ločljivosti senčnika (shader resolution)
P’ = P + B N
Bump mapping
– Spreminja le smer normale na ploskev
– Daje iluzijo “displacement map”
N’ = N + Bs(N  Pt) – Bt(N  Ps)
In kaj je s silhuetami (obrisi)?
– Odmiki spreminjajo silhuete
– Bump maps ohranjajo mehke silhuete
P
P’
N’
Bs
1
Bs
1
Lepljenje odmikov (Displacement Mapping)
Normale pri lepljenju izboklin so nekonsistentne z dejansko
geometrijo. Imamo probleme pri sencah
Lepljenje odmikov vpliva na geometrijo ploskev
Celularne teksture
Teksture
Snov bo izgledala bolj
zanimivo
– Barva
– prosojnost (sir, železo)
– Umazanija, rja
Nudi dodatno globino
človeškemu pogledu
Preslikava tekstur
Preslikava slike na površino
Je odvisna od parametrizacije ploskve (s,t)
– Težavna pri ploskvah z več značilnostmi
– lahko pride do popačenj
– Ni nujno 1:1
3D Teksture
Uporabimo 3-D teksturne koordinate
(s,t,r)
lahko velja s = x, t = y in r = z
Surface
Texture
features
don’t
line up
Ni potrebno parametrizirati ploskve
Ne skrbimo za popačenja
predmeti izgledajo izklesani iz trdne
snovi
Solid
Texture
features
do
line up
Darwyn Peachey, 1985
Problemi s 3D teksturami
Kako deformirati predmet, ne da bi “plaval” skozi
teksturo?
Kako lahko učinkovito shranimo proceduralno
teksturo?
Proceduralne teksture
Texturna preslikava je funkcija
napišemo proceduro za izvajanje te funkcije
– vhod: koordinate teksture - s,t,r
– izhod: barva, prosojnost, senčenje
f(s,t,r) = s2 + t2
Primer: Les
– Klasifikacija prostora teksture v cilindrične lupine
f(s,t,r) = s2 + t2
– Zunanji obroči so bolj skupaj, kar simulira rast resničnih
dreves
– Barvna tabela lesa
• Woodmap(0) = rjav
“novejši les”
• Woodmap(1) = rumeno-rjav “starejši les”
Wood(s,t,r) = Woodmap(f(s,t,r) mod 1)
0
1
Woodmap(f)
Wood(s,t,r)
Šumne funkcije
Dodamo “šum”, da so teksture bolj zanimive
Perlin noise function N(x,y,z)
– Smooth
– Correlated
– Bandlimited
N(x,y,z) returns a single random number in [-1,1]
Gradient noise
– Like a random sine wave
N(x,y,z)=0 for int x,y,z
Value noise
– Also like a random sine wave
N(x,y,z)=random for int x,y,z
Uporaba šuma
Šum dodamo valjem in tako krivimo les
Wood(s2 + t2 + N(s,t,r))
krmilimo
– Amplitudo: jakost šuma
a N(s, t, r)
– Frekvenco: grobe ali fine podrobnosti
N(fs s, ft t, fr r)
– Fazo: lokacijo vrhov šuma
N(s + fs, t + ft, r + fr)
Kako naredimo šum
Dobro:
– Tvorimo 3-D polje naključnih vrednosti
– Trilinearna interpolacija
Bolje
– Tvorimo 3-D polje naključnih 3-vektorjev
– Hermitova interpolacija
Hermitova interpolacija
Some cubic h(t) = at3 + bt2 + ct + d s.t.
– h(0) = 0 (d = 0)
– h(1) = 0 (a + b + c = 0)
– h’(0) = r0 (c = r0)
– h’(1) = r1 (3a + 2b + r0 = r1)
Answer:
– h(t) = (r0 + r1) t3 - (2r0 + r1) t2 + r0t
Tricubic interpolation
– Interpolate corners along edges
– Interpolate edges into faces
– Interpolate faces into interior
Pobarvani obroči
Spotted donut
– Gray(N(40*x,40*y,40*z))
– Gray() - ramp colormap
– Single 40Hz frequency
Bozo donut
– Bozo(N(4*x,4*y,4*z))
– Bozo() - banded colormap
– Cubic interpolation means
contours are smooth
Obroči s preslikavo izboklin
DN
n
x
n += DNoise(x,y,z); normalize(n);
DNoise(s,t,r) = Noise(s,t,r)
Bumpy donut
– Same procedural texture as spotted
donut
– Noise replaced with DNoise
Sestavljene teksture na obročih
Stucco donut
– Noise(x,y,z)*DNoise(x,y,z)
– Noisy direction
– noisy amplitude
Fleshy donut
– Same texture
– Different colormap
Tekstura z naključnim lomom svetlobe
Brownovo gibanje
random paths
Integral of white noise
1/f 2 distribution
log power
d 
white noise
brown noise
F
F
1
1/f 2
log f
log f
Fraktalsko Brownovo gibanje
1/f b distribution
Roughness parameter b
– Ranges from 1 to 3
– b = 3 - smooth, not flat, still random
– b = 1 - rough, not space filling, but thick
Construct using spectral synthesis
+
– Add several octaves of noise function
4 appropriately
– Scale amplitude
f (s)   2 ib n(2i s)
i 1
=
Obroč s fraktalsko nagubano površino
fbm(beta) {
val = 0; vec = (0,0,0);
for (i = 0; i < octaves; i++) {
val += Noise(2i*x, 2i *y, 2i *z)/pow(2,i*beta);
vec += DNoise(2i*x, 2i *y, 2i *z)/pow(2,i*beta);
}
return vec or val;
}