vista tridimensional perspectiva iluminaci on

24
1 / 25 Vista tridimensional Perspectiva Iluminaci´ on El algoritmo del pintor Gr´ aficos tridimensionales Jose Luis Bravo Trinidad 9 de enero de 2013 Jose Luis Bravo Trinidad Gr´ aficos tridimensionales

Upload: others

Post on 02-Aug-2022

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Vista tridimensional Perspectiva Iluminaci on

1 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Graficos tridimensionales

Jose Luis Bravo Trinidad

9 de enero de 2013

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 2: Vista tridimensional Perspectiva Iluminaci on

2 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Indice

1 Vista tridimensionalCoordenadas de vistaTransformaciones linealesProyecciones paralelas

2 PerspectivaPlano proyectivoEspacio proyectivo

3 Iluminacion

4 El algoritmo del pintor

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 3: Vista tridimensional Perspectiva Iluminaci on

3 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Coordenadas de vista

Figura: Coordenadas universales yde vista.

Para los objetos en una escenausamos el sistema dereferencia universal.

La escena se proyecta en unplano, denominado camara paralo cual se pasa al sistema dereferencia de vista.

Este proceso se denominarenderizado.

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 4: Vista tridimensional Perspectiva Iluminaci on

4 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Coordenadas de vista

El comando pers en R es unmodo de realizar dichaoperacion.

Recibe xr , yr , zr , donde xr , yrson vectores ordenados y zr unamatriz y dibuja la superficie.

Devuelve una matriz de 4x4 quees la transformacion aplicada.

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 5: Vista tridimensional Perspectiva Iluminaci on

5 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Transformaciones lineales

Para transformar entre sistemas de coordenadas, utilizaremosmatrices de la forma:

x2y2z21

=

a11, a12, a13, a14a21, a22, a23, a24a31, a32, a33, a340, 0, 0, 1

x1y1z11

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 6: Vista tridimensional Perspectiva Iluminaci on

6 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Traslacion

Para mover el punto (x0, y0, z0) al origen:x2y2z2t2

=

1, 0, 0, −x00, 1, 0, −y00, 0, 1, −z00, 0, 0, 1

x1y1z11

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 7: Vista tridimensional Perspectiva Iluminaci on

7 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Rotacion

Una rotacion de angulo α respecto al eje z :x2y2z2t2

=

cos(α), − sin(α), 0, 0sin(α), cos(α), 0, 0

0, 0, 1, 00, 0, 0, 1

x1y1z11

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 8: Vista tridimensional Perspectiva Iluminaci on

8 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Rotacion

Una rotacion de angulo α respecto al eje x :x2y2z2t2

=

1, 0, 0, 00, cos(α), − sin(α), 00, sin(α), cos(α), 00, 0, 0, 1

x1y1z11

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 9: Vista tridimensional Perspectiva Iluminaci on

9 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Escalado

Para multiplicar las coordenadas x por a, las y por b y las z por c,x2y2z2t2

=

a, 0, 0, 00, b, 0, 00, 0, c , 00, 0, 0, 1

x1y1z11

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 10: Vista tridimensional Perspectiva Iluminaci on

10 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Simetrıa respecto de un plano

Simetrıa respecto al plano x = 0:x2y2z2t2

=

−1, 0, 0, 00, 1, 0, 00, 0, 1, 00, 0, 0, 1

x1y1z11

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 11: Vista tridimensional Perspectiva Iluminaci on

11 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Transformaciones compuestas

Toda transformacion lineal puede descomponerse en producto detransformaciones simples.

Por ejemplo, si queremos transformar el segmento (1, 1, 1)-(1, 0, 0)para que pase a ser el segmento (0, 0, 0)-(1, 0, 0), podemos:

1 Mover el punto (1, 0, 0) al origen (M1).

2 Girar -45o respecto al eje x (M2).

3 Girar 90o respecto al eje z (M3).

4 Escalamos el eje x el factor 1/√

2 (M4).

La matriz que realiza el movimiento sera:

M = M4 ∗M3 ∗M2 ∗M1

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 12: Vista tridimensional Perspectiva Iluminaci on

12 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Proyecciones

Las proyecciones paralelas se obtienen al proyectar en el plano devision cada punto en una direccion dada.

Normalmente esa direccion es la ortogonal al plano de vision.

Podemos considerar que el plano de vision pasa por el origen.

Para dar una proyeccion basta dar una transformacion lineal(matriz) y tomar las coordenadas x , y .

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 13: Vista tridimensional Perspectiva Iluminaci on

13 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Proyecciones paralelas a la normal al plano de vision

Las proyecciones paralelas son planta, alzado y perfil.

Las matrices de transformacion son:1 0 0 00 1 0 00 0 1 00 0 0 1

,

1 0 0 00 0 1 00 1 0 00 0 0 1

,

0 0 1 01 0 0 00 1 0 00 0 0 1

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 14: Vista tridimensional Perspectiva Iluminaci on

14 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Proyeccion isometrica

Se elije el plano de vision demodo que la direccion ortogonaldel plano de vista sea la de larecta x = y = z de lascoordenadas universales.

1/√

6 2/√

6 1/√

6 0

1/√

2 0 −1/√

2 0

1/√

3 −1/√

3 1/√

3 00 0 0 1

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 15: Vista tridimensional Perspectiva Iluminaci on

15 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Coordenadas de vistaTransformaciones linealesProyecciones paralelas

Proyeccion caballera

Proyeccion caballera: Se realizala transformacion

xv = y + xL1 cosφ,

yv = z + xL1 sinφ.

L1 cosφ 1 0 0L1 sinφ 0 1 0

1 0 0 00 0 0 1

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 16: Vista tridimensional Perspectiva Iluminaci on

16 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Plano proyectivoEspacio proyectivo

Plano proyectivo

El plano proyectivo se construye a partir del plano real R2,anadiendo los siguientes puntos: Para cada familia de rectas

paralelas, anadimos un punto. Dicho punto se denomina punto delinfinito.Una manera alternativa es considerar R3 y tomar como puntos lasrectas

{(λx , λy , λz), : λ ∈ R}.

Los puntos de la forma (x , y , z) se denominan coordenadashomogeneas.

Podemos pasar al plano afın mediante asignando a cada punto(x , y , z) del plano proyectivo el punto (x/z , y/z) del plano afın.

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 17: Vista tridimensional Perspectiva Iluminaci on

17 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Plano proyectivoEspacio proyectivo

Plano proyectivo

Se denomina recta del infinito a la curva del plano proyectivodefinida por z = 0 (es una circunferencia).

Dos rectas del plano proyectivo siempre se cortan en un punto.

Si tenemos una curva (xs , ys , zs) en el plano proyectivo, entonces(xs/zs , ys/zs) es su parte real.

Si tenemos una curva (xs , ys , zs) en el plano proyectivo, entonceszs = 0 nos da sus intersecciones con el infinito.

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 18: Vista tridimensional Perspectiva Iluminaci on

18 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Plano proyectivoEspacio proyectivo

Plano proyectivo

Consideremos la hiperbola

x2 − y2 = 1.

Podemos considerarla curva del plano proyectivo haciendox → x/z , y → y/z . Entonces la hiperbola en el plano proyectivo

es:x2 − y2 = z2

Corta a la recta del infinito (z = 0) en:

x2 − y2 = 0.

x2 = y2, y = ±x . Luego y = ±x son paralelas a las asıntotas delas parabolas (de hecho son las asıntotas).

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 19: Vista tridimensional Perspectiva Iluminaci on

19 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Plano proyectivoEspacio proyectivo

Espacio proyectivo

Denominamos espacio proyectivo a R4 considerando como puntoslas rectas

{(λx , λy , λz , λt), : λ ∈ R}.

Si existe λ tal que

(x1, y1, z1, t1) = λ(x2, y2, z2, t2),

entonces (x1, y1, z1, t1) y (x2, y2, z2, t2) son el mismo punto.

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 20: Vista tridimensional Perspectiva Iluminaci on

20 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Plano proyectivoEspacio proyectivo

Espacio proyectivo

Dado un punto (x , y , z , t) tal que t 6= 0, le asignamos el punto delespacio (afın) (x/t, y/t, z/t).

Dado un punto (x , y , z) del espacio (afın), lo consideramos en elespacio proyectivo como (x/t, y/t, z/t, 1) (coordenadashomogeneas).

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 21: Vista tridimensional Perspectiva Iluminaci on

21 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Plano proyectivoEspacio proyectivo

Transformaciones lineales

Para definir una aplicacion lineal en el espacio proyectivo, tenemosque dar una matriz de 4x4:

x2y2z2t2

=

a11, a12, a13, a14a21, a22, a23, a24a31, a32, a33, a34a41, a42, a43, a44

x1y1z1t1

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 22: Vista tridimensional Perspectiva Iluminaci on

22 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

Plano proyectivoEspacio proyectivo

Proyeccion en perspectiva

Vamos a mover el plano del infinito para que este en x = x∞ y elplano x = xv se mantenga en proporcion:

x2y2z2t2

=

1 + xv/d 0 0 −xvx∞/d

0 1 0 00 0 1 0−1/d 0 0 x∞/d

x1y1z11

donde d = x∞ − xv .

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 23: Vista tridimensional Perspectiva Iluminaci on

23 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

El algoritmo del pintor

El algoritmo del pintor se utiliza para renderizar una escenadefinida por caras planas.

Consiste en dibujar las caras desde las mas lejanas a las mascercanas.

Falla cuando tres caras se solapan de modo cıclico. Para evitar estoexisten algoritmos como el de bufer z.

Jose Luis Bravo Trinidad Graficos tridimensionales

Page 24: Vista tridimensional Perspectiva Iluminaci on

24 / 25

Vista tridimensionalPerspectivaIluminacion

El algoritmo del pintor

El algoritmo del pintor

Se ordenan las caras de mas distante a menos distante alplano de vista.

Para cada cara (S):Se compara con el resto de caras (S’), comprobando:

No se superpone en z ,No se superpone en y ,No se superpone en x ,Esta detras del plano que contiene a S’,No hay superposicion en el plano de vista.

Si se cumple alguna condicion se sigue con la cara siguiente.Si no se cumplen, se intercambian S y S’ y se vuelve a empezar.

Se pintan las caras en el orden obtenido.

Jose Luis Bravo Trinidad Graficos tridimensionales