SlideShare una empresa de Scribd logo
Introducción a los gráficos 3D
Instituto Tecnológico de Oaxaca
Matrices de proyección
• Hasta ahora hemos visto las matrices que afectan al modelo
- Por ejemplo: translación, rotación, escalado, ..
- Todas ellas se engloban en la matriz OpenGL denominada “modelview
matrix”
• Veremos que la proyección también se representa por una
matriz.
• A continuación veremos cómo representar varias de las
proyecciones más usuales con la “matriz de proyección”
• Al final, OpenGL combinará las matrices de modelo con la
matriz de proyección.
¿Cuantas proyecciones conoces?
Proyección paralela
• Trabaja situando el centro de proyección en el
infinito.
- Todos los puntos tienen la misma dirección de
proyección (DOP) (Son rectas paralelas)
View
Plane
DOP
Proyección paralela
• Tipos de proyección paralela
- Ortogonal:
• Paralela a la normal al plano de proyección (planta, perfil,
alzado).
• Axonométrica (planos de proyección no normales a un eje
principal).
- Oblicua: Dirección de proyección no normal al plano de
proyección.
Proyecciones ortogonales
• La dirección de proyección es perpendicular al plano
Front
Top Side
Ejemplos: utilización en diseño
Proyección axonométrica
Proyecciones oblicuas
• La dirección de proyección no es perpendicular al
plano de proyección
45
Cavalier
(DOP = 45o)
6
Cabinet
(DOP = 63.4o)
Proyección Ortogonal
• Transformación básica
• Las unidades originales del mundo se conservan
- Se suelen utilizar unidades en pixels.
Orthographic: Screen Space
Transformation
left =10 m right = 20 m
top=20 m
(max pixx, max pixy)
(Alto en pixels)
bottom=10 m
(0, 0)
(ancho en pixels)
La transformada para Ortográfica
• Las esquinas (left, right, top, bottom) se refieren al volumen
de visualización en las coordenadas de modelado
• Ancho y largo (width y height) se miden en pixels
Perspectiva isométrica
• Técnicamente es una proyección una axonométrica
cilíndrica ortogonal.
• Constituye una representación visual de un objeto
tridimensional en dos dimensiones, en la que los
tres ejes ortogonales principales, al proyectarse,
forman ángulos de 120º, y las dimensiones paralelas
a dichos ejes se miden en una misma escala.
• Muy utilizado en juegos (antiguos y no tan antiguos)
• En el mundo de los juegos se la conoce por
“perspectiva ¾”
Perspectiva isométrica
Juego Syndicate (1993)
El castillo del Louvre, dibujo isométrico
de Viollet-Le-Duc,(1814-1879).
(Wikipedia)
Perspectiva isométrica
Proyección en perspectiva
• Ya se utilizaba en el renacimiento (Donatello, Brunelleschi, y
DaVinci)
• La idea es que los objetos lejanos los veamos más pequeños
• Las líneas paralelas convergen hacia un punto
Proyección de perspectiva
• Alternativas según el número de puntos de fuga:
3-Point 2-Point 1-Point
Perspective Perspective Perspective
La revolución en los juegos
Wolfenstein 3D
Doom
Proyección de perspectiva
• Es una proyección cercana a la realidad. Vemos los
objetos lejanos más pequeños
Un cuadro representa nuestro mundo real en 3D
Proyección de perspectiva
• Cuando hacemos gráficos en 3D, pensamos que el
monitor es cómo una ventana 2D a nuestro mundo
en 3D.
¿Cómo de grande
debería ser?
Proyección de perspectiva
• Las matemáticas se basan en igualdad de triángulos:
X
(0,0,0)
d
View
plane
x’ = ?
P (x, y, z)
Z
Proyección de perspectiva
• Dado un punto[x, y, z, 1]T queremos calcular su proyección
en el plano:
• ¿Qué aspecto tendrá nuestra matriz?
La matriz de proyección de
perspectiva
• La solución:
1 0 0 0
Mperspectv
0 1 0 0
0 0 1 0
0 0 1 d 0
La matriz de proyección de perspectiva
• Por ejemplo:
x 1 0 0 0 x
y 0 1 0 0 y
z 0 0 1 0 z
zd 0 0 1d 0 1
• En coordenadas 3D:
x
zd
,
z
y
d
, d
Perspectiva vs Paralela
• La proyección en perspectiva
+ El tamaño depende de la distancia. Parece real
- Las distancias y los ángulos no se conservan (en general)
- Las líneas paralelas no se representan como paralelas (en general)
• La proyección paralela
+ Es ideal para realizar medidas
+ Las líneas paralelas siguen siendo paralelas
- Los ángulos no tienen que conservarse
- No parece real
OpenGL: Perspectiva
• Veamos cómo poner los parámetros de la
proyección (p.e. field of view)
• Normalmente solemos utilizar una proyección de
perspectiva:
- Vemos los objetos lejanos más pequeños
- Se pierden en un punto central lejano
- Esto define lo que llamamos: view frustum
• Ya sabemos que existen otras proyecciones:
orthográfica, isométrica
Cómo funciona en OpenGL
• Ya sabemos que OpenGL tiene muchas matrices de transformaciones
y que funcionan mediante pilas
• Las dos matrices (y pilas) más importantes son: GL_MODELVIEW y
GL_PROJECTION
• Los puntos se multiplican primero por la matriz de modelview y
después por la de proyección.
- GL_MODELVIEW: Representa la transformación del objeto a la cámara
- GL_PROJECTION: Representa la transformación de la cámara a la ventana
- glViewport(0,0,w,h): Es la transformación de la ventana a la pantalla física
Cómo lo hacemos con OpenGL
• Tenemos que tener en cuenta tres aspectos o pasos
fundamentales:
- Situar la cámara
• Define la matriz de model-view
- Seleccionamos una lente
• Define la matriz de proyección
- Definimos el volumen a representar
• Define el área que podemos evitar al dibujar (clipping)
29
Una pequeña demo
Ejemplo con OpenGL
void SetUpViewing()
{
// The viewport isn’t a matrix, it’s just state...
glViewport( 0, 0, window_width, window_height );
// Set up camera->screen transformation first
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 60, 1, 1, 1000 ); // fov, aspect, near, far
// Set up the model->camera transformation
glMatrixMode( GL_MODELVIEW );
gluLookAt( 3, 3, 2, // eye point
0, 0, 0, // look at point
0, 0, 1 ); // up vector
glRotatef( theta, 0, 0, 1 ); // rotate the model
glScalef( zoom, zoom, zoom ); // scale the model
}
La cámara de OpenGL
• En OpenGL, y por defecto, las matrices son
matrices identidad (tanto la de modelview como
la de proyección)
• La cámara, por defecto, se encuentra en el origen
y mira hacia los z negativos
• OpenGL también define un volumen de
visualización por defecto igual a un cubo con lados
de longitud igual a 2 y centrado en el origen.
32
Situar la cámara
• La cámara tiene un ojo (conocido en inglés como el
“view reference point” o VPR).
• La cámara “mira” hacia un punto distante.
• La cámara tiene una orientación (puede estar
“tumbada”)
• Solemos especificar estos parámetros mediante
gluLookAt
• La cámara tiene un volumen de visualización
definido por el “frustum”
• Solemos especificar estos parámetros mediante las
llamadas a frustum o perspective
gluLookAt
gluLookAt(eye, at, up)
34
Perspectiva en OpenGL
glFrustum(left,right,bottom,top,near,far)
35
Perspectiva en OpenGL (Field of View)
• A veces es difícil utilizar frustum.
• perpective(fovy, aspect, near, far) suele
resultar más fácil.
front plane
aspect = w/h
Plano Lejano y Cercano
• El volumen de la cámara define dos planos
importantes: planos cercano y lejano (near y far)
• Son importantes ya que definen el rango de z con el
que va a trabajar OpenGL.
• Mal situados pueden originar problemas de
visualización.
• Uno de los problemas más comunes es el que se
produce cuando el z-buffer pierde precisión.
Moviendo la cámara
• Cuando queremos ver objetos situados tanto en posiciones
de z positiva y negativa, podemos hacer dos cosas:
- Mover la cámara
• Trasladamos la cámara en la dirección positiva de z.
- Movemos los objetos
• Trasladamos los objetos en la dirección negativa de z.
• Ambas soluciones son equivalentes ya que modifican la
matriz del model-view
- Translate(0.0,0.0,-d);
- d > 0
38
Moviendo la cámara
frames after translation by -d
d > 0
default frames
39
Moviendo la cámara
• Podemos mover la cámara mediante cualquier
combinación de transformaciones
• Por ejemplo:
- Rotamos la cámara
- La movemos lejos del origen
- La matriz Model-view C = TR
40
Otras formas de trabajar
• La función LookAt es una forma de poner la cámara,
pero no la única
• Otras formas podrían ser
- Poniendo los parámetros: View reference point, view
plane normal, view up (PHIGS, GKS-3D)
- Definiendo los ángulos de navegación: la dirección
(heading o yaw), elevación (pitch) y ángulo de guiñada
(roll).
- Definiendo los ángulos de dirección,
- Etc͙ 41
Demostración: perspectiva
Demostración: perspectiva
La proyección por defecto es la ortogonal
clipped out
2
z=0
44
Cómo definir la vista ortogonal
Ortho(left,right,bottom,top,near,far)
Los planos cercano y lejano se miden desde la cámara
45
Demostración: Ortográfica
Otra demostración

Más contenido relacionado

La actualidad más candente

Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadoras
farmero
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
DARKGIRL93
 
Automatas de pila
Automatas de pilaAutomatas de pila
Automatas de pila
Virginia Quispe Colque
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacion
Irving Che
 
Mapa mental de memoria virtual
Mapa mental de memoria virtualMapa mental de memoria virtual
Mapa mental de memoria virtual
jorge77712
 
La maquina de Turing, sus tipos y aplicaciones.
La maquina de Turing, sus tipos y aplicaciones.La maquina de Turing, sus tipos y aplicaciones.
La maquina de Turing, sus tipos y aplicaciones.
Emmanuel Colon
 
Gramática Libre de Contexto
Gramática Libre de ContextoGramática Libre de Contexto
Gramática Libre de Contexto
Brayhan Acosta
 
Los lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingLos lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turing
Jonathan Bastidas
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Tema 10: Evaluación perezosa en Haskell
Tema 10: Evaluación perezosa en HaskellTema 10: Evaluación perezosa en Haskell
Tema 10: Evaluación perezosa en Haskell
José A. Alonso
 
Autómatas de Pila
Autómatas de PilaAutómatas de Pila
Autómatas de Pila
Pablo Guerra
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPU
Eduardo Suarez
 
Ciclo Vida del Software
Ciclo Vida del SoftwareCiclo Vida del Software
Ciclo Vida del Software
Wilfredo Mogollón
 
Sistemas de Numeración decimal y binaria
Sistemas de Numeración decimal y binariaSistemas de Numeración decimal y binaria
Sistemas de Numeración decimal y binaria
Astrid Ximena Hernandez Piedrahita
 
Encapsulamiento en JAVA-NETBEANS
Encapsulamiento en JAVA-NETBEANSEncapsulamiento en JAVA-NETBEANS
Encapsulamiento en JAVA-NETBEANS
Universidad Tecnológica Intercontinental
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
José Antonio Sandoval Acosta
 
Arquitecturas de Cómputo
Arquitecturas de CómputoArquitecturas de Cómputo
Arquitecturas de Cómputo
Victor Quintero
 
Control de Flujo [Telecomunicaciones]
Control de Flujo [Telecomunicaciones]Control de Flujo [Telecomunicaciones]
Control de Flujo [Telecomunicaciones]
Ashley Stronghold Witwicky
 
Estructura del sistema operativo windows
Estructura del sistema operativo windowsEstructura del sistema operativo windows
Estructura del sistema operativo windows
omfib123
 
Tipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionTipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacion
jorge severino
 

La actualidad más candente (20)

Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadoras
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
 
Automatas de pila
Automatas de pilaAutomatas de pila
Automatas de pila
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacion
 
Mapa mental de memoria virtual
Mapa mental de memoria virtualMapa mental de memoria virtual
Mapa mental de memoria virtual
 
La maquina de Turing, sus tipos y aplicaciones.
La maquina de Turing, sus tipos y aplicaciones.La maquina de Turing, sus tipos y aplicaciones.
La maquina de Turing, sus tipos y aplicaciones.
 
Gramática Libre de Contexto
Gramática Libre de ContextoGramática Libre de Contexto
Gramática Libre de Contexto
 
Los lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingLos lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turing
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programación
 
Tema 10: Evaluación perezosa en Haskell
Tema 10: Evaluación perezosa en HaskellTema 10: Evaluación perezosa en Haskell
Tema 10: Evaluación perezosa en Haskell
 
Autómatas de Pila
Autómatas de PilaAutómatas de Pila
Autómatas de Pila
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPU
 
Ciclo Vida del Software
Ciclo Vida del SoftwareCiclo Vida del Software
Ciclo Vida del Software
 
Sistemas de Numeración decimal y binaria
Sistemas de Numeración decimal y binariaSistemas de Numeración decimal y binaria
Sistemas de Numeración decimal y binaria
 
Encapsulamiento en JAVA-NETBEANS
Encapsulamiento en JAVA-NETBEANSEncapsulamiento en JAVA-NETBEANS
Encapsulamiento en JAVA-NETBEANS
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
 
Arquitecturas de Cómputo
Arquitecturas de CómputoArquitecturas de Cómputo
Arquitecturas de Cómputo
 
Control de Flujo [Telecomunicaciones]
Control de Flujo [Telecomunicaciones]Control de Flujo [Telecomunicaciones]
Control de Flujo [Telecomunicaciones]
 
Estructura del sistema operativo windows
Estructura del sistema operativo windowsEstructura del sistema operativo windows
Estructura del sistema operativo windows
 
Tipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionTipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacion
 

Similar a 03 open gl_perspectivas

Iniciación a OpenGL
Iniciación a OpenGLIniciación a OpenGL
Iniciación a OpenGL
Vicente García Díaz
 
Graficacion u 3
Graficacion u 3Graficacion u 3
Graficacion u 3
San Rc
 
10 HERRAMIENTAS PARA CREAR UNA ESTRUCTURA 3D EN.pptx
10 HERRAMIENTAS PARA CREAR UNA ESTRUCTURA 3D EN.pptx10 HERRAMIENTAS PARA CREAR UNA ESTRUCTURA 3D EN.pptx
10 HERRAMIENTAS PARA CREAR UNA ESTRUCTURA 3D EN.pptx
ssuserf64cd3
 
Utp pd_iy_va_sap14 vision estereoscopica
 Utp pd_iy_va_sap14 vision estereoscopica Utp pd_iy_va_sap14 vision estereoscopica
Utp pd_iy_va_sap14 vision estereoscopica
jcbp_peru
 
Utp pd_iy_va_sap14 vision estereoscopica
 Utp pd_iy_va_sap14 vision estereoscopica Utp pd_iy_va_sap14 vision estereoscopica
Utp pd_iy_va_sap14 vision estereoscopica
jcbp_peru
 
Examen g
Examen gExamen g
Examen g
Jesse Rmz
 
AutoCad Basico 2D y 3D
AutoCad Basico 2D y 3DAutoCad Basico 2D y 3D
AutoCad Basico 2D y 3D
Juziel Torres
 
Estereoscopia
EstereoscopiaEstereoscopia
Estereoscopia
Juan Pérez
 
Unidad 3 graficacion
Unidad 3 graficacionUnidad 3 graficacion
Unidad 3 graficacion
Andhy H Palma
 
PROYECCIONES ORTOGONALES EN SOLIDOS.pdf
PROYECCIONES ORTOGONALES EN SOLIDOS.pdfPROYECCIONES ORTOGONALES EN SOLIDOS.pdf
PROYECCIONES ORTOGONALES EN SOLIDOS.pdf
MARISOLRUTMERICHOQUE
 
Introducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLIntroducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGL
kdeespana
 
Algebra lineal
Algebra linealAlgebra lineal
Algebra lineal
cubo321
 
Primitivas
PrimitivasPrimitivas
Primitivas
ITSP
 
Programación Open GL ES en iPhone e iPod touch
Programación Open GL ES en iPhone e iPod touchProgramación Open GL ES en iPhone e iPod touch
Programación Open GL ES en iPhone e iPod touch
Blogintosh
 
Tarea unidad 3 graficacion
Tarea unidad 3 graficacionTarea unidad 3 graficacion
Tarea unidad 3 graficacion
Danny Limon
 
Semana1 3d
Semana1 3dSemana1 3d
Semana1 3d
Luis Gomez
 
Proyecciones graficas
Proyecciones graficasProyecciones graficas
Proyecciones graficas
joaoreasco
 
Vision estereoscopica
Vision estereoscopicaVision estereoscopica
Vision estereoscopica
Marilia Leon Santamaria
 
Estela y naye
Estela y nayeEstela y naye
Estela y naye
Guillermo Mendoza
 
Clase Dibujo Industrial, Clase de dibujo industral
Clase Dibujo Industrial, Clase de dibujo industralClase Dibujo Industrial, Clase de dibujo industral
Clase Dibujo Industrial, Clase de dibujo industral
JosDavidMoratayaPrez
 

Similar a 03 open gl_perspectivas (20)

Iniciación a OpenGL
Iniciación a OpenGLIniciación a OpenGL
Iniciación a OpenGL
 
Graficacion u 3
Graficacion u 3Graficacion u 3
Graficacion u 3
 
10 HERRAMIENTAS PARA CREAR UNA ESTRUCTURA 3D EN.pptx
10 HERRAMIENTAS PARA CREAR UNA ESTRUCTURA 3D EN.pptx10 HERRAMIENTAS PARA CREAR UNA ESTRUCTURA 3D EN.pptx
10 HERRAMIENTAS PARA CREAR UNA ESTRUCTURA 3D EN.pptx
 
Utp pd_iy_va_sap14 vision estereoscopica
 Utp pd_iy_va_sap14 vision estereoscopica Utp pd_iy_va_sap14 vision estereoscopica
Utp pd_iy_va_sap14 vision estereoscopica
 
Utp pd_iy_va_sap14 vision estereoscopica
 Utp pd_iy_va_sap14 vision estereoscopica Utp pd_iy_va_sap14 vision estereoscopica
Utp pd_iy_va_sap14 vision estereoscopica
 
Examen g
Examen gExamen g
Examen g
 
AutoCad Basico 2D y 3D
AutoCad Basico 2D y 3DAutoCad Basico 2D y 3D
AutoCad Basico 2D y 3D
 
Estereoscopia
EstereoscopiaEstereoscopia
Estereoscopia
 
Unidad 3 graficacion
Unidad 3 graficacionUnidad 3 graficacion
Unidad 3 graficacion
 
PROYECCIONES ORTOGONALES EN SOLIDOS.pdf
PROYECCIONES ORTOGONALES EN SOLIDOS.pdfPROYECCIONES ORTOGONALES EN SOLIDOS.pdf
PROYECCIONES ORTOGONALES EN SOLIDOS.pdf
 
Introducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLIntroducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGL
 
Algebra lineal
Algebra linealAlgebra lineal
Algebra lineal
 
Primitivas
PrimitivasPrimitivas
Primitivas
 
Programación Open GL ES en iPhone e iPod touch
Programación Open GL ES en iPhone e iPod touchProgramación Open GL ES en iPhone e iPod touch
Programación Open GL ES en iPhone e iPod touch
 
Tarea unidad 3 graficacion
Tarea unidad 3 graficacionTarea unidad 3 graficacion
Tarea unidad 3 graficacion
 
Semana1 3d
Semana1 3dSemana1 3d
Semana1 3d
 
Proyecciones graficas
Proyecciones graficasProyecciones graficas
Proyecciones graficas
 
Vision estereoscopica
Vision estereoscopicaVision estereoscopica
Vision estereoscopica
 
Estela y naye
Estela y nayeEstela y naye
Estela y naye
 
Clase Dibujo Industrial, Clase de dibujo industral
Clase Dibujo Industrial, Clase de dibujo industralClase Dibujo Industrial, Clase de dibujo industral
Clase Dibujo Industrial, Clase de dibujo industral
 

Más de Benjamín Joaquín Martínez

Sistemas de detección de intrusiones.pdf
Sistemas de detección de intrusiones.pdfSistemas de detección de intrusiones.pdf
Sistemas de detección de intrusiones.pdf
Benjamín Joaquín Martínez
 
Portafolio ingles.pdf
Portafolio ingles.pdfPortafolio ingles.pdf
Portafolio ingles.pdf
Benjamín Joaquín Martínez
 
Tabla de llamadas para linux x86_64 bits.pdf
Tabla de llamadas para linux x86_64 bits.pdfTabla de llamadas para linux x86_64 bits.pdf
Tabla de llamadas para linux x86_64 bits.pdf
Benjamín Joaquín Martínez
 
Sistema de registro con php
Sistema de registro con phpSistema de registro con php
Sistema de registro con php
Benjamín Joaquín Martínez
 
compiladores6Benjamin133467.pdf
compiladores6Benjamin133467.pdfcompiladores6Benjamin133467.pdf
compiladores6Benjamin133467.pdf
Benjamín Joaquín Martínez
 
Compiladores5_Benjamin133467.pdf
Compiladores5_Benjamin133467.pdfCompiladores5_Benjamin133467.pdf
Compiladores5_Benjamin133467.pdf
Benjamín Joaquín Martínez
 
133467 compiladores 4.pdf
133467 compiladores 4.pdf133467 compiladores 4.pdf
133467 compiladores 4.pdf
Benjamín Joaquín Martínez
 
133467_COMPILADORES3.pdf
133467_COMPILADORES3.pdf133467_COMPILADORES3.pdf
133467_COMPILADORES3.pdf
Benjamín Joaquín Martínez
 
133467_COMPILADORES2
133467_COMPILADORES2133467_COMPILADORES2
133467_COMPILADORES2
Benjamín Joaquín Martínez
 
COMPILADORES1.pdf
COMPILADORES1.pdfCOMPILADORES1.pdf
COMPILADORES1.pdf
Benjamín Joaquín Martínez
 
Algoritmos de búsqueda.pdf
Algoritmos de búsqueda.pdfAlgoritmos de búsqueda.pdf
Algoritmos de búsqueda.pdf
Benjamín Joaquín Martínez
 
Logica proposicional
Logica proposicionalLogica proposicional
Logica proposicional
Benjamín Joaquín Martínez
 
Lenguajes para dispositivos moviles 133467
Lenguajes para dispositivos moviles 133467Lenguajes para dispositivos moviles 133467
Lenguajes para dispositivos moviles 133467
Benjamín Joaquín Martínez
 
Bd distribuidas
Bd distribuidasBd distribuidas
diseño de bases de datos distribuidas
diseño de bases de datos distribuidas   diseño de bases de datos distribuidas
diseño de bases de datos distribuidas
Benjamín Joaquín Martínez
 
procesamiento de consultas distribuidas
procesamiento de consultas distribuidasprocesamiento de consultas distribuidas
procesamiento de consultas distribuidas
Benjamín Joaquín Martínez
 
Algoritmo de INGRES
Algoritmo de INGRES Algoritmo de INGRES
Algoritmo de INGRES
Benjamín Joaquín Martínez
 
Fragmentación
FragmentaciónFragmentación
Modelo cliente servidor
Modelo cliente servidorModelo cliente servidor
Modelo cliente servidor
Benjamín Joaquín Martínez
 
Arquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidasArquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidas
Benjamín Joaquín Martínez
 

Más de Benjamín Joaquín Martínez (20)

Sistemas de detección de intrusiones.pdf
Sistemas de detección de intrusiones.pdfSistemas de detección de intrusiones.pdf
Sistemas de detección de intrusiones.pdf
 
Portafolio ingles.pdf
Portafolio ingles.pdfPortafolio ingles.pdf
Portafolio ingles.pdf
 
Tabla de llamadas para linux x86_64 bits.pdf
Tabla de llamadas para linux x86_64 bits.pdfTabla de llamadas para linux x86_64 bits.pdf
Tabla de llamadas para linux x86_64 bits.pdf
 
Sistema de registro con php
Sistema de registro con phpSistema de registro con php
Sistema de registro con php
 
compiladores6Benjamin133467.pdf
compiladores6Benjamin133467.pdfcompiladores6Benjamin133467.pdf
compiladores6Benjamin133467.pdf
 
Compiladores5_Benjamin133467.pdf
Compiladores5_Benjamin133467.pdfCompiladores5_Benjamin133467.pdf
Compiladores5_Benjamin133467.pdf
 
133467 compiladores 4.pdf
133467 compiladores 4.pdf133467 compiladores 4.pdf
133467 compiladores 4.pdf
 
133467_COMPILADORES3.pdf
133467_COMPILADORES3.pdf133467_COMPILADORES3.pdf
133467_COMPILADORES3.pdf
 
133467_COMPILADORES2
133467_COMPILADORES2133467_COMPILADORES2
133467_COMPILADORES2
 
COMPILADORES1.pdf
COMPILADORES1.pdfCOMPILADORES1.pdf
COMPILADORES1.pdf
 
Algoritmos de búsqueda.pdf
Algoritmos de búsqueda.pdfAlgoritmos de búsqueda.pdf
Algoritmos de búsqueda.pdf
 
Logica proposicional
Logica proposicionalLogica proposicional
Logica proposicional
 
Lenguajes para dispositivos moviles 133467
Lenguajes para dispositivos moviles 133467Lenguajes para dispositivos moviles 133467
Lenguajes para dispositivos moviles 133467
 
Bd distribuidas
Bd distribuidasBd distribuidas
Bd distribuidas
 
diseño de bases de datos distribuidas
diseño de bases de datos distribuidas   diseño de bases de datos distribuidas
diseño de bases de datos distribuidas
 
procesamiento de consultas distribuidas
procesamiento de consultas distribuidasprocesamiento de consultas distribuidas
procesamiento de consultas distribuidas
 
Algoritmo de INGRES
Algoritmo de INGRES Algoritmo de INGRES
Algoritmo de INGRES
 
Fragmentación
FragmentaciónFragmentación
Fragmentación
 
Modelo cliente servidor
Modelo cliente servidorModelo cliente servidor
Modelo cliente servidor
 
Arquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidasArquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidas
 

Último

herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
Eduardo455921
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
PaulDelgadoSoto
 
Buscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - BuscafiestaBuscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - Buscafiesta
holabuscafiesta
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
Maria Celeste Trujillo Cruz
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
dayronfabricioruizmo
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
eliersin13
 

Último (8)

herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
 
Buscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - BuscafiestaBuscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - Buscafiesta
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
 

03 open gl_perspectivas

  • 1. Introducción a los gráficos 3D Instituto Tecnológico de Oaxaca
  • 2. Matrices de proyección • Hasta ahora hemos visto las matrices que afectan al modelo - Por ejemplo: translación, rotación, escalado, .. - Todas ellas se engloban en la matriz OpenGL denominada “modelview matrix” • Veremos que la proyección también se representa por una matriz. • A continuación veremos cómo representar varias de las proyecciones más usuales con la “matriz de proyección” • Al final, OpenGL combinará las matrices de modelo con la matriz de proyección.
  • 4.
  • 5. Proyección paralela • Trabaja situando el centro de proyección en el infinito. - Todos los puntos tienen la misma dirección de proyección (DOP) (Son rectas paralelas) View Plane DOP
  • 6. Proyección paralela • Tipos de proyección paralela - Ortogonal: • Paralela a la normal al plano de proyección (planta, perfil, alzado). • Axonométrica (planos de proyección no normales a un eje principal). - Oblicua: Dirección de proyección no normal al plano de proyección.
  • 7. Proyecciones ortogonales • La dirección de proyección es perpendicular al plano Front Top Side
  • 10. Proyecciones oblicuas • La dirección de proyección no es perpendicular al plano de proyección 45 Cavalier (DOP = 45o) 6 Cabinet (DOP = 63.4o)
  • 11. Proyección Ortogonal • Transformación básica • Las unidades originales del mundo se conservan - Se suelen utilizar unidades en pixels.
  • 12. Orthographic: Screen Space Transformation left =10 m right = 20 m top=20 m (max pixx, max pixy) (Alto en pixels) bottom=10 m (0, 0) (ancho en pixels)
  • 13. La transformada para Ortográfica • Las esquinas (left, right, top, bottom) se refieren al volumen de visualización en las coordenadas de modelado • Ancho y largo (width y height) se miden en pixels
  • 14. Perspectiva isométrica • Técnicamente es una proyección una axonométrica cilíndrica ortogonal. • Constituye una representación visual de un objeto tridimensional en dos dimensiones, en la que los tres ejes ortogonales principales, al proyectarse, forman ángulos de 120º, y las dimensiones paralelas a dichos ejes se miden en una misma escala. • Muy utilizado en juegos (antiguos y no tan antiguos) • En el mundo de los juegos se la conoce por “perspectiva ¾”
  • 15. Perspectiva isométrica Juego Syndicate (1993) El castillo del Louvre, dibujo isométrico de Viollet-Le-Duc,(1814-1879). (Wikipedia)
  • 17. Proyección en perspectiva • Ya se utilizaba en el renacimiento (Donatello, Brunelleschi, y DaVinci) • La idea es que los objetos lejanos los veamos más pequeños • Las líneas paralelas convergen hacia un punto
  • 18. Proyección de perspectiva • Alternativas según el número de puntos de fuga: 3-Point 2-Point 1-Point Perspective Perspective Perspective
  • 19. La revolución en los juegos Wolfenstein 3D Doom
  • 20. Proyección de perspectiva • Es una proyección cercana a la realidad. Vemos los objetos lejanos más pequeños Un cuadro representa nuestro mundo real en 3D
  • 21. Proyección de perspectiva • Cuando hacemos gráficos en 3D, pensamos que el monitor es cómo una ventana 2D a nuestro mundo en 3D. ¿Cómo de grande debería ser?
  • 22. Proyección de perspectiva • Las matemáticas se basan en igualdad de triángulos: X (0,0,0) d View plane x’ = ? P (x, y, z) Z
  • 23. Proyección de perspectiva • Dado un punto[x, y, z, 1]T queremos calcular su proyección en el plano: • ¿Qué aspecto tendrá nuestra matriz?
  • 24. La matriz de proyección de perspectiva • La solución: 1 0 0 0 Mperspectv 0 1 0 0 0 0 1 0 0 0 1 d 0
  • 25. La matriz de proyección de perspectiva • Por ejemplo: x 1 0 0 0 x y 0 1 0 0 y z 0 0 1 0 z zd 0 0 1d 0 1 • En coordenadas 3D: x zd , z y d , d
  • 26. Perspectiva vs Paralela • La proyección en perspectiva + El tamaño depende de la distancia. Parece real - Las distancias y los ángulos no se conservan (en general) - Las líneas paralelas no se representan como paralelas (en general) • La proyección paralela + Es ideal para realizar medidas + Las líneas paralelas siguen siendo paralelas - Los ángulos no tienen que conservarse - No parece real
  • 27. OpenGL: Perspectiva • Veamos cómo poner los parámetros de la proyección (p.e. field of view) • Normalmente solemos utilizar una proyección de perspectiva: - Vemos los objetos lejanos más pequeños - Se pierden en un punto central lejano - Esto define lo que llamamos: view frustum • Ya sabemos que existen otras proyecciones: orthográfica, isométrica
  • 28. Cómo funciona en OpenGL • Ya sabemos que OpenGL tiene muchas matrices de transformaciones y que funcionan mediante pilas • Las dos matrices (y pilas) más importantes son: GL_MODELVIEW y GL_PROJECTION • Los puntos se multiplican primero por la matriz de modelview y después por la de proyección. - GL_MODELVIEW: Representa la transformación del objeto a la cámara - GL_PROJECTION: Representa la transformación de la cámara a la ventana - glViewport(0,0,w,h): Es la transformación de la ventana a la pantalla física
  • 29. Cómo lo hacemos con OpenGL • Tenemos que tener en cuenta tres aspectos o pasos fundamentales: - Situar la cámara • Define la matriz de model-view - Seleccionamos una lente • Define la matriz de proyección - Definimos el volumen a representar • Define el área que podemos evitar al dibujar (clipping) 29
  • 31. Ejemplo con OpenGL void SetUpViewing() { // The viewport isn’t a matrix, it’s just state... glViewport( 0, 0, window_width, window_height ); // Set up camera->screen transformation first glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective( 60, 1, 1, 1000 ); // fov, aspect, near, far // Set up the model->camera transformation glMatrixMode( GL_MODELVIEW ); gluLookAt( 3, 3, 2, // eye point 0, 0, 0, // look at point 0, 0, 1 ); // up vector glRotatef( theta, 0, 0, 1 ); // rotate the model glScalef( zoom, zoom, zoom ); // scale the model }
  • 32. La cámara de OpenGL • En OpenGL, y por defecto, las matrices son matrices identidad (tanto la de modelview como la de proyección) • La cámara, por defecto, se encuentra en el origen y mira hacia los z negativos • OpenGL también define un volumen de visualización por defecto igual a un cubo con lados de longitud igual a 2 y centrado en el origen. 32
  • 33. Situar la cámara • La cámara tiene un ojo (conocido en inglés como el “view reference point” o VPR). • La cámara “mira” hacia un punto distante. • La cámara tiene una orientación (puede estar “tumbada”) • Solemos especificar estos parámetros mediante gluLookAt • La cámara tiene un volumen de visualización definido por el “frustum” • Solemos especificar estos parámetros mediante las llamadas a frustum o perspective
  • 36. Perspectiva en OpenGL (Field of View) • A veces es difícil utilizar frustum. • perpective(fovy, aspect, near, far) suele resultar más fácil. front plane aspect = w/h
  • 37. Plano Lejano y Cercano • El volumen de la cámara define dos planos importantes: planos cercano y lejano (near y far) • Son importantes ya que definen el rango de z con el que va a trabajar OpenGL. • Mal situados pueden originar problemas de visualización. • Uno de los problemas más comunes es el que se produce cuando el z-buffer pierde precisión.
  • 38. Moviendo la cámara • Cuando queremos ver objetos situados tanto en posiciones de z positiva y negativa, podemos hacer dos cosas: - Mover la cámara • Trasladamos la cámara en la dirección positiva de z. - Movemos los objetos • Trasladamos los objetos en la dirección negativa de z. • Ambas soluciones son equivalentes ya que modifican la matriz del model-view - Translate(0.0,0.0,-d); - d > 0 38
  • 39. Moviendo la cámara frames after translation by -d d > 0 default frames 39
  • 40. Moviendo la cámara • Podemos mover la cámara mediante cualquier combinación de transformaciones • Por ejemplo: - Rotamos la cámara - La movemos lejos del origen - La matriz Model-view C = TR 40
  • 41. Otras formas de trabajar • La función LookAt es una forma de poner la cámara, pero no la única • Otras formas podrían ser - Poniendo los parámetros: View reference point, view plane normal, view up (PHIGS, GKS-3D) - Definiendo los ángulos de navegación: la dirección (heading o yaw), elevación (pitch) y ángulo de guiñada (roll). - Definiendo los ángulos de dirección, - Etc͙ 41
  • 44. La proyección por defecto es la ortogonal clipped out 2 z=0 44
  • 45. Cómo definir la vista ortogonal Ortho(left,right,bottom,top,near,far) Los planos cercano y lejano se miden desde la cámara 45