Logo Studenta

3-Pipe3D

¡Este material tiene más páginas!

Vista previa del material en texto

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 
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 
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 decidieradibujar 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 
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 
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 
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. 
 
 “Unapintura [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 
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 
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 
http://en.wikipedia.org/wiki/Image:First_angle_projecting.png
http://en.wikipedia.org/wiki/Image:First_angle_unfolding.png
http://en.wikipedia.org/wiki/Image:First_angle_unfolded.png
http://en.wikipedia.org/wiki/Image:Perspectiva-2.jpg
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 MundoOjo 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
e
p
e
ep
e
e
p
e
ep
z
y
ny
z
y
n
y
z
x
nx
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
e
ppp
z
y
n
z
x
nyxp ,,
OpenGL usa el sistema de coordenadas de mano derecha para el 
mundo. 
e
e
p
e
ep
e
e
p
e
ep
z
y
ny
z
y
n
y
z
x
nx
z
x
n
x




 
S. Castro, D. Urribarri CG 2015 
http://en.wikipedia.org/wiki/Image:Perspectiva-2.jpg
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
e
p
e
ep
e
e
e
e
p
e
ep
z
y
n
z
y
ny
z
y
n
y
z
x
n
z
x
nx
z
x
n
x





 
S. Castro, D. Urribarri CG 2015 
Transformaciones 
Transf. No Lineal 
Transf. Lineal 
1 
w
w
w
w
z
z
w
y
y
w
x
x 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
e
p
e
e
p
z
y
ny
z
x
nx  
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
e
p
e
e
p
z
y
ny
z
x
nx



 
Proyección perspectiva 
e
p
e
p
ee
z
y
y
z
x
x
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]. 
 
 
2
1 *
11
 





lr
r
x
lr
x pn
lr
lr
lr
x
x
lr
lr
r-l
r
-
p
n








2
 
2
1 
Proyección perspectiva 
S. Castro, D. Urribarri CG 2015 
Mapeamos ahora yp con [b,t][-1,1]. 
 
 
2
1 *
11
 





bt
r
y
bt
y pn
bt
bt
bt
y
y
bt
bt
bt
t
-
p
n










2
 
2
1 
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
y
y
p
n





2
 
y reemplazando: 
lr
lr
lr
x
x
p
n





2
 
e
e
p
z
x
nx


e
e
p
z
y
ny


  
 
eeee
e
e
e
e
e
e
e
e
e
e
p
n
zxzz
lr
lr
x
lr
n
z
z
lr
lr
z
x
lr
n
lr
lr
z
lr
nx
lr
lr
zlr
nx
lr
lr
lr
z
nx
lr
lr
lr
x
x








































2
)(
2
2
2
2
2
en zw
w
x
x  
Proyección perspectiva 
S. Castro, D. Urribarri CG 2015 
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
n
lr
lr
lr
n
w
z
y
x
*.
0100
............
0
2
0
00
2




















 eeee z
bt
bt
y
bt
n
 yz
lr
lr
x
lr
n
x
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
BA
bt
bt
bt
n
lr
lr
lr
n
w
z
y
x
*.
0100
00
0
2
0
00
2
e
e
e
ee
e
nen
z
BAz
z
BwAz
z
z
zzw
w
z
z







 , 
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
e
n
z
BAz
z



y tenemos entonces 2 ecuaciones con dos incógnitas: 
















fAfB
nAnB
f
BAf
n
BAn
 
1
1
nf
nf
AnAnfAf


 
nf
fn
nAnBA


2
en 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
nf
bt
bt
bt
n
lr
lr
lr
n
w
z
y
x
BA
bt
bt
bt
n
lr
lr
lr
n
w
z
y
x
*.
0100
2
00
0
2
0
00
2
*.
0100
00
0
2
0
00
2
ee
e
e
e
n
z
z
z
nf
fn
z
nf
nf
z
BAz
z












2
completamos la matriz de transformación: 
Proyección perspectiva 
S. Castro, D. Urribarri CG 2015 
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
1
e
e
e
n
n
n
z
z
z
y
z
x
w
w
w
z
w
y
w
x
z
y
x
Proyección perspectiva 
 
 





















































































e
e
e
e
e
e
e
e
w
z
y
x
nf
fn
nf
nf
n
n
w
z
y
x
nf
fn
nf
nf
bt
bt
bt
n
lr
lr
lr
n
w
z
y
x
*.
0100
2
00
000
000
*.
0100
2
00
0
2
0
00
2
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
2
00
0
2
0
00
2
Pr
nf
fn
nf
nf
bt
bt
bt
n
lr
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
n
z
nf
fn
z
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 
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. UrribarriCG 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 
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 
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
xw
t



)()(
)()(
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
xw
t



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 
Algoritmode 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 
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
2
2
1
1
1
1
1
w
y
w
x
p
w
y
w
x
p
S. Castro, D. Urribarri CG 2015 
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 
18 
Coordenadas homogéneas 
S. Castro, D. Urribarri CG 2015

Continuar navegando