zobrazovací projekce - univerzita karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y]...

28
Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 1 / 28 Zobrazovací projekce © 1995-2019 Josef Pelikán CGG MFF UK Praha [email protected] https://cgg.mff.cuni.cz/~pepca/

Upload: others

Post on 18-Nov-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 1 / 28

Zobrazovací projekce

© 1995-2019 Josef Pelikán CGG MFF UK Praha

[email protected]://cgg.mff.cuni.cz/~pepca/

Page 2: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 2 / 28

Základní pojmy

průmětna

promítacípaprsky

průmětna

středprojekce

Page 3: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 3 / 28

Klasifikace lineárních projekcí

Rovnoběžné projekce– promítací paprsky jsou navzájem rovnoběžné

Kolmé projekce– promítací paprsky jsou kolmé na průmětnu– Mongeova projekce, půdorys, nárys, bokorys– axonometrie (obecná kolmá projekce)

Kosoúhlé projekce– kabinetní projekce (zkrácení měřítka osy z na 1/2)– kavalírní projekce (stejné měřítko na všech osách)

Page 4: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 4 / 28

Mongeova projekce

nárys

půdorys

bokoryszleva

x y

y

z z

Page 5: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 5 / 28

Axonometrie – isometrie

xy

z

průmětna

1

1

1

a a

a

Page 6: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 6 / 28

Axonometrie – dimetrie

xy

z

průmětna

1

11

a a

b

Page 7: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 7 / 28

Axonometrie – trimetrie

xy

z

průmětna

1

11

ba

c

Page 8: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 8 / 28

Kabinetní projekce

průmětna = xy

x

z

y

1

11

11/2

30°

x

z

y

1

11

11/2

45°

Page 9: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 9 / 28

Kavalírní projekce

průmětna = xy

x

z

y

1

11

11

30°

x

z

y

1

1

1

1

1

45°

Page 10: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 10 / 28

Klasifikace lineárních projekcí

Středové projekce („perspective projections“)– promítací paprsky tvoří svazek procházející jedním bodem,

středem projekce– nezachovává se rovnoběžnost (úběžníky)

Jednobodová perspektiva– průmětna je rovnoběžná se dvěma souřadnými osami– rovnoběžky se třetí osou se protínají v jednom hlavním úběžníku

Page 11: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 11 / 28

Jednobodová perspektiva

z

průmětna || xz

x

y

Page 12: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 12 / 28

Další středové projekce

Dvoubodová perspektiva– průmětna je rovnoběžná s jednou souřadnou osou– rovnoběžky s ostatními osami se protínají ve dvou hlavních

úběžnících

Tříbodová perspektiva– průmětna má zcela obecnou polohu– rovnoběžky se souřadnými osami se protínají ve třech hlavních

úběžnících

Page 13: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 13 / 28

Dvoubodová perspektiva

zprůmětna || z

xy

Page 14: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 14 / 28

Tříbodová perspektiva

zprůmětna protínávšechny osy

xy

Page 15: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 15 / 28

Implementace kolmé projekce

[x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Základní pohledy (půdorys, nárys, bokorys)– pouze permutace složek x, y a z (s příp. změnou znaménka)

Obecná kolmá projekce (axonometrie)– směr pohledu (normálový vektor průmětny): N– svislý vektor: u– převedení do základního pohledu: Cs(S, u×N, u, N)

Page 16: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 16 / 28

Obecná kolmá projekce

x

y

z

Nu×N

u

Cs(S, u×N, u, N)

x

y

zN

u×N

u

S

Page 17: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 17 / 28

Implementace kosoúhlé projekce

[1 0 0 00 1 0 0

K⋅cosα K⋅sin α 1 00 0 0 1

]

průmětna: xykoeficient zkrácení: Kúhel průmětu osy z:

x

z

y

K

Page 18: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 18 / 28

Implementace středové projekce

Obecná středová projekce– střed projekce: S– směr pohledu (normálový vektor průmětny): N– vzdálenost průmětny od středu projekce: d– svislý vektor: u

Promítací transformace– převedení do základní polohy (střed projekce do počátku,

směr pohledu do osy z): Cs(S, u×N, u, N)– perspektivní projekce: např. [ x · d/z, y · d/z, z ]

Page 19: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 19 / 28

Převedení do základní polohy

x

y

z

N

u×N

u

S

d

x

y

zN

u×Nu

Cs(S, u×N, u, N)

Page 20: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 20 / 28

Perspektivní transformace

[1 0 0 00 1 0 0

0 0 1 1d

0 0 0 0]x, y

z

d

průmětna

Nezachováválinearitu útvarů!

Page 21: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 21 / 28

Perspektivní projekce na GPU

Vzdálený bod f může být i v nekonečnu

[2nr−l

0 0 0

0 2nt−b

0 0

−rlr−l

−tbt−b

f nf −n

1

0 0 −2fnf −n

0 ]

n

f

[-]z

xy

[2nr−l

0 0 0

02nt−b

0 0

−r+lr−l

−t+bt−b

1 1

0 0 −2n 0]

Page 22: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 22 / 28

Transformace lineárních útvarů

Perspektivní transformace úsečky Per– je zřejmé, že neplatí rovnost

Per(A + t · [B - A]) = Per(A) + t · [Per(B) - Per(A)]

Použití diferenčních algoritmů (DDA) při výpočtu viditelnosti– mějme bod C(u) na úsečce Per(A)Per(B)

C(u)x,y = Per(A)x,y + u · [Per(B)x,y - Per(A)x,y]

– potřebujeme, aby i pro hloubku z platilo

C(u)z = Per(A)z + u · [Per(B)z - Per(A)z]

Page 23: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 23 / 28

Interpolation in the screen space

Concerns clip-space and next spaces– clip space: [x, y, z, w]

– NDS: [x/w, y/w, z/w, w] (“w” could be preserved)

– window space (fragments): [xi, yi, zi, w]

Projective perspective transformation maps depth z to NDS non-linearly!– nonuniform accuracy of z-buffer (distant parts could be less

accurate: minimization of f/n ratio!)+ interpolation of depth 1/z can be done in the screen space linearly

„W-buffer“ instead of „z-buffer“ (not frequently used)

Page 24: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 24 / 28

Perspective-correct interpolation

Linear interpolation + division (hyperbolic interpolation)– reciprocal depth “1/z” can be interpolated linearly– for additional attributes (texture coordinates) perspective-correct

adjustment must be used– quantities “1/z”, “u/z”, “v/z”… are linearly interpolated, [u, v] is

then computed by division

[x1, y1, 1/z1, u1/z1, v1/z1]

[x3, y3, 1/z3, u3/z3, v3/z3][x2, y2, 1/z2, u2/z2, v2/z2]

1. linear

2. linear

3. pixel (fragment) z = (1/z)-1

u = (u/z) · z v = (v/z) · z

Page 25: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 25 / 28

Interpolation example I

Affine Correct

Page 26: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 26 / 28

Interpolation example II

Affine

Correct

Page 27: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 27 / 28

4D ořezávání

x, y

z

-k k

x,y = -k x,y = k

z = 0

zorný kvádr

Hraniční nadrovinyx = -kw, x = kw, y = -kw, y = kw, z = 0

pro w > 0: -kw < x < kw, -kw < y < kw, 0 < z

Page 28: Zobrazovací projekce - Univerzita Karlovapepca/lectures/pdf/icg-22... · 2019. 11. 29. · [x, y] budou souřadnice bodu v průmětu, z jeho hloubka (vzdálenost od pozorovatele)

Projection 2019 © Josef Pelikán, https://cgg.mff.cuni.cz/~pepca 28 / 28

Literatura

J. Foley, A. van Dam, S. Feiner, J. Hughes: Computer Graphics, Principles and Practice, 229-283

Jiří Žára a kol.: Počítačová grafika, principy a algoritmy, 277-291

Kok-Lim Low: Perspective-Correct Interpolation (report, proof), University of North Carolina at Chapel Hill, 2002