Post on 14-Mar-2020
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 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
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.
“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
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
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
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
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
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
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
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
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
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
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