Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCION...................................................................................2
Perspectiva conceptos...........................................................................3
La cámara en OpenGL..........................................................................8
LookAt..................................................................................................11
Ejemplo de perspectiva........................................................................13
CONCLUSION.....................................................................................31
que se diferencian cada una de estas. De igual manera, se espera que con la
practico del uso en acción de este tipo de visión de cuerpos, ya sea de forma
composición tridimensional.
conectan los puntos del objeto representado con el punto desde el que se observa
caracteriza por el hecho de que los objetos representados se hacen más pequeños a
representación de líneas paralelas del modelo. La mira forma un haz cónico, cuyo
todos los elementos visuales son paralelos entre sí, lo que equivale a infinitos ángulos
de visión. Con este tipo de perspectiva, las líneas paralelas en el modelo permanecen
paralelas a la imagen, por lo que los objetos no se encogen a medida que se alejan del
espectador y no hay un punto de fuga para que las líneas de los personajes converjan
- La convergencia de líneas
puntos de fuga. El ejemplo más obvio de un punto de fuga es una vía de tren donde las
vías del tren parecen converger en un punto distante. Según la lente y el ángulo de
visión utilizados, el punto de fuga puede aparecer algo lejano (ver figura 1.3).
- La escala
cámara. Por ejemplo, un camino bordeado de árboles a ambos lados (ver figura 1.4).
Figura 1.4. Ejemplo de escala
- El tono y el color
crean la impresión visual de estar detrás de los tonos oscuros. Por ejemplo, en una
toma de un paisaje brumoso, las montañas (tonos oscuros) parecen estar por delante
del cielo (tonos claros). Si hay varias pilas, se clasifican por intensidad del tono de color
un plano y darles un efecto tridimensional. Los objetos están representados por tres
se muestra en el eje X.
caballera.
mismo ángulo (120º). Las dimensiones siempre se refieren a tres ejes y su origen está
y la inclinación del eje Y con respecto al Z es de 135 grados. En este caso, las medidas
X y Z son reales y las medidas Y tienen un factor de reducción de 0,5 (ver imagen 1.7
La cámara en OpenGL.
una escena en OpenGL. Se define por la posición del espectador en la escena y hacia
visualización y en qué ángulos. Se puede mover la cámara por la escena para ver
diferentes áreas o simular movimiento, pero a menudo es más fácil o más eficiente
una pequeña cantidad de objetos, puede ser más fácil aplicar una
perspectiva. Otros efectos como la lente de ojo de pez, la distancia focal y otras
mundial, la dirección en la que mira, un vector que apunta hacia la derecha y un vector
con 3 ejes unitarios perpendiculares con la posición de la cámara como origen (ver
imagen 1.8).
de la cámara.
4. Eje ascendente. Ahora que tenemos tanto el vector del eje x como
el vector del eje z, recuperar el vector que apunta al eje y positivo de la cámara es
LookAt
coordenadas usando 3 ejes perpendiculares (o no lineales), puede crear una matriz con
esos 3 ejes más un vector de traducción y puede transformar cualquier vector en ese
LookAt hace.
El uso de esta matriz LookAt como nuestra matriz de vista transforma efectivamente
todas las coordenadas del mundo al espacio de vista que acabamos de definir ( ver
imagen 1.10).
Figura 1.10. Ejemplo de matriz LookAt
de posición de la cámara.
GLM ya hace todo este trabajo por nosotros. Solo tenemos que
especificar una posición de cámara, una posición de destino y un vector que represente
el vector ascendente en el espacio mundial (el vector ascendente que usamos para
calcular el vector correcto). GLM luego crea la matriz LookAt que podemos usar como
en la que llegue a establecer la cámara (rotación de los cubos) las figuras tomaran una
forma diferente, si la vista de los cubos es frontal la figura parecerá 2D (ver imagen
2.1), sin embargo, si se rota se lograra ver la profundidad que las figuras poseen,
pasando de 2D a 3D, y lograra mostrar lo que escondía, es decir, los demás cubos
atrás del cubo naranja (ver imagen 2.2), sin embargo, el ejemplo muestra cómo
funciona la cámara dentro de un juego, ya que si se hace el zoom suficiente las figuras
irán desapareciendo una a uno, y aunque existan no se verán, lo que concordaría con
este no se podrá apreciar, como cuando una persona camina y deja de ver los objetos
que antes estaban delante de el, pero al avanzar los pierde ya que pasan a ser objetos
Ejemplo de perspectiva
#include <windows.h>
#include <GL/glut.h>
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
/*
|||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||
*/
float angulolento=0.0,rotacion_y=0,rotacion_x=0;
//SE ESTABLECE LA VARIABLE PARA PODER ESCALAR LA
PANTALLA
float tamanio=0;
DE INSTRUCCIONES
CONVERTIRA A CHAR
int vel=0;
//METODO INICIALIZA
void Inicializa()
GLUT_DEPTH );
PANTALLA
EL NOMBRE DE LA ESCENA
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50,50,-50,50,-50,50); //SE ESTABLECE LA LONGITUD DE
LA ESCENA EN X Y Z
/*
{ glViewport(0, 0, w, h);
glMatrixMode(GL_MODELVIEW);
}*/
unsigned int i;
glRasterPos2i(PosX,PosY);
glutBitmapCharacter(GLUT_BITMAP_9_BY_15, s[i]);
break;
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,
s[i]);
break;
glutBitmapCharacter(GLUT_BITMAP_9_BY_15, s[i]);
break;
LA TECLA DERECHA
10
rotacion_y +=10;
10
rotacion_y -=10;
LA TECLA UP
10
rotacion_x +=10;
}
10
rotacion_x -=10;
//METODO DE ESCALAMIENTO
switch (key)
exit(0);
tamanio+=0.1; //aumenta
break;
alejamiento
tamanio-=0.1;//disminuye
break;
tamanio=0;//establece el tamanio
break;
void Dibuja()
{ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
if (tamanio ==0){
tecla
LA LETRAS INSTRUCCIONES
glBegin(GL_QUADS);
glVertex2i(-7,34);
glVertex2i(-7,28);
glVertex2i(13,28);
glVertex2i(13,34);
glEnd();
glColor3f(0.0,0.0,0.0); //Se establece el color a los textos siguientes
las instrucciones
las instrucciones
LA LETRAS INSTRUCCIONES
glVertex2i(-28,30);
glVertex2i(-28,-45);
glVertex2i(35,-45);
glVertex2i(35,30);
glEnd();
glBegin(GL_QUADS);
glVertex2i(-50,50);
glVertex2i(-50,-50);
glVertex2i(50,-50);
glVertex2i(50,50);
glEnd();
}//FIN DE LA CONDICION IF
CABLES
glTranslatef(0.0,0.0,0.0);
EJE "Y"
glRotatef(rotacion_x,1.0,0.0,0.0);
glRotatef(rotacion_y,0.0,1.0,0.0);
SOLIDO
ANTERIOR
//glRotatef(rotate_x,1.0,0.0,0.0);
//glRotatef(rotate_y,0.0,1.0,0.0);
CUBO SOLIDO
ANTERIOR
ROTAR EL CUBO
//EN EL EJE "X" Y "Y", DESCOMENTARLO EN CASO DE QUERER
QUE ROTE
//glRotatef(rotate_x,1.0,0.0,0.0);
//glRotatef(rotate_y,0.0,1.0,0.0);
ROTAR EL CUBO
QUE ROTE
//glRotatef(rotate_x,1.0,0.0,0.0);
//glRotatef(rotate_y,0.0,1.0,0.0);
glutSwapBuffers();
//METODO MAIN
{ glutInit(&argc, argv);
ESPECIALES
OPRIMIDA
LA ESCENA
return 0;
CONCLUSION
cosas de distintas formas, las variaciones dependerán desde el ángulo del que se
vean, un camino podrá verse más largo o más corto dependiendo de lo angosto del
aplicar las técnicas de ilusiones para así administrar recursos, desde la posición de la
creativas y otra más simples, la forma más optima recae en cada programador y las
siempre es así, existen formas de mostrar profundidad con modelos 2d, siendo la
animación y los dibujos los ejemplos más claros, pero más difíciles de realizar debido a
los puntos de fuga.