Grficas Interactivas - PowerPoint PPT Presentation

1 / 124
About This Presentation
Title:

Grficas Interactivas

Description:

Dados dos puntos P1 = (x1, y1, z1), P2 = ( x2, y2, z2) x = x1 t (x2 - x1) y = y1 t (y2 - y1) ... Para obtener la ecuaci n del plano dados tres puntos: P1, P2, P3 ... – PowerPoint PPT presentation

Number of Views:151
Avg rating:3.0/5.0
Slides: 125
Provided by: charl220
Category:

less

Transcript and Presenter's Notes

Title: Grficas Interactivas


1
Gráficas Interactivas
  • Isaac Rudomín (Instructor)
  • rudomin_at_itesm.mx
  • Erik Millán (asistente)
  • emillan_at_itesm.mx

2
Bases
  • Repaso de conceptos matemáticos.
  • Proceso de Síntesis.
  • Transformaciones
  • Cuaterniones
  • Proyecciones.
  • Jerarquía y Grafo de Escena.

3
Repaso de conceptos matemáticos
4
Bases Matemáticas
  • Geometría (2D, 3D)
  • Trigonometría
  • Espacios vectoriales y afines
  • Puntos, vectores, coordenadas
  • Producto punto y cruz
  • Transformaciones lineales y matrices

5
Geometría 3D
  • Para modelar, animar y sintetizar la imagen
    basados en escenas 3D, debemos especificar
  • Locación
  • Desplazamiento a partir de locaciones arbitrarias
  • Orientación
  • Veremos 2 tipos de Espacios
  • Vectoriales
  • Afines

DL
6
Espacios Vectoriales
  • 2 tipos de elementos
  • Escalars (números reales) a, b, g, d,
  • Vectoress (n-eadas) u, v, w,
  • 2 operaciones
  • Suma u v
  • Identidad 0 v 0 v
  • Inversa - v (-v) 0
  • Multiplicación escalar
  • Regla distributiva a(u v) a(u) a(v)
  • (a b)u au bu

DL
7
Espacios Vectoriales
  • Una combinación lineal de vectores resulta en
    un nuevo vector
  • v a1v1 a2v2 anvn
  • Si elúnico conjunto de escalares tal que
  • a1v1 a2v2 anvn 0
  • es a1 a2 a3 0
  • decimos que los vectors son linealmente
    independientes
  • La dimensión de un espacio es el mayor número de
    vectores linealmente independientes.
  • Para un espacio vectorial de dimensión n,
    cualquier conjunto de n vectores linealmente
    independientes forma una base

DL
8
Ejemplo, vectores en 2D
DL
9
Vectores Base
  • Dada una base para un espacio vectorial
  • Cada vector en el espacio es una combinación
    lineal única de los vectores base
  • Las coordenadas del vector son los escalares de
    esta combinación lineal
  • Ejemplo coordenadas Cartesianas
  • Un vector v tendrá diferentes coordenadas para
    bases diferentes

DL
10
Vectores y Puntos
  • Usualmente usamos vectores para representar
  • Puntos en el espacio (i.e., locación)
  • Desplazamientos de punto a punto
  • Dirección (i.e., orientación)
  • Pero puntos y direcciones se comportan de manera
    distinta
  • Ex transladar algo significa moverlo sin
    cambiar su orientación

DL
11
Espacios Afines
  • Para ser mas rigurosos debemos definir
    explicitamente la noción de posición
  • Los espacios afines agregan un tercer elemento a
    los espacios vectoriales puntos (P, Q, R, )
  • Puntos con las operaciones
  • Substracción entre puntos Q - P v
  • Resultado es un vector que apunta de P a Q
  • Suma Vector-punto P v Q
  • Resultado es un nuevo punto
  • No se define la suma entre puntos

Q
v
P
DL
12
Espacios Afines
  • Los puntos, como los vectores, se expresan en
    coordenadas
  • La definición utiliza una combinación afín
  • El efecto neto es el mismo expresar un punto en
    términos de una base
  • De aqui la práctica común de representar puntos
    como vectores con coordenadas.
  • Análogamente a como se utilizan pointers y
    enteros en C, hay que evitar operaciones sin
    sentido

DL
13
Líneas afines
  • La representación paramétrica de una linea con
    vector de dirección d y un punto P1 sobre la
    linea
  • P(a) Porigin ad
  • Restringiendo 0 ? a produces un rayo
  • Haciendo d igual a P - Q y restringiendo
  • 0 ? a ? 1 produce un segmento de linea entre P
    yQ

DL
14
Producto Punto
  • El producto punto o, mas en general, producto
    interno de dos vectores es un escalar
  • v1 v2 x1x2 y1y2 z1z2 (en 3D)
  • Útil para
  • Calcular la longitud de un vector
  • length(v) sqrt(v v)
  • Normalizar un vector, haciendolo de longitud
    unitaria
  • Calcular el ángulo entre dos vectores
  • u v u v cos(?)
  • Verificar si dos vectores son ortogonales
  • Proyectar un vector sobre otro

v
?
u
DL
15
Aplicaciones del producto punto
  • Si el producto punto de dos vectores no cero es 0
    los dos son perpendiculares.
  • vx, vy, vz ux, uy, uz vxux vyuy vzuz
  • V U cos ß
  • SQRT(VV)SQRT(Vx2 Vy2 Vz2) V

RS
16
Aplicaciones de producto punto (2)
  • Si U1 y V es cualquier vector entonces U
    V es la longitud de la proyección de V sobre U.
  • El ángulo entre los vectores V y W es
  • ? cos-1( VW / (V W) )

v
?
u
RS
17
Producto Cruz
  • El producto cruz o vectorial de dos vectores es
    un vector
  • El producto cruz de dos vectores es ortogonal a
    ambos
  • La regla de la mano derecha dicta la dirección
    del producto cruz

DL
18
Producto Cruz (2)
  • Otra definición
  • UxV - VxU
  • Length(UxV) V Wsin ?
  • Buena para crear un sistema coordenado 3D

19
Sistemas coordenados
Mano izquierda
Mano derecha
DB
20
Transformaciones Lineales
  • Una transformación lineal
  • Mapea un vector en otro
  • Preserva combinaciones lineales
  • Por tanto el comportamiento de las
    transformaciones lineales es completamente
    determinado por lo que hace a la base
  • Resulta que cualquier transformación lineal puede
    representarse por una matriz

DL
21
Matrices
  • Por convención, el elemento de la matriz Mrc se
    localiza en la fila r y columna c
  • Por convención (OpenGL) vectores son columnas

DL
22
Matrices
  • Multiplicación Matriz-vector aplica una
    transformación lineal a un vector
  • Recuerda como se hace una multiplicación de
    matrices

DL
23
Transformaciones matriciales
  • Una secuencia o composición de transformaciones
    lineales corresponde al producto de las matrices
    correspondientes
  • Nota las matrices a la derecha afectan al
    vector primero. El órden de las matrices importa!
  • La matriz identidad I no tiene efecto en el
    producto
  • Algunas matrices (no todas) tienen una inversa

DL
24
Ecuación paramétrica de una linea
t gt 1
  • Dados dos puntos P1 (x1, y1, z1), P2 ( x2,
    y2, z2)
  • x x1 t (x2 - x1)
  • y y1 t (y2 - y1)
  • z z1 t (z2 - z1)
  • Dado un punto P1 y un vector V vx, vy, vz
  • x x1 t vx, y y1 t vy , z
    z1 t vz
  • FORMA COMPACTA L P1 tP2 - P1
    o L P1 Vt

t 1
t 0
P2
t lt 0
P1
DB
25
Ecuacion de un Plano
  • Ax By Cz D 0
  • dado Ax By Cz D 0 Entonces A, B, C
    es un vector normal
  • Pf Dados dos puntos P1 y P2 en el plano, el
    vector P2 - P1 está en el plano y A,B, C
    P2 - P1 (Ax2 By2 Cz2) - (Ax1 B y1 Cz1)
    ( - D ) - ( - D )
    0
  • Forma Alterna A'x B'y C'z D' 0
  • donde A' A/d, B' B/d, C' C/d, D'
    D/d
  • d constante no cero
  • Distancia entre punto y el plano es dada por A'x
    B'y C'z D' (signo indica el lado)

DB
26
Obtención de la ecuación del plano
  • Para obtener la ecuación del plano dados tres
    puntos P1, P2, P3
  • P3 - P1 x P2 - P1 N, vector ortogonal
  • Dado un punto general P (x,y,z)
  • N P - P1 0 si P está en el plano.
  • O bién, dado un punto dado un punto (x,y,z) en
    el plano y el vector normal N entonces N
    x,y,z -D

DB
27
Ejemplo
  • Encuentra el plano que contiene los puntos
    (0,0,0), (1,2,3), y (4,5,6).

1,2,3 x 4,5,6 -3,6,-3 vector normal -3x
6y - 3z D 0 Substituye punto conocido
(0,0,0) 000D 0 D0 Ecuación del plano
-3x 6y - 3z 0
DB
28
Vectores y Matrices
  • Álgebra de matrices puede expresarse en forma
    matricial
  • Producto punto
  • Producto cruz
  • Nota useregla de mano derecha!

DL
29
Proceso de Síntesis
30
El proceso de síntesis (Rendering Pipeline)
Parametros Modelo Camera
Rendering Pipeline
Framebuffer
Dispositivo
DL
31
Rendering Pipeline 3-D
Grafo de escenageometría de objeto
  • Resultado
  • Vértices de escena en sistema coordenado de
    mundo
  • Vértices sombreados según modelo de iluminación
  • Vértices de escena en sistema de coordenadas de
    vista o cámara
  • Vértices y pedazos de polígodo dentro de fustum
    de vista
  • coordenadas de pantalla 2-D de vértices
    recortados

Transformada Modelado
Cálculo iluminación
Transformada Vista
Recorte
Transformada Proyección
DL
32
(No Transcript)
33
Transformaciones
  • Los pixeles están en espacio de pantalla
  • Modelo está en espacio de modelo o de mundo
  • Tres tipos de transformaciones geométricas
  • Modelado
  • Vista
  • Proyección

DL
34
Iluminación
  • Illuminar la escena colorear pixeles según
    alguna aproximación a la iluminación
  • Global resuelve la iluminación de toda la
    escena a la vez
  • Local aproximación local ilumina cad polígono
    por separado
  • Las gráficas interactivas generalmente usan
    hardware y hacen solo iluminación local durante
    la ejecución

DL
35
Recorte
  • Recortar una primitiva 3-D da su intersección con
    el frustum de vista
  • Ver Foley van Dam sección 19.1

DL
36
Recorte
  • El recorte tiene trucos!

dentro 3 vértices fuera 6 vértices
recorta
dentro 1 poligono fuera 2 poligonos
recorta
DL
37
Transformaciones y Proyecciones
38
Transformaciones de Modelado
  • Escala, coloca, rota partes del modelo unas
    respecto a otras
  • coordenadas de objeto ? coordenadas de mundo

Y
Z
X
DL
39
Transformaciones de vista
  • Rota y translada el mundo para colocarlo
    directamente frente a la cámara
  • Usualmente cámara en el origen y viendo hacia el
    eje -Z
  • coordenadas de mundo ? coordenadas de vista

DL
40
Proyecciones
  • Aplica perspectiva
  • Distante pequeño cámara modelo de hoyo de
    alfiler
  • coordenadas de vista ? coordenadas de pantalla

DL
41
Transformaciones
  • Todas estas transformaciones involucran cmbiar de
    sistemas de coordenadas
  • Eso es lo que hacen las matrices
  • Representando coordenadas como vectores,
    transformadas como matrices
  • Multiplicar matrices concatenar transformadas!

DL
42
Transformaciones
  • Coordenadas homogeneas representa coordinadas en
    3 dimensiones como un 4-vector
  • Denotado x, y, z, wT
  • Note que w 1 en coordenadas de modelo
  • Para obtener coordenadas 3-D, divide entre
    wx, y, zT x/w, y/w, z/wT
  • Transformaciones quedan como matrices 4x4 para
    manejar uniformemente translación y proyecciones

DL
43
En OpenGL
  • Todas las transformadas de modelado y vista se
    concatenan en la matriz modelview
  • Se guarda una pila (stack) de matrices modelview
    matrices
  • La transformación de proyección se guarda por
    separado, en la matriz de proyección
  • Ver capítulo 3 libro OpenGL

DL
44
3D vs. 2D
  • 2D
  • X, Y - 2 dimensiones solamente
  • No le dedicaremos mucho tiempo a esto
  • 3D
  • X, Y, and Z
  • Espacio
  • El proceso de síntesis es típicamente la
    conversión de 3D a 2D

45
Transformaciones Geométricas
  • 2D
  • 3D

46
Transformaciones 2D
  • Puntos x,y a puntos x,y
  • Los usaremos para derivar las transformaciones 3D

47
Operaciones afines
  • Translación
  • x x c
  • y y f
  • Escalamiento
  • x ax
  • y dy
  • Rotación (Contra el reloj, alrededor de 0,0)
  • x xcosq - ysinq
  • y xsinq ycosq
  • Skew (o Shear)
  • x x ay
  • y y

48
De donde viene la expresión para rotación?
  • x xcosq ysinq
  • y xsinq ycosq

x,y
x,y
q
49
De donde viene la expresión para rotación?
xhcosf yhsinf xhcos(fq) yhsin(fq) xhcos
(fq) hcosfcosq hsinfsinq xcosq
ysinq yhsin(fq) hcosfsinq hsinfcosq
xsinq ycosq
x,y
x,y
h
q
h
f
50
  • En general
  • x ax by c
  • y dx ey f

51
Usando matrices matrices
  • Expresar puntos como x yT
  • Operaciones como multiplicación de matrices
  • Pero no funciona para
  • x ax by c
  • y dx ey f

52
Coordenadas homogeneas en 2D
  • Expresar los puntos como x y 1T
  • Vector de 3 elementos!
  • Porque?

53
Matriz identidad
glLoadIdentity()
54
Matriz de Translación
55
Problema
  • Rota una imagen 30 grados alrededor de su centro.

56
Paso 1 Translación a punto de rotación
y
y
x
x
Translada (-w/2, -h/2)
57
Matriz de rotación
y
y
x
x
  • x xcosq - ysinq
  • y xsinq ycosq

58
Devuelve a donde estaba el centro de rotación
y
y
x
x
Translada (w/2, h/2)
59
Es decir!
  • Translación M1
  • Rotación
  • Translación M2

60
Componiendo las operaciones
  • Nota que

61
Es decir
  • MM2 R30 M1
  • Multiplica todas las transformaciones!
  • Esto se implementa en una simple matriz 3x3
    multiplicada por un vector de 3 elementos para
    cualquier vértice!

62
Ejemplo
  • Supón imagen 100 por 100.

63
Importante
  • Cualquier secuencia de operaciones de matrices
    puede componerse a una sola matriz
  • Siempre se usará una dimensión extra para todos
    los vértices (x,y,w)

64
Transformaciones 3D
  • De coordenadas de objeto a coordenadas de mundo
    respetando la forma del objeto
  • rotación, translación, escala
  • Puntos como vectores columna

DL
65
Translaciones
  • Agrega offsets a sus coordenadas

66
Rotaciones 3-D
  • Rotaciones en 2-D
  • 3-D es mas dificil
  • Se requiere especificar eje de rotación
  • Comunmente se expresa la rotación alrededor de
    ese eje como composición de rotaciones alrededor
    delos ejes X, Y, Z

DL
67
Extendiendo a 3D
  • Coordenadas Homogeneas en 3D
  • x,y,z,1T (x,y,z,w)
  • Matrices de la forma
  • Matrices 4x4 Matrices en vez de of 3x3 para 3D

68
Translación
69
Escalamiento
70
Rotaciones 3-D
  • Idea
  • Rotando alrededor de los ejes X, Y, Z rota el
    modelo hasta que el eje de rotación deseado
    coincida con el eje Z
  • Rota en el plano X-Y alrededor del eje Z
  • Aplica en orden inverso las rotaciones iniciales
    para obtener el marco de referencia inicial
  • Objeciones
  • Dificil y puede llevar a errores
  • Ambiguo algunas combinaciones dan el mismo
    resultado
  • Hay otros enfoques (cuaterniones)

DL
71
Rotación?
  • Como convierto esto a 3D?

72
Rotación alrededor del eje Z
Dejando Z constante
73
Las 3 matrices de rotación
74
Skew o Shear
75
Inversas
  • A veces necesitaremos las inversas de las
    matrices
  • T(a,b,c)-1T(-a,-b,-c)
  • Rx(q)-1Rx(-q)
  • Inversas de matrices de rotación son transpuestas
  • Además
  • (ABC)-1C-1B-1A-1

76
Crea una transformación compleja
  • Que hace gluLookAt?

void gluLookAt( GLdouble eyex, GLdouble eyey,
GLdouble eyez,
GLdouble centerx, GLdouble centery, GLdouble
centerz, GLdouble upx,
GLdouble upy, GLdouble upz )
77
Versión de gluLookAt()
void CChildViewmygluLookAt(CGrPoint eye,
CGrPoint center,
CGrPoint up) CGrPoint
cameraz Normalize3(eye - center) CGrPoint
camerax Normalize3(Cross3(up, cameraz))
CGrPoint cameray Cross3(cameraz, camerax)
GLdouble m16 // Fill the matrix in row by
row m0 camerax.X() m4 camerax.Y()
m8 camerax.Z() m12 0 m1
cameray.X() m5 cameray.Y() m9
cameray.Z() m13 0 m2 cameraz.X()
m6 cameraz.Y() m10 cameraz.Z() m14
0 m3 m7 m11 0. m15 1.0
glMultMatrixd(m) glTranslated(-eyex,
-eyey, -eyez)
78
(No Transcript)
79
Cuaterniones
Isaac Rudomin ITESM-CEM Spring 2003
80
Cuaterniones
  • Inventados en los 1800s
  • Ir rotaciones alrededor de un eje arbitrario.
  • Útil para animación pues es fácil interpolar
    rotaciones
  • 4-tupla descrita por cuatro números reales q
    w, x, y, z

81
Operaciones de Cuaterniones
  • q w,x,y,z donde w es un escalar relacionado a
    un ángulo y x,y,z, es un vector.
  • Podemos escribir ?, v donde
  • w and v x,y,z
  • ?1, v1 ?2, v2 ?1 ?2, v1 v2
  • ?1, v1 ?2, v2
  • (?1?2 - v1v2), (?1v2 ?2 v1 v1 x v2)

82
Operaciones de cuaterniones
  • q ?(w2 x2 y2 z2)
  • q-1 ?, -v / q2
  • qq-1 1, 0, 0, 0

83
Describiendo movimiento para animaciones
  • Considerar solo cuaterniones tales que
  • q 1
  • Para rotar el punto d alrededor del vector
    unitario f en ? grados, calculamos
  • q-1?,dq (recuerda que q ?, v)
  • El resultado es un vector que representa una
    rotación del punto d alrededor del vector v con
    un ángulo ? dado por la ecuación
  • ? cos(?/2)

84
Ejemplo
Rotación de 180 grados alrededor del vector
1,0,1, del punto (1,0,0).
y
(0,0,1)
z
x
(1,0,0)
85
Notación para el ejemplo
  • Que es q ?, v tal que q 1?
  • cos (180/2) cos(90) 0
  • v ?2//2, 0, ?2//2
  • q 0, ?2//2, 0, ?2//2
  • q-1 ?, -v /q2 0, -?2//2, 0, -?2//2
  • 0,d 0, 1, 0, 0

86
Para rotar
  • ?1, v1 ?2, v2
  • (?1?2 - v1v2), (?1v2 ?2 v1 v1 x v2)
  • q-10,dq
  • 0, ?2//2, 0, ?2//20, 1, 0, 00, -?2//2, 0,
    -?2//2
  • 0, 0, 0 1, nueva coordenada rotada es (0,0,1)

87
Por que esto es bueno?
Rotación de 90 grados alrededor del vector
1,0,1, del punto (1,0,0).
y
z
x
88
Por que esto es bueno?
  • Encontrar la representación en cuaterniones para
    todas las rotaciones intermedias es sencillo.
  • Por ejemplo, una rotación de 90 grados del punto
    (1,0,0) alrededor del vector 1,0,1
  • Que es q ?, v tal que q 1?
  • cos (90/2) cos(45) ?2//2
  • v 1/2, 0, 1/2
  • q45 ?2//2, 1/2, 0, 1/2

89
Como encuentro el cuaternion unitario?
  • Si quiero rotar 30 grados alrededor del eje 0,
    3, 4
  • Encuentra primero el vector unitario 0,3,4/5
    0,0.6, 0.8
  • El cuaternion unitario es
  • cos (15), 0sin(15), 0.6sin(15), 0.8sin(15)
  • 0.966, 0, 0.60.259, 0.80.259
  • 0.966, 0, 0.155, 0.207

90
Proyecciones
91
La Cámara
  • Finalmente se requiere un modelo de la cámara
    virtual
  • Puede ser muy sofisticado
  • Campo de vista, profundidad de campo,
    distorsiones, aberración cromática
  • Gráficas interactivas (OpenGL)
  • Modelo hoyo de alfiler
  • Campo de vista
  • Razón de aspecto
  • Planos de recorte (cercano y lejano)
  • Pose de la cámara posición orientación

DL
92
La Cámara
  • Estos parámetros quedan encapsulados como una
    matriz de proyección en coordenadas homogeneas
    (4x4 )
  • La matriz de proyección premultiplica a la matriz
    de vista, que a su vez premultiplica a las
    matrices de modelado, aunque en realidad OpenGL
    agrupa vista y modelado en la matriz modelview

DL
93
Como funciona una camara?
Hoyo de alfiler
Superficie del film
Objecto en 3D
94
Modelos de Cámara Modelo de hoyo de alfiler
VRP View Reference Plane COP Center of
Projection
95
Modelos de Cámara Proyección Paralela
VRP View Reference Plane COP Center of
Projection (al infinito)
96
Proyección
  • Proyección la transformación de puntos de un
    sistema coordenado de n dimensiones a un sistema
    coordenado en m dimensiones donde mltn.
  • Hablaremos de proyecciones de 3D a 2D, donde el
    espacio 3D representa el sistema de coordenadas
    del mundo y el espacio 2D es una ventana mapeada
    a un viewport de la pantalla.

97
Especificación de Proyecciones
  • Hay que especificar
  • Plano de proyección (VRP), un sistema coordenado
    2D a donde proyectaremos el mundo 3D
  • Centro de proyección (COP), un punto en el
    espacio que sirve como punto extremo para los
    proyectores.

98
Proyectores
  • Projectores un rayo que se origina en el centro
    de proyección y pasa por el punto a proyectarse

99
Proyección paralela
  • Un caso sencillo es tener proyectores paralelos
  • Que implica acerca del COP? Se usa dirección de
    proyección (DOP).

100
Proyecciones ortográficas
  • Son proyecciones paralelas en que el DOP y la
    normal al plano de proyección son paralelos.
  • Elevación es una proyección ortográfica en que la
    normal al plano de proyección es paralela a un
    eje.
  • front-elevation
  • top-elevation
  • side-elevation.
  • Proyecciones Axonométricas son proyecciones
    ortográficas que no son normales a un eje.
  • Proyecciónes Isométricas son proyecciones
    axonométricas donde la normal alplano de
    proyección hace ángulos idénticos con cada eje
    principal.

101
glOrtho genera
102
Proyecciónes Oblícuas
  • La normal al plano de proyección y la dirección
    de proyección forman un ángulo entre si
  • La proyección Cavalier
  • es una proyección oblícua donde DOP está a 45
    grados del VPN. Lineas paralelas a los ejes se
    encogen de manera igual. Las paralelas a z
    aparecen a un ángulo a, dependiente de DOP, muy
    comunmente a es 45 o 30.
  • La proyección Cabinet
  • La normal al plano de proyección está a un ángulo
    de arctan(2) 63.4 al plano de proyección
    (típicamente proyectando sobre el plano x,y) .
    Líneas paralelas al eje que define el plano de
    proyección se encogen de manera igual. Líneas
    paralelas a la normal al plano de proyección se
    acortan a la mitad!

103
Proyección de Perspectiva
  • Los proyectores salen de un centro de proyección,
  • líneas paralelas que no son paralelas al plano de
    proyección no se verán paralelas, sino que se
    encuentran en algún sitio
  • En el espacio 3D ese punto estará al infinito y
    se llamará punto de fuga
  • Líneas paralelas a uno de los ejes mayores van a
    un punto de fuga llamado punto de fuga de los
    ejes. Hay un máximo de 3 en tercera dimensión.

104
En OpenGL (gluPerspective)
  • OpenGL pone el COP en 0,0,0
  • El plano de proyección en z -d
  • Esto también se llama longitud de foco f

105
Frustum
glFrustum(left,right,bottom,top,znear,zfar)
  • La región que podemos ver se llama frustum

(right,top,-znear)
(0,0,0)
-zfar
(left,bottom,-znear)
znear,zfar are positive
106
gluPerspective
  • Que relación hay entre
  • gluPerspective(fovy, aspect, znear, zfar)
  • y
  • glFrustum(left,right,bottom,top,znear,zfar)

107
fov to near frustum
(x,y,-znear)
-z
108
Estructura de Proyección
y
P(x,y,z)
x
P'(x',y',z')
-z
-d
109
Matriz para proyección de perspectiva?
  • Debemos dividir para proyectar!

110
Coordenadas Homogeneas otra vez
  • Una coordenada homogenea
  • (x, y, z, w)
  • Pero teniamos antes que w era 1
  • Pero
  • (x, y, z, w) corresponde a (x/w, y/w, z/w)
  • Dividir por w se llama homogenizar
  • Si w1, x,y,z no cambian.
  • Pero, si w-z/d?
  • (x/(-z/d), y/(-z/d), z/(-z/d)) (-dx/z, -dy/z,
    -d)

111
El proceso de vista entonces
  • Rota mundo para que el COP este en 0,0,0 y DOP
    paralelo al eje Z
  • Aplica la Proyección de perspectiva
  • Homogeniza
  • Transformación de Viewport

112
Transformación de Viewport (Ventana a Viewport)
  • Ventana
  • Area del plano de proyección, normalmente
    normalizada con 0,0 al centro
  • Viewport
  • Area del dispositivo
  • Ejemplo
  • (0, 0) a (640, 480)

113
Window a Viewport
  • Si ventana (-1,-1) a (1,1)
  • Coordenadas Normalized Device en OpenGL
  • Viewport (0, 0) a (640, 480)
  • (ojo, estas se llaman coordenadas de Ventana en
    OpenGL)

114
En OpenGL
ObjectCoordinates
ModelviewMatrix
Eye coordinates
ProjectionMatrix
Clip coordinates
Homogenize
Normalized device coordinates
Window toViewport
Viewportcoordinates
115
Jerarquía y Grafo de Escena
116
Modeling/Rendering
Modelo Gráfico
Parámetros de Rendering
Rendering
Dispositivo de Salida
117
OpenGL soporta el modelado?
  • NO!
  • OpenGL solo dibuja
  • Puede uno saltarse el modelos pero
  • Como lidiar con objetos variables o como cargar
    objetos?
  • Se supone normalmente que se utiliza algún API
    para modelado, como Open Inventor from SGI is an
    example, o los incorporados en Engines de juego o
    DirectX.

118
Standards para Modelado
  • No hay
  • Los modelos tienden a depender de la aplicación
    (CAD vs juegos vs animación)
  • Un modelo es fundamentalmente una estructura de
    datos, usualmente un conjunto de objetos
    representan al grafo de escena
  • Typically a set of objects that represent the
    elements of a scene graph

119
Porque es Importante?
  • El modelo está en un formato uniforme
  • Puedo cambiar el render o soporar técnicas
    avanzadas como sombras, transparencia
  • Funciones auxiliares como nivel de detalle,
    navegación, detección de colisiones se facilitan
  • Se puede guardar ontenido como texturas o bump
    maps

120
Modelado Lo básico
  • Primitivas 3-D puntos, lineas, poligonos (i.e.,
    triangulos)
  • Organizados en objectos
  • Colección de primitivas, otros objectos
  • Matrices asociadas para transformaciones
  • Instanciamiento
  • usar misma geometría para múltiples objetos
  • 4 ruedas en auto, 2 brazos en robot

DL
121
Modelado el grafo de escena
  • El grafo de escena (scenegraph), captura las
    transformaciones y relaciones entre objetos en un
    grafo dirigido
  • Objectos en negro flechas indican instancias y
    cada una con su matriz

Robot
Body
Head
Arm
Trunk
Leg
Eye
Mouth
DL
122
Modelado el grafo de escena
  • Recorre el scene graph en orden de profundidad,
    concatenando las transformaciones
  • Mainten un stack de matrices de transformación

Robot
Visited
Head
Body
Unvisited
Leg
Arm
Trunk
Eye
Mouth
MatrixStack
Active
Foot
DL
123
Ejemplo
Barbell
Composite
Translate
Translate
Translate
BarbellBar
Color
Color
BarbellEnds
Composite
Composite


Polygon
Polygon
Polygon
Polygon
124
Nodos separadores
Significa Haz lo que quieras con la matriz de
Transformación. Yo aislo a mis hijos.
Composite
Separator
Separator
Separator
Translate
Translate
Translate
BarbellBar
Color
Color
BarbellEnds
Composite
Composite


Polygon
Polygon
Polygon
Polygon
Write a Comment
User Comments (0)
About PowerShow.com