Primeros pasos en OpenGL

Si bien la forma en que se representan las coordenadas cartesianas en matemáticas es bastante estándar (‘x’ positivo a la derecha y ‘y’ positivo arriba), en los sistemas de dibujo en el computador hay variaciones dependiendo del sistema de dibujo sobre el cual se esté trabajando y el caso del 3d es totalmente dependiente de desde donde, hacia donde y que es “arriba”. Esto quiere decir que las coordenadas del sistema abstracto no tienen que ser concordantes con el sistema de coordenadas sobre la pantalla, por lo que se deber realizar un proceso llamado mapeo de coordenadas. En este caso el mapeo debe hacerse del sistema abstracto de coordenadas de OpenGL al sistema de coordenadas en ventana del sistema operativo (window, UNIX, linux, mac, etc). El siguiente esquema muestra tres posibles formas de realizar el mapeo de coordenadas:

Mapeo de Coordenadas

El grafico muestra tres de las posibles formas de realizar el mapeo las coordenadas. En el Modo 1, el punto (0,0) en coordenadas de dibujo es el correspondiente al extremo inferior izquierdo de la ventana y el punto (200,200) estará en el extremo superior derecho. Tal vez es uno de los modos que parece más “natural”

En el Modo 2, el punto (0,0) en coordenadas de dibujo es el centro de la ventana y los puntos extremos estarán situados en los cuatro cuadrantes, en (100,100) superior derecha, (-100,100) superior izquierda, (-100.-100) inferior izquierda y (100,-100) inferior derecha. Este modo es similar a la forma en que lo muestra la cámara por defecto de OpenGL, con el agregado del eje ‘z’ positivo “saliendo” de la pantalla.

En el Modo 3, el punto (0,0) en coordenadas de dibujo se encuentra en el extremo superior izquierdo de la ventana y el punto (200,200) corresponde al extremo inferior derecho. Hay que notar, que en este modo el eje ‘y’ positivo se encuentra “cabeza abajo”, es decir, cuando un punto aumenta su coordenada ‘y’ va hacia abajo, no hacia arriba. Este modo es usado generalmente por los dispositivos de hardware y es la forma por defecto de GDI.

Estas son solo algunas formas de mapeo de coordenadas y en cualquier caso y con un poco de matemáticas (matrices de transformación) se puede pasar de cualquier modo de mapeo a otro.

PROYECCION

Los monitores actuales de PC, los televisores, las pantallas de PDA, de celulares y consolas portátiles son todos dispositivos bidimensionales, la percepción 3d sobre estos dispositivos se debe a un conjunto de “trucos” para engañar al ojo humano y hacerle ver objetos “tridimensionales” sobre un dispositivo bidimensional, el primero de estos trucos es la proyección. La proyección consiste en generar una imagen bidimensional de una escena tridimensional, algo así como sacarle una foto, o pintar un cuadro de la escena. Tal vez las dos mas conocidas y las que permite trabajar OpenGL directamente son la ortográfica y la perspectiva.

Proyección Ortográfica: En este tipo de proyección se trazan rayos paralelos al plano de proyección (son paralelos porque se considera la fuente de “luz”o centro de proyección en el infinito) y la imagen se forma con aquellos rayos que intersequen al objeto. Esto se ve mas claro en el diagrama.

Proyeccion orthografica

Las imágenes producidas por este tipo de proyección se ven como si el objeto se hubiera “aplanado” sobre el plano de proyección (que puede ser tomado como la pantalla), es decir, no existe sensación de profundidad, ya que variando la distancia del objeto al plano de proyección, no variará el tamaño de la imagen producida por este. Este tipo de proyección es usada en aplicaciones CAD porque permite ver el modelo desde diferentes partes (bien sea rotando el objeto o la cámara) sin que se deformen las dimensiones en la proyección.

Una forma de dibujo 2d basada en esta proyección es utilizada en los videojuegos, se trata de los juegos con perspectiva isométrica donde se conservan parte de las medidas, al igual que las líneas paralelas. También es posible realizar juegos 2d utilizando esta perspectiva, ya que los gráficos se ven planos sobre la pantalla porque su dimensión es independiente de su profundidad con respecto al plano de proyección.

1 2 3

Compartir esta entrada

DiggReddit
  • http://twitter.com/rubdottocom Rub/ásicos estudiados en el álg/

    Excelente tutorial, tanto este como el de las primitivas de OpenGL 😀

  • Alejandro

    Gran tutorial. El mas detallado y especifico que he encontrado.

  • Carlos Martinez

    Muy bueno para empezar a trabajar con OpenGL.

  • carlos

    necesito toda la informacion necesaria para programar en opengl,pero poder descargarla para estudiar.

  • http://www.helmer.com.pe el verdugo

    muy bueno causa chevre el tutorial man chevere sigue sacnado ams ps man

  • Adan

    mmmm pos mas o menos

  • Salvatore

    Yo queria ver codigo, jeje. Esta muy buena la explicación

  • Sephirot

    Gracias por hacer tutoriales. Se agradece. Sigue asi ! 😉

  • http://aduisc.blogspot.com kevin martinez

    Gracias por tan excelente aporte, aun no me queda claro lo de las perspectivas, pero seguiré dandome mis vueltas por este sitio

  • Publiventasmen