18
1 Escenas 3D Lab. de Visualización y Computación Gráfica Dpto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur La generación de un mundo 3D requiere 3 componentes esenciales: • El mundo 3D de los objetos • La o las fuentes de luz • La cámara o el ojo que observa la escena Al mundo virtual que generemos lo denominaremos escena y a los objetos en la misma, actores. Una cámara especifica nuestra posición de vista y ciertos parámetros de vista (longitud focal, tamaño de la imagen, etc.). Usaremos transformaciones afines 3D para posicionar y mover actores y cámaras en la escena. Introducción S. Castro, D. Urribarri CG 2015 Una escena Introducción S. Castro, D. Urribarri CG 2015 Mundo Ojo Clipping Pantalla 3D Pipeline 3D S. Castro, D. Urribarri CG 2015 Pipeline 3D S. Castro, D. Urribarri CG 2015 Espacios Objeto Mundo Ojo Clipping Modelado Ubicación Clipping en el Mundo Escalar Rotar Escalar Trasladar Trasladar Trasladar Rotar Perspectiva Especificación de la cámara Escalar Rotar La Cámara S. Castro, D. Urribarri CG 2015

Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

1

Escenas 3D

Lab. de Visualización y Computación Gráfica

Dpto. de Ciencias e Ingeniería de la Computación

Universidad Nacional del Sur

La generación de un mundo 3D requiere 3 componentes esenciales:

• El mundo 3D de los objetos

• La o las fuentes de luz

• La cámara o el ojo que observa la escena

Al mundo virtual que generemos lo denominaremos escena y a los

objetos en la misma, actores.

Una cámara especifica nuestra posición de vista y ciertos

parámetros de vista (longitud focal, tamaño de la imagen, etc.).

Usaremos transformaciones afines 3D para posicionar y mover

actores y cámaras en la escena.

Introducción

S. Castro, D. Urribarri CG 2015

Una escena

Introducción

S. Castro, D. Urribarri CG 2015

Mundo Ojo

Clipping Pantalla 3D

Pipeline 3D

S. Castro, D. Urribarri CG 2015

Pipeline 3D

S. Castro, D. Urribarri CG 2015

Espacios

Objeto Mundo Ojo Clipping

Modelado Ubicación Clipping

en el Mundo

Escalar Rotar Escalar

Trasladar Trasladar Trasladar

Rotar Perspectiva

Especificación

de la cámara

Escalar

Rotar

La Cámara

S. Castro, D. Urribarri CG 2015

Page 2: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

2

En general, todos los programas de rendering 3D proveen una

cámara por defecto o estándar.

Esta cámara tiene un sistema óptico: filtros, lentes y apertura. La

superficie de proyección puede ser plana o curva y estar orientada a

distintos ángulos con respecto a la luz incidente, la cámara o el ojo.

La Cámara

S. Castro, D. Urribarri CG 2015

La Cámara

La cámara oscura

• Modelo abstracto de la cámara

• Modelado de la geometría de la

proyección perspectiva

• Usado en la mayoría de las

aplicaciones de CG

S. Castro, D. Urribarri CG 2015

Definición de la Cámara

S. Castro, D. Urribarri CG 2015

Un modelo de cámara sintética debe tener información de:

– Posición

– Orientación

– Campo de visión (ángulo de ancho, normal…)

– Profundidad de Campo (Plano cercano y lejano)

– Distancia Focal

– Desviación de los planos vista/película (si no es normal a la

dirección de vista produce proyecciones oblicuas)

– Proyección perspectiva o paralela (cámara cerca de los

objetos o a distancia infinita)

Veremos en detalle cada uno de éstos.

Definición de la Cámara

S. Castro, D. Urribarri CG 2015

Para definir un modelo de cámara sintética debemos especificar:

Posición de la cámara (desde dónde se está mirando)

El vector look at (mirando hacia) especifica en qué dirección apunta la

cámara

La orientación de la cámara está determinada por el vector look at y el

ángulo en el que está rotada la cámara con respecto a ese vector, es

decir, la dirección del vector up.

Van Dam

Definición de la Cámara

S. Castro, D. Urribarri CG 2015

La posición es un punto en el espacio tridimensional (deben especificarse x, y y z). Este sistema de coordenadas debe ser de mano izquierda o mano derecha en

concordancia con todo el sistema gráfico.

Posición

Determinar la posición es análogo

a decidir el punto desde el cual

tomar la foto.

Van Dam

Definición de la Cámara

S. Castro, D. Urribarri CG 2015

Page 3: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

3

La orientación por defecto es la de las z (positivas o negativas según el sistema

de coordenadas sea de mano izquierda o de mano derecha) y la orientación up

apunta en la dirección positiva de las y (hacia arriba).

La cámara de la figura está localizazda en el origen y está dirigida hacia un

punto arbitrario con una dirección up también arbitraria.

Orientación

La orientación se especifica

mediante un punto 3D, que es el

punto al que se está mirando y

un ángulo de rotación alrededor

de esa dirección (punto al que se

mira – punto de posición).

Van Dam

Definición de la Cámara

S. Castro, D. Urribarri CG 2015

Determina la distorsión en perspectiva; desde 0 en una proyección paralela a

mucha en los lentes gran angular.

Angulo de visión

En un frustum, se tienen en cuenta dos ángulos de vista: en lo ancho y en lo alto. Si

se especifica el ángulo de Elevación el otro ángulo se determina de (Aspect ratio * Ángulo de Elevación)

Elegir estos ángulos es análogo a lo que hace el fotógrafo eligiendo un tipo específico

de lente (por ej. Un gran angular o un telezoom). Veremos esto en más detalle

cuando veamos tipos de lentes.

Van Dam

Definición de la Cámara

S. Castro, D. Urribarri CG 2015

La distancia (o longitud) focal es la distancia desde el punto de vista al plano focal;

también se denomina profundidad de campo, ya que se determina a qué distancia

están los objetos que deben verse en foco.

Distancia focal

Definición de la Cámara

S. Castro, D. Urribarri CG 2015

El volumen comprendido entre los planos cercano y lejano define lo que ve

la cámara.

Planos de Clipping Cercano y Lejano

La posición de dichos planos se define normalmente a lo largo del vector de look at. Los objetos que aparecen fuera del volumen del vista no serán dibujados.

Los objetos que intersectan el volumen del vista serán recortados o clipeados.

Van Dam

Definición de la Cámara

S. Castro, D. Urribarri CG 2015

¿Por qué tener un plano de clipping cercano?

Los objetos que estén demasiado cerca de la cámara no quieren dibujarse porque

bloquearían al resto y seguramente estarían muy distorsionados.

Tampoco se quieren dibujar los objetos que están detrás de la cámara ya que uno no

espera verlos. Si uno decidiera dibujar lo que está detrás de la cámara seguramente

aparecerían distorsionados por la perspectiva.

¿Por qué tener un plano de clipping lejano?

Los objetos muy alejados de la cámara podrían no querer dibujarse porque aparecerían

muy pequeños para ser visualmente significativos; por otro lado tomaría demasiado

tiempo renderizarlos. Descartando estos objetos perdemos poco detalle pero ganamos

mucho en lo que respecta a tiempo de renderizado.

Por otro lado, puede ser que la escena esté llena de objetos significativos y querramos

despejar la escena de modo tal que se rendericen los cercanos y se descarte el resto.

Definición de la Cámara

S. Castro, D. Urribarri CG 2015

La limitación del volumen de vista es útil para eliminar objetos extraños.

Los ángulo de elevación y de ancho son cero.

Proyección Paralela: Volumen de Vista

Van Dam

Definición de la Cámara

S. Castro, D. Urribarri CG 2015

Page 4: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

4

La limitación del volumen de vista es útil para eliminar objetos tanto

cercanos como lejanos.

Proyección Perspectiva: Volumen de Vista

Van Dam

Definición de la Cámara

S. Castro, D. Urribarri CG 2015

Tipos de Lentes

S. Castro, D. Urribarri CG 2015

Los lentes de la cámara, reales o simulados, son una componente muy

importante en cualquier sistema de cámara porque definen la forma en

que el mundo 3D se proyecta en la lente o plano de la imagen. El plano

de proyección de las cámaras simuladas en la computadora pueden

posicionarse en cualquier lugar de la escena 3D.

Los fotógrafos se refieren a los lentes de una cámara en término de su

longitud focal; esta característica controla la forma en la que los objetos

3D son vistos por la cámara. La mayoría de los lentes tiene longitud focal

fija, excepto los zooms que contienen múltiples lentes y por lo tanto son

capaces de un rango de longitud focal variable.

La nomenclatura estándar para la longitud focal de los lentes se expresa

en mm. Hay una gran variedad de lentes. Los lentes característicos

estándar son los lentes normales de 50 ó 55 mm, el gran angular de 28

mm y el telefoto de 135 mm.

A continuación veremos distintas fotos tomadas con distintos lentes.

Tipos de Lentes

S. Castro, D. Urribarri CG 2015

Tipos de Lentes

S. Castro, D. Urribarri CG 2015

Tipos de Lentes

S. Castro, D. Urribarri CG 2015

Imágenes vistas por una cámara ubicada dentro de una esfera, con

seis lentes diferentes.

Tipos de Lentes

S. Castro, D. Urribarri CG 2015

Page 5: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

5

La Cámara en OpenGL

S. Castro, D. Urribarri CG 2015

Para especificar la cámara debemos

utilizar las primitivas de la librería

matemática que usemos. Debemos

especificar

• Viewing: Ubicación de la cámara

• Proyección: Descripción del frustum

de visión de la cámara (y, en

consecuencia, de la transformación

de proyección)

• División perspectiva: Cálculo de los

puntos 3D a partir de las

coordenadas homogéneas

La Cámara en OpenGL

S. Castro, D. Urribarri CG 2015

Para ubicar la cámara debemos posicionarla en el espacio del mundo

como si fuera una cámara real. Para ello debemos:

• Identificar el lugar donde la cámara está ubicada, es decir el

punto donde está el ojo (eye point).

• Identificar el punto que deseamos que aparezca en el centro de

nuestra vista, es decir, el punto hacia el cual miramos (look-at-

point).

• Identificar lo que esté orientado hacia arriba en nuestra imagen

final (up-vector).

La Cámara en OpenGL

S. Castro, D. Urribarri CG 2015

La librería glm provee una función que implementa la especificación

de viewing:

La Cámara en OpenGL

Estos parámetros están en coordenadas del mundo.

glm::mat4 glm::lookAt(glm::vec3 const & eye,glm::vec3 const & center, glm::vec3 const & up);

glm::dmat4 glm::lookAt(glm::dvec3 const & eye, glm::dvec3 const & center, glm::dvec3 const & up);

S. Castro, D. Urribarri CG 2015

En la Proyección el usuario debe especificar la ventana 3D de visión. En

la proyección paralela (u ortográfica) el usuario especifica el frustum de

visión ortográfico, es decir,

La Cámara en OpenGL

Utilizando la librería glm esto puede hacerse mediante:

glm::dmat4 glm::ortho(double left, double right,double bottom,double top, double zNear, double zFar);

glm::dmat4 glm::ortho(float left, float right, float bottom, float top, float zNear, float zFar);

S. Castro, D. Urribarri CG 2015

La Cámara en OpenGL

Función provista por la librería glm para especificar este frustum de visión es:

En la proyección perspectiva el frustum de visión que se especifica es:

Otra función para este fin es:

donde fov es el ángulo de visión vertical y aspect es la relación ancho/alto de

la imagen en el plano near.

glm::dmat4 glm::frustum(double left, double right,double bottom,double top, double zNear, double zFar);

glm::dmat4 glm::frustum(float left, float right, float bottom, float top, float zNear, float zFar);

glm::mat4 perspective(double fov,double aspect, double zNear, double zFar);

glm::mat4 perspective(float fov, float aspect float sNear, float zFar);

S. Castro, D. Urribarri CG 2015

Page 6: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

6

Proyecciones

S. Castro, D. Urribarri CG 2015

La creación del espacio tridimensional pretendía generarse mediante formas

volumétricas redondeadas por el sombreado; la profundidad espacial era

sugerida mediante líneas convergentes.

Esto no era hecho sistemáticamente y las líneas no convergían a un solo punto

de fuga.

Giotto, Franciscan Rule Approved, Asís, Basílica, c.1295-1300

Antecedentes

S. Castro, D. Urribarri CG 2015

Alberti publicó el primer tratado de perspectiva, Della Pittura, en 1435.

“Una pintura [el plano de proyección] es la intersección de una pirámide visual

[volumen de vista] a una determinada distancia, con un centro fijo [centro de

proyección] y una posición definida de la luz, representada artísticamente con

líneas y colores en una dada superficie [el rendering].” (Leono Battista Alberti

(1404-1472), Della Pintura, pp. 32-33)

Van Dam

Antecedentes

S. Castro, D. Urribarri CG 2015

La primera pintura (La

Trinidad con la Virgen, San

Juan y los Donantes) hecha

en perspectiva. Masaccio,

1427.

Antecedentes

S. Castro, D. Urribarri CG 2015

La perspectiva se formaliza. Da Vinci, alrededor de

1498.

Antecedentes

S. Castro, D. Urribarri CG 2015

Albrecht Dürer (1471-1528) describe en su tratado el concepto de triángulos

similares tanto geométrica como mecánicamente.

Albrecht Dürer, Artista dibujando un Laúd, 1525

Antecedentes

S. Castro, D. Urribarri CG 2015

Page 7: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

7

Se puede entonces calcular la imagen proyectada tomando como base:

La altura del objeto (AB)

La distancia del objeto al ojo (CB)

La distancia del ojo al plano de la imagen (CD)

La relación de triángulos: CB es a CD como AB es a ED

Van Dam

Antecedentes

S. Castro, D. Urribarri CG 2015

Una proyección transforma puntos de un sistema de coordenadas de

dimensión n a uno de dimensión menor que n.

Proyecciones

S. Castro, D. Urribarri CG 2015

Una proyección transforma puntos de un sistema de coordenadas de

dimensión n a uno de dimensión menor que n.

La proyección de un objeto 3D está definida por los proyectores que

emanan de un centro de proyección pasando a través de cada punto

del objeto e intersectando un plano de proyección, en el que se forma la

proyección del objeto.

Proyecciones planas

S. Castro, D. Urribarri CG 2015

Las principales proyecciones geométricas planas son:

En general, una proyección está determinada por:

- Dónde está el plano de proyección relativo a los ejes principales del objeto

- El ángulo de los proyectores con el plano de proyección

Perspectiva: determinada por el

Centro de Proyección (CDP)

Paralela: determinada por la

Dirección de Proyección (DDP); los

proyectores son paralelos El CDP

está en el

Proyecciones planas

S. Castro, D. Urribarri CG 2015

Hay distintos tipos de proyecciones geométricas planas:

Las proyecciones paralelas se usan en general para ingeniería y arquitectura

porque conservan las medidas.

Las proyecciones perspectiva imitan nuestros ojos o una cámara y son más

naturales.

Proyecciones planas

S. Castro, D. Urribarri CG 2015

Una cámara virtual usualmente ofrece no sólo la proyección perspectiva,

sino también la proyección paralela. En esta proyección, todas las líneas y

planos paralelos de los objetos siguen siendo paralelos en la proyección; el

tamaño de los objetos permanece constante a medida que los objetos se

alejan del plano de la imagen.

Proyección paralela

S. Castro, D. Urribarri CG 2015

Page 8: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

8

Hay distintos tipos de proyecciones paralelas geométricas planas:

Paralela

Líneas de proyección paralelas

entre sí

Oblicua

Líneas de proyección no son

perpendiculares al plano de

proyección

Ortográfica

Líneas de proyección son

perpendiculares al plano de

proyección

Planos de elevación Plano de

proyección perpendicular a uno

de los ejes

Axonométrica Plano de

proyección orientado

arbitrariamente

Proyecciones planas

S. Castro, D. Urribarri CG 2015

Proyección ortográfica multivista

Proyecciones planas

S. Castro, D. Urribarri CG 2015

Proyección axonométrica

El plano de proyección es perpendicular a la dirección de

proyección pero no es paralelo a los planos coordenados

Proyecciones planas

S. Castro, D. Urribarri CG 2015

Proyección oblicua

El plano de proyección es paralelo a los planos coordenados pero la

dirección de proyección no es perpendicular a éste.

Los proyectores forman un ángulo oblicuo con el plano de

proyección

Van Dam

Carlbom

Proyecciones planas

S. Castro, D. Urribarri CG 2015

Una cámara real siempre crea una proyección perspectiva. En una

proyección perspectiva, de acuerdo a como ésta es creada por la cámara, se

representa un solo punto de vista, los objetos se achican a medida que están

más lejos y las líneas paralelas que no son paralelas al plano de la imagen

convergen a los puntos de fuga.

Proyecciones planas

S. Castro, D. Urribarri CG 2015

Proyección perspectiva

Perspectiva de un punto

Perspectiva de dos puntos

Perspectiva de tres puntos

Proyecciones planas

S. Castro, D. Urribarri CG 2015

Page 9: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

9

Perspectiva de un punto

Perspectiva de dos puntos

Perspectiva de tres puntos

Proyecciones planas

Perspectiva de tres puntos

Proyección perspectiva

S. Castro, D. Urribarri CG 2015

Proyecciones Perspectiva

de Objetos 3D

S. Castro, D. Urribarri CG 2015

Pipeline 3D

S. Castro, D. Urribarri CG 2015

Espacios

Objeto Mundo Ojo Clipping

Modelado Ubicación Especificación Clipping

en el Mundo de la cámara

Rotar Rotar Escalar

Trasladar Trasladar Trasladar

Perspectiva

Escalar

Rotar

Derivación de la perspectiva

En la proyección perspectiva, un punto 3D en el frustum de visión

(coordenadas del ojo) se mapea a un cubo (coordenadas normalizadas del

dispositivo); la coordenada x se mapea de [l, r] a [-1, 1], la coordenada y de [b,

t] a [-1, 1] y la z de [n, f] a [-1, 1].

Veremos que esto lo vamos a hacer en dos etapas.

S. Castro, D. Urribarri CG 2015

Transformación de un punto

Por triángulos similares podemos calcular cómo escalar las

coordenadas x e y.

e

ep

e

ep

e

ep

e

ep

z

yny

z

y

n

y

z

xnx

z

x

n

x

S. Castro, D. Urribarri CG 2015

P=(x,y,z) se proyecta entonces al punto pp dado por:

Transformación de un punto

e

e

e

eppp

z

yn

z

xnyxp ,,

OpenGL usa el sistema de coordenadas de mano derecha para el

mundo.

e

ep

e

ep

e

ep

e

ep

z

yny

z

y

n

y

z

xnx

z

x

n

x

S. Castro, D. Urribarri CG 2015

Page 10: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

10

Esta es claramente una transformación no lineal. Podemos dividirla en

dos partes: una lineal seguida de una no lineal.

Transformaciones

)1,,,( ),,,(

),,,( )1,,,(

)1,,,( )1,,,(

?

nnnlinealNo

eeelineal

nnneee

zyxwzyxT

wzyxzyxT

zyxzyxT

Transformación de un punto

e

e

e

ep

e

ep

e

e

e

ep

e

ep

z

yn

z

yny

z

y

n

y

z

xn

z

xnx

z

x

n

x

S. Castro, D. Urribarri CG 2015

Transformaciones

Transf. No Lineal

Transf. Lineal

1 w

ww

w

zz

w

yy

w

xx nnnn

Transformación de un punto

e

e

e

e

oy

w

z

y

x

M

w

z

y

x

*Pr

)1,,,( ),,,(

),,,( )1,,,(

)1,,,( )1,,,(

?

nnnlinealNo

eeelineal

nnneee

zyxwzyxT

wzyxzyxT

zyxzyxT

e

ep

e

ep

z

yny

z

xnx

S. Castro, D. Urribarri CG 2015

Veamos entonces como definimos la transformación lineal, es decir la MProy

e

e

e

e

oy

w

z

y

x

M

w

z

y

x

*Pr

.

............

............

............

............

ProyM

Podemos establecer que la componente w en este espacio intermedio es –ze. Entonces, la cuarta fila de la matriz es (0,0,-1,0).

e

e

e

e

w

z

y

x

w

z

y

x

*.

0100

............

............

............

e

ep

e

ep

z

yny

z

xnx

Proyección perspectiva

e

p

e

p

ee

z

yy

z

xx

nyynxx

S. Castro, D. Urribarri CG 2015

Buscamos ahora una expresión que nos permita encontrar la

transformación lineal para x y para y. Sabemos que debemos tener en

cuenta las relaciones lineales [l,r][-1,1] y [b,t][-1,1].

21 *

11

lr

rx

lrx pn

lr

lr

lr

xx

lr

lr

r-l

r-

p

n

2

21

Proyección perspectiva

S. Castro, D. Urribarri CG 2015

Mapeamos ahora yp con [b,t][-1,1].

21 *

11

bt

ry

bty pn

bt

bt

bt

yy

bt

bt

bt

t-

p

n

2

21

Dado que conocemos el mapeo y que sabemos que para pasar del

espacio intermedio a las coordenadas normalizadas del dispositivo

debemos dividir por w=-ze veamos ahora cómo obtenemos x e y.

Proyección perspectiva

S. Castro, D. Urribarri CG 2015

Sabemos que:

bt

bt

bt

yy

p

n

2

y reemplazando:

lr

lr

lr

xx

p

n

2

e

ep

z

xnx

e

ep

z

yny

eeee

e

e

e

e

e

e

e

e

e

e

p

n

zxzzlr

lrx

lr

n

z

zlr

lr

z

xlr

n

lr

lr

z

lr

nx

lr

lr

zlr

nx

lr

lr

lr

z

nx

lr

lr

lr

xx

2)(

2

22

22

en zww

xx

Proyección perspectiva

S. Castro, D. Urribarri CG 2015

Page 11: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

11

Para y efectuamos cáculos análogos y obtenemos:

Entonces completamos la primera y la segunda fila de la

matriz

e

e

e

e

w

z

y

x

bt

bt

bt

nlr

lr

lr

n

w

z

y

x

*.

0100

............

02

0

002

eeee z

bt

bty

bt

n yz

lr

lrx

lr

nx

2

2

Proyección perspectiva

S. Castro, D. Urribarri CG 2015

Es claro que la proyección que realizamos descarta la información de

profundidad. ¿Necesitamos dicha información?

¿Qué debemos hacer si queremos mantenerla?

x

y

-z n

P

P1 P2

P(x’,y’)

Proyección perspectiva

S. Castro, D. Urribarri CG 2015

Mostramos que una proyección descarta la información de profundidad, pero

vemos que no debemos descartarla completamente ya que será imposible

saber cuáles objetos están adelante y cuáles atrás.

x

y

-z -n

P

P1 P2

P(x’,y’)

Proyección perspectiva

Cuando dos puntos proyecten al mismo punto sobre el plano cercano,

necesitamos saber cuál está más cerca. Debemos contar con un test que nos

permita saber si P1 oscurece a P2 o viceversa.

Para cada punto P que proyectamos debemos conocer su profundidad.

S. Castro, D. Urribarri CG 2015

Para encontrar zn debemos trabajar de manera diferente porque ze en el

espacio del ojo se proyecta siempre a -n en el plano near. Además de

poder realizar el test de profundidad, debemos poder realizar la

transformada inversa de la proyección. Sabemos que z no depende del

valor de x o de y.

e

e

e

e

w

z

y

x

BAbt

bt

bt

nlr

lr

lr

n

w

z

y

x

*.

0100

00

02

0

002

e

e

e

ee

e

nenz

BAz

z

BwAz

z

zzzw

w

zz

,

Proyección perspectiva

S. Castro, D. Urribarri CG 2015

Para encontrar los coeficientes A y B usamos la relación que existe entre

(ze, zn), es decir (-n -1) y (-f 1):

e

en

z

BAzz

y tenemos entonces 2 ecuaciones con dos incógnitas:

fAfB

nAnB

f

BAfn

BAn

1

1

nf

nfAnAnfAf

nf

fnnAnBA

2en doreemplazany

podemos obtener así z en función de ze

Proyección perspectiva

S. Castro, D. Urribarri CG 2015

Reemplazamos en:

e

e

e

e

e

e

e

e

w

z

y

x

nf

fn

nf

nfbt

bt

bt

nlr

lr

lr

n

w

z

y

x

BAbt

bt

bt

nlr

lr

lr

n

w

z

y

x

*.

0100

200

02

0

002

*.

0100

00

02

0

002

ee

e

e

en

z

z

z

nf

fnz

nf

nf

z

BAzz

2

completamos la matriz de transformación:

Proyección perspectiva

S. Castro, D. Urribarri CG 2015

Page 12: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

12

Si además el volumen de vista tanto en x como en y lo ponemos entre -1 y 1 tenemos

Para pasar entonces a coordenadas normalizadas del dispositivo (en algunos casos denominadas coordenadas 3D de la pantalla) dividimos

por w=-ze y entonces tenemos:

1

1e

e

e

n

n

n

z

z

z

y

z

x

w

ww

zw

yw

x

z

y

x

Proyección perspectiva

e

e

e

e

e

e

e

e

w

z

y

x

nf

fn

nf

nfn

n

w

z

y

x

nf

fn

nf

nfbt

bt

bt

nlr

lr

lr

n

w

z

y

x

*.

0100

200

000

000

*.

0100

200

02

0

002

S. Castro, D. Urribarri CG 2015

La matriz MProy es la que se setea, por ejemplo en glm, mediante la primitiva glm::mat4 glm::frustum (l, r,b,t,n,f).

En lugar de ésta puede usarse perspective().

Proyección perspectiva

.

0100

200

02

0

002

Pr

nf

fn

nf

nfbt

bt

bt

nlr

lr

lr

n

M oy

Esta primitiva setea la misma matriz luego de calcular los valores de r, l, t y b mediante:

glm::mat4 perspective (ángulo, aspecto, n, f)

-rlaspectoarrr

tbangulont

2/180

tan

Observar

S. Castro, D. Urribarri CG 2015

Proyección perspectiva

e

e

nz

nf

fnz

nf

nf

z

2

S. Castro, D. Urribarri CG 2015

Veamos la relación que hay entre ze y zn. Esta relación es una ecuación

racional y se ve la relación no lineal entre ze y zn. Esto significa que hay

muy alta precisión en el plano n pero poca en el plano f. Si el rango [-n, -f]

se agranda, se origina un problema de precisión en profundidad: un

pequeño cambio de ze cerca del plano f no afecta el valor de zn. La

distancia entre n y f debe ser la menor posible para minimizar la precisión

en profundidad.

Proyección perspectiva

A partir de este punto estamos en el espacio de clipping. Luego de

realizar el clipping debemos ver cuáles son los objetos que se ven y

mapearlos al viewport. Tendremos entonces nuestra vista en 2D.

S. Castro, D. Urribarri CG 2015

Pipeline 3D

S. Castro, D. Urribarri CG 2015

Espacios

Objeto Mundo 3D Ojo Clipping CND Pantalla

Modelado Ubicación Especificación

en el Mundo de la cámara

Rotar Rotar Escalar División w Transformación

Trasladar Trasladar Trasladar Viewport

Perspectiva

Clipping CND Pantalla 3D

Escalar

Rotar Clipping

S. Castro, D. Urribarri CG 2015

Page 13: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

13

Pipeline 3D

S. Castro, D. Urribarri CG 2015

Espacios

Objeto Mundo Ojo Clipping

Modelado Ubicación Especificación

en el Mundo de la cámara

Rotar Rotar Escalar

Trasladar Trasladar Trasladar

Perspectiva

Clipping

Escalar

Rotar

Pipeline 3D

S. Castro, D. Urribarri CG 2015

Espacios

Objeto Mundo 3D Ojo Clipping CND 3D Pantalla

Modelado Ubicación Especificación

en el Mundo de la cámara

Rotar Rotar Escalar División w Proyección

Trasladar Trasladar Trasladar a pantalla 2D

Perspectiva

Clipping CND Pantalla

Escalar

Rotar

Vimos que:

Clipping es el proceso de determinar qué primitivas y partes de

primitivas caen dentro del volumen de clipping definido por el programa

de aplicación.

Clipping

S. Castro, D. Urribarri CG 2015

Generalmente, cualquier proce-

dimiento que identifica aquellas

porciones de una escena que

están dentro o fuera de una

región especificada se denomina

algoritmo de clipping.

La región contra la cual se clipea

un objeto se denomina ventana

de clipping.

En lugar de clipear contra las rectas

que constituyen los bordes de la

ventana, clipearemos los objetos

contra los planos limitantes del

volumen de vista.

Clipping en 3D

S. Castro, D. Urribarri CG 2015

El clipping tridimensional identifica y guarda todo lo que se

encuentra dentro del volumen de vista para mostrarlo

posteriormente. Se descartan todos los objetos y/o partes de los

mismos que estén fuera de dicho volumen.

El clipping en 3D puede llevarse a cabo usando extensiones del

clipping en 2D.

Para clipear una línea contra el volumen de vista, debemos chequear la

posición relativa de la misma con respecto a los planos que constituyen el

volumen de vista.

Si suponemos que un plano limitante del volumen de vista está dado por:

Ax + By + Cz + D = 0

Un punto extremo (x1,y1,z1) de un segmento de línea estará fuera del volumen

de vista si:

Clipping en 3D

Ax1 + By1 + Cz1 +D > 0

Y estará dentro del mismo si:

Ax1 + By1 + Cz1 + D < 0

El punto (x1,y1,z1) de intersección será aquél que verifique que:

Ax1 + By1 + Cz1 + D = 0

S. Castro, D. Urribarri CG 2015

Para clipear una superficie poligonal podemos:

Clipear los lados del polígono para detectar los casos en que el

mismo esté completamente afuera o completamente adentro del

volumen de vista. Si está completamente adentro, guardamos el

polígono para dibujarlo; si está completamente afuera, lo

descartamos.

Si el polígono está parcialmente adentro, debemos calcular las

intersecciones con los planos limitantes.

Clipping en 3D

S. Castro, D. Urribarri CG 2015

Page 14: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

14

Veamos cuándo y cómo realizamos el clipping:

¿Antes de la transformada en perspectiva?

En este caso debemos clipear contra el frustum

de vista. Luego debemos realizar la

transformación en perspectiva, luego la

proyección y luego dibujar en la ventana

Clipping en 3D

S. Castro, D. Urribarri CG 2015

¿Después de la transformada en perspectiva?

En coordenadas homogéneas

debemos clipear contra los planos

-w x w

-w y w

-w z w

En coordenadas 3D de la pantalla

debemos clipear contra los planos

-1 x 1

-1 y 1

-1 z 1

¿Es indistinto clipear en cualesquiera de estos dos espacios?

¿Por qué?

En este caso tenemos dos opciones; podemos hacerlo en coordenadas 3D

de la pantalla o en coordenadas homogéneas.

Clipping en 3D

S. Castro, D. Urribarri CG 2015

Entonces debemos clipear teniendo en cuenta que:

- El clipping se realiza en coordenadas homogéneas, es decir,

antes de dividir por w y después de realizar la transformación de

proyección perspectiva.

- El volumen de vista contra el que se efectúa el clipping está dado

por:

-w x w -w y w -w z w

Clipping en 3D

S. Castro, D. Urribarri CG 2015

Algoritmo de Clipping de

Cohen-Sutherland

( 3D)

S. Castro, D. Urribarri CG 2015

En este caso se dividirá el espacio en 27 regiones y usaremos un

código de 6 bits para chequear si los puntos están dentro o fuera del

volumen de vista. Esto se hará para cada uno de los puntos extremos

de los segmentos de recta.

Es decir que debe determinarse la ubicación de los puntos con

respecto al volumen de vista:

-w x w

-w y w

-w z w

Algoritmo de Cohen-Sutherland

S. Castro, D. Urribarri CG 2015

El volumen de vista contra el que se efectúa el clipping está dado

por:

-w x w -w y w -w z w

Clipping en 3D

Y veremos que siempre podemos

clipear en la región en que w>0.

S. Castro, D. Urribarri CG 2015

Page 15: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

15

Los valores guardados se usarán para determinar el punto de intersección

con el plano correspondiente.

Se generarán conjuntos que nos dicen cómo está ubicado un punto con

respecto al volumen de vista.

Bit nº Ubicación Se guarda

1 w + x 0

2 w - x 0

3 w + y 0

4 w - y 0

5 Detrás del plano de

adelante w+z 0

6 Delante del plano de

atrás w - z 0

Algoritmo de Cohen-Sutherland

S. Castro, D. Urribarri CG 2015

Se debe calcular la intersección de la línea a clipear con el plano que

corta. Se calcula el valor de t de la intersección. Sólo cuando se ha visto

que la línea debe clipearse se hallan las coordenadas del o de los puntos

de intersección.

La intersección de una recta dada en forma paramétrica

)()( 2211

11

xwxw

xwt

)()(

)()(

212111

121121

xxtwwtxw

xxtxwwtw

)( 121 pptpp

con el plano w= -x (w+x=0) es:

Algoritmo de Cohen-Sutherland

Se guardó

w + x

w - x

w + y

w - y

w+z

w - z

S. Castro, D. Urribarri CG 2015

iiiii wzyxp ,,,

Veamos el algoritmo. Calculamos

Código punto 1 Código punto 2

Cp1,1 w1 + x1 Cp2,1 w2 + x2

Cp1,2 w1 – x1 Cp2,2 w2 – x2

Cp1,3 w1 + y1 Cp2,3 w2 + y2

Cp1,4 w1 – y1 Cp2,4 w2 – y2

Cp1,5 w1+z1 Cp2,5 w2 + z2

Cp1,6 w1 – z1 Cp2,6 w2 – z2

Se calcula:

c1 (1 a 6) nº de bits para los cuales Cp1,nº bit< 0

c2 (1 a 6) nº de bits para los cuales Cp2,nº bit < 0

)()( 2211

11

xwxw

xwt

S. Castro, D. Urribarri CG 2015

Algoritmo de Cohen-Sutherland Algoritmo de Cohen-Sutherland

Para identificar rápidamente las líneas que están dentro y fuera de la

ventana, les asigna un código de región de 4 bits (en 2D) o de 6 bits

(en 3D) a cada uno de los puntos extremos del segmento de recta

Los bits son puestos en 1 (uno) de acuerdo a:

bit 1 punto por arriba de la ventana

bit 2 punto por debajo de la ventana

bit 3 punto a la derecha de la ventana

bit 4 punto a la izquierda de la ventana

bit 5 punto adelante de la ventana

bit 6 punto atrás de la ventana

Código

S. Castro, D. Urribarri CG 2015

Algoritmo de Cohen-Sutherland

1001 1000 1010

0001 0010

0101 0110 0100

0000

Si Código1=0 y Código2=0

entonces

el segmento de línea está dentro de la ventana

sino

sino

si (Código1 and Código2)0

entonces el segmento de línea está fuera de la ventana

no sabemos

S. Castro, D. Urribarri CG 2015

c1 Código del punto p1 , c2 Código del punto p2

si c1 es vacío y c2 es vacío

entonces Línea trivialmente aceptada

sino si (c1 and c2) vacío

entonces Línea trivialmente rechazada

sino

t1 0; t2 1

para nº bit: 1 6

si (c p1,nº bit< 0) or (c p2,nº bit< 0)

entonces

t c p1,nº bit/(c p1,nº bit - c p2,nº bit)

si c p1,nº bit<0

entonces

si t > t1 entonces t1 t

sino

si t < t2 entonces t2 t

si t2 t1

entonces

dx x2-x1; dy y2-y1; dz z2-z1;

si t2 1 entonces x2 x1 + t2*dx; …

si t1 0 entonces x1 x1 + t1*dx; …

Algoritmo de Cohen-Sutherland

S. Castro, D. Urribarri CG 2015

Page 16: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

16

Este algoritmo que vimos realiza el clipping en la región de los w>0.

De acuerdo a lo visto se debe considerar también el clipping de puntos con

w<0. Esto se realiza de acuerdo a:

- p1 y p2 con w>0 -w x,y,z w

- p1 y p2 con w<0 -w x,y,z w con - p1 y - p2

- p1 y p2, uno con w>0 y -w x,y,z w con p1 y p2

otro con w<0 -w x,y,z w con - p1 y - p2

Algoritmo de Cohen-Sutherland

S. Castro, D. Urribarri CG 2015

Pipeline 3D

S. Castro, D. Urribarri CG 2015

Espacios

Objeto Mundo 3D Ojo Clipping CND Pantalla

Modelado Ubicación Especificación

en el Mundo de la cámara

Rotar Rotar Escalar División w Transformación

Trasladar Trasladar Trasladar Viewport

Perspectiva

Clipping CND Pantalla 3D

Escalar

Rotar

Pipeline 3D

S. Castro, D. Urribarri CG 2015

Espacios

Objeto Mundo 3D Ojo Clipping CND Pantalla

Rotar Rotar Escalar División w Transformación

Trasladar Trasladar Trasladar Viewport

Perspectiva

Rasterización

Operaciones

sobre frag

Operaciones

raster

Mostrar fb

Escalar

Rotar

Bibliografía

S. Castro, D. Urribarri CG 2015

ACM SIGGRAPH Proceedings

Agoston, M. Computer graphics & geometric modeling / Mathematics,

Springer-Verlag London Ltd., 2005.

Angel, E., Shreiner, D. Interactive Computer Graphics: A top-down

approach with shader-based OpenGL, Addison Wesley, 2011, 6th.

Ed.

Foley, J., van Dam, A., Feiner, S. y Hughes, J., Computer Graphics.

Principles and Practice, Addison Wesley, 1992, 2nd Edition.

Hearn, D., Baker, M.P., Computer Graphics, C Version, Prentice Hall

Inc., 2003, 3rd Edition.

Hill, F. Jr, Kelley, S., Computer Graphics Using OpenGL, Prentice Hall.,

2006, 3rd Ed.

Fin

Coordenadas

Homogéneas

S. Castro, D. Urribarri CG 2015

),,(

),,(

2222

1111

wyxp

wyxp

H

H

Coordenadas homogéneas

En el espacio homogéneo 2D

1,,

1,,

2

2

2

22

1

1

1

11

w

y

w

xp

w

y

w

xp

S. Castro, D. Urribarri CG 2015

Page 17: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

17

),,(

),,(

2222

1111

wyxp

wyxp

1t0 121 pptpp

Coordenadas homogéneas

En el espacio homogéneo 2D

S. Castro, D. Urribarri CG 2015

Homogéneas

Homogéneas

proyectadas Cartesianas

Coordenadas homogéneas

S. Castro, D. Urribarri CG 2015

Coordenadas homogéneas

S. Castro, D. Urribarri CG 2015

Porción visible

de la pantalla

Coordenadas homogéneas

S. Castro, D. Urribarri CG 2015

Coordenadas homogéneas

? S. Castro, D. Urribarri CG 2015

Coordenadas homogéneas

S. Castro, D. Urribarri CG 2015

Page 18: Introducción Pipeline 3Dcs.uns.edu.ar/cg/clasespdf/3-Pipe3D.pdf · Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular

18

Coordenadas homogéneas

S. Castro, D. Urribarri CG 2015