Está en la página 1de 61

1

Escenas 3D
Dpto.deCienciaseIngenieradelaComputacin
UniversidadNacionaldelSur
La generacin de un mundo 3D requiere 3 componentes esenciales:
El mundo 3D de los objetos
Introduccin
j
La o las fuentes de luz
La cmara o el ojo que observa la escena
Al mundo virtual que generemos lo denominaremos escena y a los
objetos en la misma, actores.
Una cmara especifica nuestra posicin de vista y ciertos
parmetros de vista (longitud focal tamao de la imagen etc ) parmetros de vista (longitud focal, tamao de la imagen, etc.).
Usaremos transformaciones afines 3D para posicionar y mover
actores y cmaras en la escena.
. VyGLab DCIC - UNS CG 2011
2
Una escena
Introduccin
. VyGLab DCIC - UNS CG 2011
Nos centraremos inicialmente en utilizar objetos simples para poder
definir as todos los elementos constituyentes de una escena.
Introduccin
Posteriormente veremos modelos de objetos ms complejos que nos
permitirirn la generacin de escenas ms ricas.
Las escenas 3D que vamos a construir estn compuestas de objetos
que podemos construir con una gran variedad de tcnicas de
software.
Una vez que los modelos han sido construidos construimos nuestra Una vez que los modelos han sido construidos, construimos nuestra
escena virtual en la que tambin ubicamos las luces y la cmara.
A partir de este momento, comienza el renderizado.
. VyGLab DCIC - UNS CG 2011
3
Pipeline 3D
. VyGLab DCIC - UNS CG 2011
Del mundo 3D a la pantalla
Pipeline 3D
. VyGLab DCIC - UNS CG 2011
4
Miramos la escena
Pipeline 3D
. VyGLab DCIC - UNS CG 2011
Transformacin del Mundo
Esta transformacin orienta los
objetos dentro del espacio del mundo.
Pipeline 3D
Espacio del objeto Espacio del mundo
Escalar, trasladar,
rotar.
. VyGLab DCIC - UNS CG 2011
5
Transformacin de Vista
Esta transformacin mapea
puntos del espacio del mundo en el espacio del ojo.
Pipeline 3D
Espacio del mundo Espacio del ojo
Rotar, trasladar
. VyGLab DCIC - UNS CG 2011
Transformacin de Proyeccin
Esta transformacin mapea el
frustrum de vista al espacio de clipping (cubo que se extiende
de -1 a 1 en x, y y z.
Pipeline 3D
y y
Espacio del ojo Espacio de clipping
Transf. perspectiva,
escalar, trasladar
. VyGLab DCIC - UNS CG 2011
6
Mundo
Ojo
Pipeline 3D
Clipping Pantalla 3D
. VyGLab DCIC - UNS CG 2011
Transformaciones
. VyGLab DCIC - UNS CG 2011
7
Veremos las distintas transformaciones en los distintos espacios del
pipeline 3D
Pipeline 3D
Objeto Mundo Ojo Clipping
. VyGLab DCIC - UNS CG 2011
Transformaciones geomtricas
En este mundo 3D que generaremos, cada objeto se crea en su sistema de
coordenadas local. Por otro lado, su ubicacin en el mundo, est dada por
su posicin en un sistema de coordenadas global: es el sistema de
coordenadas del mundo.
O
m
O
o
Las transformaciones pueden llevarse a cabo sobre los objetos o sobre todo
el ambiente 3D. As tenemos transformaciones locales y transformaciones
globales.
. VyGLab DCIC - UNS CG 2011
8
Transformaciones 3D
Vimos que las transformaciones que le aplicamos a los distintos
objetos pueden utilizarse tanto para posicionar los objetos como
para modelarlos.
Veremos ahora las distintas transformaciones que pueden aplicarse
en 3D.
. VyGLab DCIC - UNS CG 2011
Transformaciones 3D
La especificacin de las transformaciones bsicas en 3D son:
Traslacin Escalado
|
|

| 0 0 1 T
|
|
|
|
|
.
|

\
|
1 0 0 0
1 0 0
0 1 0
0 0 1
z
y
x
T
T
T
. VyGLab DCIC - UNS CG 2011
9
Transformaciones 3D
Rotacin antihoraria alrededor de cada uno de los ejes:
. VyGLab DCIC - UNS CG 2011
Pipeline 3D
Espacios
Objeto Mundo Ojo Clipping
Escalar Rotar Escalar
Trasladar Trasladar Trasladar
Rotar Perspectiva Perspectiva
Modelado Ubicacin Especificacin Especificacin Clipping Clipping
en el Mundo de la cmara de la cmara
. VyGLab DCIC - UNS CG 2011
10
El pipeline grfico en OpenGL
Pipeline 3D
Matriz
Modelview
Matriz
Proyeccin
Divisin
Perspectiva
Matriz
Viewport
Clip
Normalizadas
del dispositivo
Ojo Clipping Ventana
Coordenadas
Clipping
. VyGLab DCIC - UNS CG 2011
Las cmaras virtuales y los
puntos de vista
. VyGLab DCIC - UNS CG 2011
11
Una vez que se han ubicado los objetos en la escena y se han
posicionado las distintas fuentes de luz, la forma en que la
fotografiemos puede tener tanto impacto en la generacin de la
misma como las decisiones que tomamos durante el proceso de
Introduccin
q p
composicin 3D.
Para fotografiar una escena 3D debemos elegir el punto de vista
desde el cual la observamos y tambin la cmara.
. VyGLab DCIC - UNS CG 2011
Analoga con
la cmara
. VyGLab DCIC - UNS CG 2011
12
Pipeline 3D
Espacios
Objeto Mundo Ojo Clipping
Escalar Rotar Escalar
Trasladar Trasladar Trasladar
Rotar Perspectiva Perspectiva
Modelado Ubicacin Clipping Clipping
en el Mundo
Especificacin Especificacin
de la cmara de la cmara
. VyGLab DCIC - UNS CG 2011
La Cmara La Cmara
. VyGLab DCIC - UNS CG 2011
13
Al igual que una cmara real, una cmara virtual saca
una foto de la escena. Las cmaras son un elemento
esencial en el proceso de rendering porque definen qu
vemos en una toma, desde dnde lo vemos y cmo lo
La Cmara
y
vemos.
. VyGLab DCIC - UNS CG 2011
En general, todos los programas de rendering 3D proveen una
cmara por defecto o estndar.
Esta cmara tiene un sistema ptico: filtros, lentes y apertura. La
La Cmara
p y p
superficie de proyeccin puede ser plana o curva y estar orientada a
distintos ngulos con respecto a la luz incidente, la cmara o el ojo.
. VyGLab DCIC - UNS CG 2011
14
La Cmara
La cmara oscura
Modelo abstracto de la cmara
Modelado de la geometra de la
proyeccin perspectiva
Usado en la mayora de las
aplicaciones de CG
. VyGLab DCIC - UNS CG 2011
Definicin de la Cmara
. VyGLab DCIC - UNS CG 2011
15
Un modelo de cmara sinttica debe tener informacin de:
Posicin
Orientacin
Definicin de la Cmara
Orientacin
Campo de visin (ngulo de ancho, normal)
Profundidad de Campo (Plano cercano y lejano)
Distancia Focal
Desviacin de los planos vista/pelcula (si no es normal a la
direccin de vista produce proyecciones oblicuas)
Proyeccin perspectiva o paralela (cmara cerca de los y p p p (
objetos o a distancia infinita)
. VyGLab DCIC - UNS CG 2011
Para definir un modelo de cmara sinttica debemos especificar:
Definicin de la Cmara
Posicin de la cmara (desde dnde se est mirando)
VanDam
El vector look at (mirando hacia) especifica en qu direccin apunta la
cmara
La orientacin de la cmara est determinada por el vector look at y el
ngulo en el que est rotada la cmara con respecto a ese vector, es
decir, la direccin del vector up.
. VyGLab DCIC - UNS CG 2011
16
Posicin
Definicin de la Cmara
Determinar la posicin es anlogo
a decidir el punto desde el cual
tomar la foto.
VanDam
La posicin 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 grfico.
. VyGLab DCIC - UNS CG 2011
Orientacin
La orientacin se especifica
Definicin de la Cmara
La orientacin por defecto es la de las z (positivas o negativas segn el sistema
de coordenadas sea de mano izquierda o de mano derecha) y la orientacin up
apunta en la direccin positiva de las y (hacia arriba)
mediante un punto 3D, que es el
punto al que se est mirando y
un ngulo de rotacin alrededor
de esa direccin (punto al que se
mira punto de posicin).
VanDam
apunta en la direccin positiva de las y (hacia arriba).
La cmara de la figura est localizazda en el origen y est dirigida hacia un
punto arbitrario con una direccin up tambin arbitraria.
. VyGLab DCIC - UNS CG 2011
17
Determinaladistorsinenperspectiva;desde0enunaproyeccinparalelaa
muchaenloslentesgranangular.
Angulodevisin
Definicin de la Cmara
E f i d l d i l h l l Si
VanDam
En un frustum, se tienen en cuenta dos ngulos de vista: en lo ancho y en lo alto. Si
se especifica el ngulo de Elevacin el otro ngulo se determina de (Aspect ratio *
ngulo de Elevacin)
Elegir estos ngulos es anlogo a lo que hace el fotgrafo eligiendo un tipo especfico
de lente (por ej. Un gran angular o un telezoom). Veremos esto en ms detalle
cuando veamos tipos de lentes.
. VyGLab DCIC - UNS CG 2011
Distanciafocal
Definicin de la Cmara
La distancia focal tambin se denomina profundidad de campo, ya que se determina
a qu distancia estn los objetos que deben verse en foco.
. VyGLab DCIC - UNS CG 2011
18
Elvolumencomprendidoentrelosplanoscercanoylejanodefineloqueve
lacmara.
PlanosdeClippingCercanoyLejano
Definicin de la Cmara
La posicin de dichos planos se define normalmente a lo largo del vector de look at.
Los objetos que aparecen fuera del volumen del vista no sern dibujados.
Los objetos que intersectan el volumen del vista sern recortados o clipeados.
VanDam
. VyGLab DCIC - UNS CG 2011
Por qu tener un plano de clipping cercano?
Los objetos que estn demasiado cerca de la cmara no quieren dibujarse porque
bloquearan al resto y seguramente estaran muy distorsionados.
T i dib j l bj t t d t d l
Definicin de la Cmara
Tampoco se quieren dibujar los objetos que estn detrs de la cmara ya que uno no
espera verlos. Si uno decidiera dibujar lo que est detrs de la cmara seguramente
apareceran distorsionados por la perspectiva.
Por qu tener un plano de clipping lejano?
Los objetos muy alejados de la cmara podran no querer dibujarse porque apareceran
muy pequeos para ser visualmente significativos; por otro lado tomara demasiado muy pequeos para ser visualmente significativos; por otro lado tomara 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.
. VyGLab DCIC - UNS CG 2011
19
ProyeccinParalela:VolumendeVista
Definicin de la Cmara
La limitacin del volumen de vista es til para eliminar objetos extraos.
Los ngulo de elevacin y de ancho son cero.
VanDam
. VyGLab DCIC - UNS CG 2011
ProyeccinPerspectiva:VolumendeVista
Definicin de la Cmara
La limitacin del volumen de vista es til para eliminar objetos tanto
cercanos como lejanos.
VanDam
. VyGLab DCIC - UNS CG 2011
20
Tipos de Lentes Tipos de Lentes
. VyGLab DCIC - UNS CG 2011
Los lentes de la cmara, reales o simulados, son tal vez la
componente ms importante en cualquier sistema de cmara porque
definen la forma en que el mundo 3D se proyecta en la lente o plano
de la imagen.
Tipos de Lentes
g
En las cmaras fotosensibles, la pelcula est ubicada exactamente
en el plano de proyeccin. El plano de proyeccin de las cmaras
simuladas en la computadora pueden posicionarse en cualquier
lugar de la escena 3D.
Los fotgrafos se refieren a los lentes de una cmara en trmino de
su longitud focal porque esta caracterstica controla la forma en la su longitud focal porque esta caracterstica controla la forma en la
que los objetos 3D son vistos por la cmara.
. VyGLab DCIC - UNS CG 2011
21
La longitud focal, como ya dijimos, es la distancia desde el punto de
vista al plano focal.
La mayora de los lentes tiene longitud focal fija, excepto los zooms
Tipos de Lentes
y g j p
que contienen mltiples lentes y por lo tanto son capaces de un
rango de longitud focal variable.
La nomenclatura estndar para la longitud focal de los lentes se
expresa en mm. Hay una gran variedad de lentes. Los lentes
caractersticos estndar son los lentes normales de 50 55 mm, el
gran angular de 28 mm y el telefoto de 135 mm.
A continuacin veremos distintas fotos tomadas con distintos lentes.
. VyGLab DCIC - UNS CG 2011
Tipos de Lentes
. VyGLab DCIC - UNS CG 2011
22
Tipos de Lentes
. VyGLab DCIC - UNS CG 2011
Imgenes vistas por una cmara ubicada dentro de una esfera, con
seis lentes diferentes.
Tipos de Lentes
. VyGLab DCIC - UNS CG 2011
23
La Cmara en OpenGL La Cmara en OpenGL
. VyGLab DCIC - UNS CG 2011
En OpenGL distinguimos entre
Viewing: Ubicacin de la cmara
La Cmara en OpenGL
Proyeccin: Descripcin del frustrum
de visin de la cmara (y, en
consecuencia, de la transformacin
de proyeccin)
Divisin perspectiva: Clculo de los
puntos 3D a partir de las
coordenadas homogneas coordenadas homogneas
. VyGLab DCIC - UNS CG 2011
24
Para ubicar la cmara debemos posicionarla en el espacio del mundo
como si fuera una cmara real. Para ello debemos:
Identificar el lugar donde la cmara est ubicada, es decir el
punto donde est el ojo (eye point)
La Cmara en OpenGL
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).
. VyGLab DCIC - UNS CG 2011
OpenGL provee una funcin que implementa la especificacin de
viewing:
La Cmara en OpenGL
Estos parmetros estn en coordenadas del mundo.
. VyGLab DCIC - UNS CG 2011
25
En la Proyeccin el usuario debe especificar la ventana 3D de visin. En
la proyeccin paralela (u ortogrfica) el usuario especifica el frustrum de
visin ortogrfico, es decir,
La Cmara en OpenGL
En OpenGL esto puede hacerse mediante:
Una versin 2D de esta especificacin es:
. VyGLab DCIC - UNS CG 2011
La Cmara en OpenGL
En la proyeccin perspectiva el frustrum de visin que se especifica es:
La funcin que provee OpenGL para especificar este frustrum de
visin es:
Otra funcin de OpenGL para este fin es:
Donde fov es el ngulo de visin vertical y aspect es la relacin
ancho/alto de la imagen en el plano near.
. VyGLab DCIC - UNS CG 2011
26
Proyecciones Proyecciones
. VyGLab DCIC - UNS CG 2011
La creacin del espacio tridimensional pretenda generarse mediante formas
volumtricas redondeadas por el sombreado; la profundidad espacial era
sugerida mediante lneas convergentes.
Esto no era hecho sistemticamente y las lneas no convergan a un solo punto
Antecedentes
de fuga.
Giotto,FranciscanRuleApproved,Ass,Baslica,c.1295-1300
. VyGLab DCIC - UNS CG 2011
27
Alberti public el primer tratado de perspectiva, Della Pittura, en 1435.
Una pintura es la interseccin de una pirmide visual a una determinada
distancia, con un centro fijo y una posicin definida de la luz, representada
Antecedentes
distancia, con un centro fijo y una posicin definida de la luz, representada
artsticamente con lneas y colores en una dada superficie. (Leono Battista
Alberti (1404-1472), Della Pintura, pp. 32-33)
VanDam
. VyGLab DCIC - UNS CG 2011
Alberti public el primer tratado de perspectiva, Della Pittura, en 1435.
Una pintura [el plano de proyeccin] es la interseccin de una pirmide visual
[volumen de vista] a una determinada distancia, con un centro fijo [centro de
i ] i i d fi id d l l t d t ti t
Antecedentes
proyeccin] y una posicin definida de la luz, representada artsticamente con
lneas y colores en una dada superficie [el rendering]. (Leono Battista Alberti
(1404-1472), Della Pintura, pp. 32-33)
VanDam
. VyGLab DCIC - UNS CG 2011
28
Antecedentes
La primera pintura (La
Trinidad con la Virgen, San
Juan y los Donantes) hecha
en perspectiva. Masaccio,
1427.
. VyGLab DCIC - UNS CG 2011
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)
Antecedentes
j p g ( )
La relacin de tringulos: CB es a CD como AB es a ED
VanDam
. VyGLab DCIC - UNS CG 2011
29
Albrecht Drer (1471-1528) describe en su tratado el concepto de tringulos
similares tanto geomtrica como mecnicamente.
Antecedentes
Albrecht Drer, Artista dibujando un Lad, 1525
. VyGLab DCIC - UNS CG 2011
Antecedentes
La perspectiva se formaliza. Da Vinci, alrededor de
1498.
. VyGLab DCIC - UNS CG 2011
30
Una proyeccin transforma puntos de un sistema de coordenadas de
dimensin n a uno de dimensin menor que n.
Proyecciones
. VyGLab DCIC - UNS CG 2011
La proyeccin de un objeto 3D est definida por los
proyectores que emanan de un centro de proyeccin
pasando a travs de cada punto del objeto e
Proyecciones
pasando a travs de cada punto del objeto e
intersectando un plano de proyeccin, en el que se
forma la proyeccin del objeto.
Cuando los proyectores son rectas y la
proyeccin se realiza sobre un plano, la
proyeccin se denomina geomtrica plana.
. VyGLab DCIC - UNS CG 2011
31
Una proyeccin transforma puntos de un sistema de coordenadas de
dimensin n a uno de dimensin menor que n.
Proyecciones planas
La proyeccin de un objeto 3D est definida por los proyectores que
emanan de un centro de proyeccin pasando a travs de cada punto
del objeto e intersectando un plano de proyeccin, en el que se forma la
proyeccin del objeto.
. VyGLab DCIC - UNS CG 2011
Las principales proyecciones geomtricas planas son:
Proyecciones planas
Perspectiva: determinada por el
Centro de Proyeccin (COP)
Paralela: determinada por la
Direccin de Proyeccin (DOP); los
proyectores son paralelos El COP
t l
En general, una proyeccin est determinada por:
- Dnde est el plano de proyeccin relativo a los ejes principales del objeto
- El ngulo de los proyectores con el plano de proyeccin
est en el
. VyGLab DCIC - UNS CG 2011
32
Hay distintos tipos de proyecciones geomtricas planas:
Proyecciones planas
Las proyecciones paralelas se usan en general para ingeniera y arquitectura
porque conservan las medidas.
Las proyecciones perspectiva imitan nuestros ojos o una cmara y son ms
naturales.
. VyGLab DCIC - UNS CG 2011
Una cmara virtual usualmente ofrece no slo la proyeccin perspectiva,
sino tambin la proyeccin paralela. En esta proyeccin, todas las lneas y
planos paralelos de los objetos siguen siendo paralelos en la proyeccin; el
tamao de los objetos permanece constante a medida que los objetos se
alejan del plano de la imagen
Proyeccin paralela
alejan del plano de la imagen.
. VyGLab DCIC - UNS CG 2011
33
Hay distintos tipos de proyecciones paralelas geomtricas planas:
Paralela
Lneas de proyeccin paralelas
entre s
Proyecciones planas
entre s
Oblicua
Lneas de proyeccin no son
perpendiculares al plano de
proyeccin
Ortogrfica
Lneas de proyeccin son
perpendiculares al plano de
proyeccin
Planos de elevacin Plano de
proyeccin perpendicular a uno
de los ejes de los ejes
Axonomtrica Plano de
proyeccin orientado
arbitrariamente
. VyGLab DCIC - UNS CG 2011
Proyeccinortogrficamultivista
Proyecciones planas
. VyGLab DCIC - UNS CG 2011
34
Proyeccin axonomtrica
El plano de proyeccin es perpendicular a la direccin de
proyeccin pero no es paralelo a los planos coordenados
Proyecciones planas
. VyGLab DCIC - UNS CG 2011
Proyeccin oblicua
El plano de proyeccin es paralelo a los planos coordenados pero la
direccin de proyeccin no es perpendicular a ste.
Los proyectores forman un ngulo oblicuo con el plano de
i
Proyecciones planas
proyeccin
VanDam
Carlbom
. VyGLab DCIC - UNS CG 2011
35
Una cmara real siempre crea una proyeccin perspectiva. En una
proyeccin perspectiva, de acuerdo a como sta es creada por la cmara, se
representa un solo punto de vista, los objetos se achican a medida que estn
ms lejos y las lneas paralelas que no son paralelas al plano de la imagen
convergen a los puntos de fuga.
Proyecciones planas
. VyGLab DCIC - UNS CG 2011
Proyeccinperspectiva
Proyecciones planas
Perspectiva de un punto
Perspectiva de tres puntos
Perspectiva de dos puntos
. VyGLab DCIC - UNS CG 2011
36
Proyecciones planas
Proyeccinperspectiva
Perspectiva de un punto
Perspectiva de tres puntos
Perspectiva de dos puntos
Perspectiva de tres puntos
. VyGLab DCIC - UNS CG 2011
Proyecciones Perspectiva
de Objetos 3D
. VyGLab DCIC - UNS CG 2011
37
Pipeline 3D
Espacios
Objeto Mundo Ojo Clipping
Escalar Rotar Escalar
Trasladar Trasladar Trasladar
Rotar Perspectiva Perspectiva
Modelado Ubicacin Especificacin Clipping Clipping
en el Mundo de la cmara
. VyGLab DCIC - UNS CG 2011
El pipeline grfico en OpenGL
Pipeline 3D
Matriz
Modelview
Matriz
Proyeccin
Divisin
Perspectiva
Matriz
Viewport
Clip
Normalizadas
del dispositivo
Ojo Clipping Ventana
Coordenadas
Clipping
. VyGLab DCIC - UNS CG 2011
38
Derivacin de la perspectiva
En la proyeccin perspectiva, un punto 3D en el frustrum de visin
(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.
. VyGLab DCIC - UNS CG 2011
Transformacin de un punto
Por tringulos similares podemos calcular cmo escalar las
coordenadas x e y.
e
e
p
e
e
p
e
e
p
e
e
p
z
y
n y
z
y
n
y
z
x
n x
z
x
n
x
= =

= =


. VyGLab DCIC - UNS CG 2011
39
Transformacin de un punto
e
p
e
p
e
p
e
p
z
y
n y
z
y
n
y
z
x
n x
z
x
n
x
= =

= =


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

| y x
e e e e
z z n z z n
( )
|
|
.
|

\
|

= =
e
e
e
e
p p p
z
y
n
z
x
n y x p , ,
OpenGL usa el sistema de coordenadas de mano derecha para el
mundo.
. VyGLab DCIC - UNS CG 2011
Transformacin de un punto
e
e
e
e
p
e
e
p
e
e
e
e
p
e
e
p
z
y
n
z
y
n y
z
y
n
y
z
x
n
z
x
n x
z
x
n
x

= = =

= = =


Esta es claramente una transformacin no lineal. Podemos dividirla en
dos partes: una lineal seguida de una no lineal.
Transformaciones
) 1 ( ) 1 (
?
z y x z y x T =
) 1 , , , ( ) , , , (
) , , , ( ) 1 , , , (
) 1 , , , ( ) 1 , , , (
n n n lineal No
e e e lineal
n n n e e e
z y x w z y x T
w z y x z y x T
z y x z y x T
=
=
=
. VyGLab DCIC - UNS CG 2011
40
Homogneas
Homogneas
proyectadas
Cartesianas
Coordenadas homogneas
. VyGLab DCIC - UNS CG 2011
Transformaciones
Transformacin de un punto
) 1 , , , ( ) 1 , , , (
?
n n n e e e
z y x z y x T =
Transf. Lineal
(
(

(
(

e
x x
) 1 , , , ( ) , , , (
) , , , ( ) 1 , , , (
) , , , ( ) , , , (
n n n lineal No
e e e lineal
n n n e e e
z y x w z y x T
w z y x z y x T
y y
=
=
e
e
p
e
e
p
z
y
n y
z
x
n x = =
Transf. No Lineal
1 = = = = =
w
w
w
w
z
z
w
y
y
w
x
x
n n n n
(
(
(
(

=
(
(
(
(

e
e
e
oy
w
z
y
M
w
z
y
*
Pr
. VyGLab DCIC - UNS CG 2011
41
Veamos ent onces como definimos la t ransformacin lineal, es
decir la M
Proy
( ( x x
(
e
p
e
p
y
n y
x
n x = =
Proyeccin perspectiva
(
(
(
(

=
(
(
(
(

e
e
e
e
oy
w
z
y
x
M
w
z
y
x
*
Pr
(
(
(
(

= .
... ... ... ...
... ... ... ...
... ... ... ...
... ... ... ...
Pr oy
M
Podemos est ablecer que la component e w en est e espacio
int ermedio es z
e
. Ent onces, la cuart a fila de la mat riz es
e
p
e
p
z z
( 0, 0, - 1, 0) .
(
(
(
(

(
(
(
(

=
(
(
(
(

e
e
e
e
w
z
y
x
w
z
y
x
* .
0 1 0 0
... ... ... ...
... ... ... ...
... ... ... ...
. VyGLab DCIC - UNS CG 2011
Buscamos ahora una expresin que nos permit a encont rar la
t ransformacin lineal para x y para y. Sabemos que debemos
t ener en cuent a las relaciones lineales [l,r][-1,1] y [b,t][-1,1].
( ) 2 1 1 r
Proyeccin perspectiva
( )

2
1 *
1 1
| | +

= +

=
l r
r
x
l r
x
p n
l r
l r
l r
x
x
l r
l r
r-l
r
-
p
n

+
= =
2

2
1 |
. VyGLab DCIC - UNS CG 2011
42
Mapeamos ahora y
p
con [b,t][-1,1].
Proyeccin perspectiva
( )

2
1 *
1 1
| | +

= +


=
b t
r
y
b t
y
p n
b t
b t
b t
y
y
b t
b t
b t
t
-
p
n

+
=

=
2

2
1 |
Dado que conocemos el mapeo y que sabemos que para pasar
del espacio int ermedio a las coordenadas normalizadas del
disposit ivo debemos dividir por w= - z
e
veamos ahora cmo
obt enemos x e y.
. VyGLab DCIC - UNS CG 2011
Sabemos que:
b t
b t
b t
y
y
p
n

=
2

l r
l r
l r
x
x
p
n

=
2

Proyeccin perspectiva
y reemplazando:
e
e
p
z
x
n x

=
e
e
p
z
y
n y

=
e
e
p
n
l r
l r
l r
z
nx
l r
l r
l r
x
x

=
2
2
e n
z w
x
x = =
( )( )
( )
e e e e
e
e
e
e
e
e
e
e
z x z z
l r
l r
x
l r
n
z
z
l r
l r
z
x
l r
n
l r
l r
z
l r
nx
l r
l r
z l r
nx
l r l r l r l r
= |
.
|

\
|

+
+


=
2
) (
2
2
2
e n
w
w
x
. VyGLab DCIC - UNS CG 2011
43
Para y efect uamos cculos anlogos y obt enemos:
|
|

| +
+ |
|

| +
+
b t n l r n 2 2
Proyeccin perspectiva
Ent onces complet amos la primera y la segunda fila de la
mat riz
(
(
(

+
( x
l
l r
l
n
x
0 0
2
|
.

\

+

= |
.

\

+

=
e e e e
z
b t
y
b t
y z
l r
x
l r
x
(
(
(
(

(
(
(
(
(
(


=
(
(
(
(

e
e
e
e
w
z
y
x
b t
b t
b t
n
l r l r
w
z
y
x
* .
0 1 0 0
... ... ... ...
0
2
0
. VyGLab DCIC - UNS CG 2011
Es claro que la proyeccin que realizamos descart a la
informacin de profundidad. Necesit amos dicha informacin?
Proyeccin perspectiva
x
y
-z n
P
P
1
P
2
P(x,y)
Qu debemos hacer si queremos mant enerla?
. VyGLab DCIC - UNS CG 2011
44
Mostramos que una proyeccin descarta la informacin de profundidad, pero
vemos que no debemos descartarla completamente ya que ser imposible
saber cules objetos estn adelante y cules atrs.
Proyeccin perspectiva
x
y
-z -n
P
P
1
P
2
P(x,y)
Cuando dos puntos proyecten al mismo punto sobre el plano cercano,
necesitamos saber cul est ms cerca. Debemos contar con un test que nos
permita saber si P
1
oscurece a P
2
o viceversa.
Para cada punto P que proyectamos debemos conocer su profundidad.
. VyGLab DCIC - UNS CG 2011
Para encontrar z
n
debemos trabajar de manera diferente porque z
e
en el
espacio del ojo se proyecta siempre a -n en el plano near. Adems de
poder realizar el test de profundidad, debemos poder realizar la
transformada inversa de la proyeccin. Sabemos que z no depende del
Proyeccin perspectiva
p y S q p
valor de x o de y.
(
(
(
(

(
(
(
(
(
(
(

=
(
(
(
(

e
e
e
w
z
y
x
B A
b t
b t
b t
n
l r
l r
l r
n
w
z
y
x
* .
0 0
0
2
0
0 0
2

(


e
w w
0 1 0 0
e
e
e
e e
e
n e n
z
B Az
z
Bw Az
z
z
z z w
w
z
z

+
=

+
=

= = = ,
. VyGLab DCIC - UNS CG 2011
45
Para encontrar los coeficientes A y B usamos la relacin que existe entre
(z
e
, z
n
), es decir (-n -1) y (-f 1):
e
n
B Az
z
+
=
Proyeccin perspectiva
e
z
y tenemos entonces 2 ecuaciones con dos incgnitas:

+ =
=

+
=
+
=
f Af B
n An B
f
B Af
n
B An

1
1
n f
n f
A n An f Af

+
= = +
n f
fn
n An B A

= =
2
en do reemplazan y
podemos obtener as z en funcin de z
e
. VyGLab DCIC - UNS CG 2011
Reemplazamos en:
e
e
z n f
fn
z
n f
n f
B Az
z =

=
+
=
2
Proyeccin perspectiva
( )
(
(
(
(

(
(
(
(
(
(

=
(
(
(
(

(
(
(
(
(

=
(
(
(
(

e
e
e
e
z
y
x
b t
b t
b t
n
l r
l r
l r
n
z
y
x
b t
b t
b t
n
l r
l r
l r
n
z
y
x
* .
0
2
0
0 0
2
* . 0
2
0
0 0
2
e e e
n
z z z
z

=
completamos la matriz de transformacin:
( )
(
(

(
(
(
(

+
(
(

(
(
(



(
(

e
e
e
e
w
z
n f
fn
n f
n f
w
z
B A
b t b t
w
z
0 1 0 0
2
0 0
0 1 0 0
0 0
. VyGLab DCIC - UNS CG 2011
46
Si adems el volumen de vist a t ant o en x como en y lo ponemos
ent re - 1 y 1 t enemos
Proyeccin perspectiva
(
(
(

(
(
(
(

+
(
e e
x
n
x l r
l r
l r
n
x
0 0 0
0 0
2
Para pasar ent onces a coordenadas normalizadas del disposit ivo ( en
algunos casos denominadas coordenadas 3D de la pant alla) dividimos
por w= - z
e
y ent onces t enemos:
(
(
( )
( )
(
(
(
(

(
(
(
(
(

+ =
(
(
(
(

(
(
(
(
(
(

+

+

=
(
(
(
(

e
e
e
e
e
e
e
e
w
z
y
n f
fn
n f
n f
n
w
z
y
n f
fn
n f
n f
b t
b t
b t
n
l r l r
w
z
y
* .
0 1 0 0
2
0 0
0 0 0
* .
0 1 0 0
2
0 0
0
2
0
p
e
y
(
(
(
(
(
(
(
(

=
(
(
(
(
(
(
(
(

=
(
(
(
(

1
1
e
e
e
n
n
n
z
z
z
y
z
x
w
w
w
z
w
y
w
x
z
y
x
. VyGLab DCIC - UNS CG 2011
Proyeccin perspectiva
( )
(
(
(
(
(
(
(
(

+

+

= .
2
0 0
0
2
0
0 0
2
Pr
n f
fn
n f
n f
b t
b t
b t
n
l r
l r
l r
n
M
oy
La mat riz M
Proy
es la que se set ea en OpenGL mediant e la primit iva
glFrust rum( l, r, b, t , n, f) .
En lugar de st a puede usarse gluPerspect ive( ) .
(

0 1 0 0
f f
gluPerspect ive( ngulo, aspect o, n, f)
Est a primit iva set ea la misma mat riz luego de calcular los valores de
r, l, t y b mediant e:
-r l aspecto arr r
t b angulo n t
= =
= |
.
|

\
|
=

2 /
180
tan
t
Observar
. VyGLab DCIC - UNS CG 2011
47
Proyeccin perspectiva
Veamos la relacin que hay entre z
e
y z
n
. Esta relacin es una ecuacin
racional y se ve la relacin no lineal entre z
e
y z
n
. Esto significa que hay
muy alta precisin en el plano n pero poca en el plano f. Si el rango [-n, -f]
se agranda, se origina un problema de precisin en profundidad: un se ag a da, se o g a u p ob e a de p ec s e p o u d dad u
pequeo cambio de z
e
cerca del plano f no afecta el valor de z
n
. La
distancia entre n y f debe ser la menor posible para minimizar la precisin
en profundidad.
e
e
n
z
n f
fn
z
n f
n f
z

=
2
. VyGLab DCIC - UNS CG 2011
Proyeccin perspectiva
A partir de este punto estamos en el espacio de clipping. Luego de
realizar el clipping debemos ver cules son los objetos que se ven y
mapearlos al viewport. Tendremos entonces nuestra vista en 2D.
. VyGLab DCIC - UNS CG 2011
48
Pipeline 3D
(x
o
,y
o
,z
o
,1)
(x
e
,y
e
,z
e
,1)
(x,y,z,w)
(x
n
,y
n
,z
n
,1)
(x
v
,y
v
)
. VyGLab DCIC - UNS CG 2011
Clipping Clipping
49
Pipeline 3D
Espacios
Objeto Mundo Ojo Clipping
Escalar Rotar Escalar
Trasladar Trasladar Trasladar
Rotar Perspectiva
Modelado Ubicacin Especificacin
en el Mundo de la cmara
Clipping Clipping
. VyGLab DCIC - UNS CG 2011
Vimos que:
Clipping es el proceso de determinar qu primitivas y partes de
primitivas caen dentro del volumen de clipping definido por el programa
Clipping
de aplicacin.
Generalmente, cualquier proce-
dimiento que identifica aquellas
porciones de una escena que
estn dentro o fuera de una
regin especificada se denomina
algoritmo de clipping.
La regin contra la cual se clipea
un objeto se denomina ventana
de clipping.
. VyGLab DCIC - UNS CG 2011
50
Clipping en 3D
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
i t f d di h l mismos que estn fuera de dicho volumen.
El clipping en 3D puede llevarse a cabo usando extensiones del
clipping en 2D.
En lugar de clipear contra las rectas
que constituyen los bordes de la que constituyen los bordes de la
ventana, clipearemos los objetos
contra los planos limitantes del
volumen de vista.
. VyGLab DCIC - UNS CG 2011
Para clipear una lnea contra el volumen de vista, debemos chequear la
posicin relativa de la misma con respecto a los planos que constituyen el
volumen de vista.
Clipping en 3D
Si suponemos que un plano limitante del volumen de vista est dado por:
Ax + By + Cz + D = 0
Un punto extremo (x
1
,y
1
,z
1
) de un segmento de lnea estar fuera del volumen
de vista si:
Ax
1
+ By
1
+ Cz
1
> 0
Y estar dentro del mismo si: Y estar dentro del mismo si:
Ax
1
+ By
1
+ Cz
1
+ D < 0
El punto (x
1
,y
1
,z
1
) de interseccin ser aqul que verifique que:
Ax
1
+ By
1
+ Cz
1
+ D = 0
. VyGLab DCIC - UNS CG 2011
51
Para clipear una superficie poligonal podemos:
Cli l l d d l l d t t l l
Clipping en 3D
Clipear los lados del polgono para detectar los casos en que el
mismo est completamente afuera o completamente adentro del
volumen de vista. Si est completamente adentro, guardamos el
polgono para dibujarlo; si est completamente afuera, lo
descartamos.
Si el polgono est parcialmente adentro, debemos calcular las
intersecciones con los planos limitantes.
. VyGLab DCIC - UNS CG 2011
Veamos cundo y cmo realizamos el clipping:
Antesdelatransformadaenperspectiva?
En este caso debemos clipear contra el frustrum
Clipping en 3D
En este caso debemos clipear contra el frustrum
de vista. Luego debemos realizar la
transformacin en perspectiva, luego la
proyeccin y luego dibujar en la ventana
. VyGLab DCIC - UNS CG 2011
52
Despusdelatransformadaenperspectiva?
En este caso tenemos dos opciones; podemos hacerlo en coordenadas 3D
Clipping en 3D
En coordenadas homogneas
debemos clipear contra los planos
-w s x s w
-w s y s w
En coordenadas 3D de la pantalla
debemos clipear contra los planos
-1 s x s 1
-1 s y s 1
de la pantalla o en coordenadas homogneas.
y
-w s z s w
y
-1 s z s 1
Esindistintoclipearencualesquieradeestosdosespacios?
Porqu?
. VyGLab DCIC - UNS CG 2011
Entonces debemos clipear teniendo en cuenta que:
- El clipping se realiza en coordenadas homogneas, es decir,
antes de dividir por w y despus de realizar la transformacin de
Clipping en 3D
antes de dividir por w y despus de realizar la transformacin de
proyeccin perspectiva.
- El volumen de vista contra el que se efecta el clipping est dado
por:
-w s x s w -w s y s w -w s z s w
. VyGLab DCIC - UNS CG 2011
53
Algoritmo de Clipping de
Cohen-Sutherland
( 3D)
. VyGLab DCIC - UNS CG 2011
En este caso se dividir el espacio en 27 regiones y usaremos un
cdigo de 6 bits para chequear si los puntos estn dentro o fuera del
Algoritmo de Cohen-Sutherland
volumen de vista. Esto se har para cada uno de los puntos extremos
de los segmentos de recta.
Es decir que debe determinarse la ubicacin de los puntos con
respecto al volumen de vista:
-w s x s w
-w s y s w
-w s z s w
. VyGLab DCIC - UNS CG 2011
54
El volumen de vista contra el que se efecta el clipping est dado
por:
-w s x s w -w s y s w -w s z s w
Clipping en 3D
Y veremos que siempre podemos
clipear en la regin en que w>0.
. VyGLab DCIC - UNS CG 2011
Bitn Ubicacin Seguarda
1 w+x> 0
2 w - x > 0
Algoritmo de Cohen-Sutherland
2 w x> 0
3 w+y> 0
4 w- y> 0
5
Detrsdelplanode
adelante
w+z> 0
6
Delantedelplanode
atrs
w- z> 0
Los valores guardados se usarn para determinar el punto de interseccin
con el plano correspondiente.
Se generarn conjuntos que nos dicen cmo est ubicado un punto con
respecto al volumen de vista.
. VyGLab DCIC - UNS CG 2011
55
Se debe calcular la interseccin de la lnea a clipear con el plano que
corta. Se calcula el valor de t de la interseccin. Slo cuando se ha visto
que la lnea debe clipearse se hallan las coordenadas del o de los puntos
de interseccin.
Algoritmo de Cohen-Sutherland
La interseccin de una recta dada en forma paramtrica
) ( ) (
) ( ) (
1 2 1 1 2 1
t t
x x t x w w t w = +
) (
1 2 1
p p t p p + =
con el plano w= -x (w+x=0) es:
Seguard
w+x
w- x
w+y
( )
i i i i i
w z y x p , , , =
) ( ) (
2 2 1 1
1 1
x w x w
x w
t
+ +
+
=
) ( ) (
2 1 2 1 1 1
x x t w w t x w + = + w- y
w+z
w- z
. VyGLab DCIC - UNS CG 2011
Veamos el algoritmo. Calculamos
Cdigopunto1 Cdigopunto2
Cp w + x Cp w + x
Algoritmo de Cohen-Sutherland
1 1
x w
t
+
Cp
1,1
w
1
+x
1
Cp
2,1
w
2
+x
2
Cp
1,2
w
1
x
1
Cp
2,2
w
2
x
2
Cp
1,3
w
1
+y
1
Cp
2,3
w
2
+y
2
Cp
1,4
w
1
y
1
Cp
2,4
w
2
y
2
Cp
1,5
w
1
+z1 Cp
2,5
w
2
+z
2
Cp w z Cp w z
) ( ) (
2 2 1 1
1 1
x w x w
t
+ +
=
Cp
1,6
w
1
z
1
Cp
2,6
w
2
z
2
Se calcula:
c
1
n de bits para los cuales Cp
1,n bit
< 0
c
2
n de bits para los cuales Cp
2,n bit
< 0
. VyGLab DCIC - UNS CG 2011
56
c1 Cdigodelpuntop1,c2 Cdigodelpuntop2
sic1esvacoyc2esvaco
entoncesLneatrivialmenteaceptada
sino si(c1andc2)= 0
entoncesLneatrivialmenterechazada
sino
Algoritmo de Cohen-Sutherland
sino
t1 0;t2 1
para nbit:1 6
si (cp
1,nbit
<0)or(cp
2,nbit
<0)
entonces
t cp
1,nbit
/(cp
1,nbit
- cp
2,nbit
)
si cp
1,nbit
<0
entonces
sit>t1entonces t1 t
i sino
si t<t2entonces t2 t
si t2> t1
entonces
dx x2-x1;dy y2-y1;dz z2-z1;
si t2= 1entoncesx2 x1+t2*dx;
si t1= 0entonces x1 x1+t1*dx;
. VyGLab DCIC - UNS CG 2011
Este algoritmo que vimos realiza el clipping en la regin de los w>0.
De acuerdo a lo visto se debe considerar tambin el clipping de puntos con
Algoritmo de Cohen-Sutherland
w<0. Esto se realiza de acuerdo a:
- p
1
y p
2
con w>0 -w s x,y,z s w
- p
1
y p
2
con w<0 -w s x,y,z s w con - p
1
y - p
2
- p
1
y p
2
, uno con w>0 y -w s x,y,z s w con p
1
y p
2
otro con w<0 -w s x y z s w con - p
1
y - p
2
otro con w<0 w s x,y,z s w con p
1
y p
2
. VyGLab DCIC - UNS CG 2011
57
Pipeline 3D
Espacios
Objeto Mundo Ojo
Modelado Ubicacin Especificacin
en el Mundo de la cmara
Trasf. Transf. Transf.
Modelado Viewing Proyeccin
Clipping Pantalla 3D Ventana
Fin
Clipping
Divisin Transf.
Perspectiva Viewport
pp g
. VyGLab DCIC - UNS CG 2011
Coordenadas Coordenadas
Homogneas
. VyGLab DCIC - UNS CG 2011
58
Coordenadas homogneas
) , , , (
) , , , (
2 2 2 2 2
1 1 1 1 1
w z y x p
w z y x p
=
=
( ) 1 t 0
1 2 1
s s + = p p t p p
. VyGLab DCIC - UNS CG 2011
Homogneas
Homogneas
proyectadas
Cartesianas
Coordenadas homogneas
. VyGLab DCIC - UNS CG 2011
59
Coordenadas homogneas
. VyGLab DCIC - UNS CG 2011
Coordenadas homogneas
Porcinvisible
delapantalla
. VyGLab DCIC - UNS CG 2011
60
Coordenadas homogneas
?
. VyGLab DCIC - UNS CG 2011
Coordenadas homogneas
. VyGLab DCIC - UNS CG 2011
61
Coordenadas homogneas
. VyGLab DCIC - UNS CG 2011