martes, 31 de enero de 2012

Resumen Cronologico de Graficación

En los inicios las computadorasse utilizaban desde el principio para aplicaciones cientificas. ENIAC, una de las primeras maquinas computarizadas, calculaba las den sisades de neutrón para ver si explotaria la bomba de hidrógeno. Los resultadios llegaban en dispositivos de impresión sencillos que producian secuencias alfanumericas que los usuarios debían examinar. La siguiente evolució fue la creación de dispositivos de visualización que permitian al usuario de una maquina observar resultados del procesaeinto en el dispositivo. CTR (Tubo de Rayos Catódicos) utilizada por la primera computadora llamada WHIRLWIND construida en la MIT (Instituto Tecnologico de Massachusstes) en 1950 fue para simular vuelos de entrenamiento de los escuadromes de bombarderos de  la marina de Estados Unidos.

Durante la decada de 1950 se continuó el desarrollo de los dispositivos de entrada. El sistema para la defensa espacial SAGE, desarrolado para convertir sonidos de detección de un radar ene imagenes fue el primero en emplear un lápiz óptico para seleccionar símbolos en la pantalla.

El primer videojuego de la historia creado en 1952 fue OXO. Producto de la tessi doctoral de Alexander Sandy Douglas en la Universidad de Cambridge para demostrar la interactividad entre computadoras y seres humanos. El juego era una versión del conocido "tres en raya" y fue escrito para la com´putadora EDSAC.

El programa podía tomar decisiones en función de los movimientos del jugador que transmitía las órdenes de un dial telefonico integrado en el sistema.
La enorme computadora EDSAC en la que se corría el juego fue la primera computadora electrónica capaz de almacenar programas.

En 1961 un estudiante dl MIT, Steve Russell dirigió un equipo que creó el primer videojuego interactivo de naves espaciales. Le tomó al equipo cerca de 200 horas-hombre escribir la primera versión de Spacewar. El juego se escribió en una PDP-1 que fue una donación de DEC al MIT esperando que en el MIT se pudiera hacer algo trascendente con su producto.

Escena de Spacewar y maquina DEC PDP-1



















En 1963 cuando se creó el primer sistema que permitia la manipulació directa de objetos graficos y fue el precursor de los ssitemas modernos de gráficos por computadora y los programas de diseño asistido por computadora (CAD). El sistema, creado para aplicaciones de diseño e ingeniería fue desarrollado por Ivan Sutherland como trabajo de tesis doctoral en el MIT.

El sistema de Sutherland, llamado Sketch pad se basaba en la "interfaz" del TX-2, una de las primeras computadoras que por medio de una especie de lápiz d eluz y una serie de interruptores permitía formas a la computadora.
El Sketch pad inventado por Suhterland fue el primer sistema interactivo de gráficos por computadora utilizado para aplicaciones de diseño e ingeniería.

En 1968 Tektronix introdujo un CTR cpm tubo de almacenamiento que permitía retener permanentemente un dibujo hasta que el usueario dcidiera borrarlo. Este sistema eliminó la necesidad de utlizar costoso sistemas especiales de hardware y memoria para redibujarlo.

En 1970 un estudiante Edwin Catmull iniciaba ssu estudios en la Universidad de Utah, de ahi crecio haciendo diseños gráficos de Disney, Catmull amaba la animación aunque rapidamente descubrió que no tenia talento para dibujar. Pero Catmull vio las computadoras como una evolución natural de la animación y queria ser parte de esa evolución.

Apartir de 1970 se comenzaron a introducir los gráficos por computadora en el mundo de la televisión por medio del desarrollo de tecnicas y sistemas complejos de hardware y software como ANIMAC, SCANIMATE Y CAESAR.

Uno de los principales avances para los gráficos por computadora apareció en escena en 1971, el microprocesador. Usando tecnología de circuitos integrados desarrollada en 1959, la electrónica de un procesador de computadora fue reducido a un único chip, el microprocesador a veces llamado CPU (Unidad Central de Procesamiento). Una de las primeras microcomputadoras de escritorio diseñadas para uso personal fue la Altair 8800 de Micro Instrumention Telemetry Systems (MITS).

En el mismo año Nolan Kay Bunshell junto con un amigo creo el Atari. Después de esto comenzó el desarrollo de un videojuego de arcadia llamado Pong, que se conoció en 1972 y comenzó una industria que continúa siendo hasta hoy una de las que mayor uso hace los gráficos por computadora. Tanto en la industria de los videojuegos y entretenimiento como en las aplicaciones cientificas se presentaron avances con gran rapidez. Durante la década de los 70's Don Greenberg de la Universidad de Cornell creó un laboratorio de gráficos por computadora que produjo nuevos métodos de simulación realista de superficies.

A finales de los 70's Carpenter había construido modelos de 3D de diseños de aeroplanos y quería algunos escenarios para usarlos. En 1986 se fomó Pixar cuando la división de gráficos por computadora de Lucasfilm fue adqueirida por Steven Jobs. El equipo pionero de la compañia formado por John Lasseter, Ed Catmull y Ralph Guggenheim produjo el famoso software Renderman que describe escenas tridimensionales y convertirlas en imágenes digitales foto realistas. Terminator 2 fue estrenada en 1991 e impuso un nuevo estandar para los efectos con imágenes generadas por computadora (CGI). El roboto maligno T-1000 en T2 fue alternado entre el actor Robert Patrick y una versión animada computarizada en 3D de Patrick.

En 1995 se presentó la primera película de larga duración con gráficos y animaciones en 3D por computadora. La película realizada por Pixar fue llamada Toy Story. La película no presentó mejoras revolucionarias, sin embargo solo por ser una película de larga duración tuvo un gran impacto en la manera en que la gente percibía los gráficos por computadora. Para 1995 las audiencias de todo el mundo estaban acostumbradas a ver asombrosos gráficos en películas, pero hubo otra revolución de gráficos, que comenzó en el año. Sony lanzó al mercado mundial su consola de videojuegos Playstation. 1996 podrá no ser el año en el uso de CGI en películas, pero la industria de los videojuegos experimentó un gran avance en los gráficos 3D con la salida de Quake de ID Software. 3D acelerado por hardware se convirtió en la frase de moda y al menos dos fabricantes sacaron al mercado aceleradores gráficos para PC.

En 1997 la industria de los videojuegos experimentó de nuevo una revolución, esta vez fue el acelerador 3DFX Voodo 3D. Este chip 3D aplastó por completo a la competencia con su incrible practico desempeño en 3D. Nintendo lanzó Gamecube en septiembre de 2001, al igual que el Gameboy Advance. Pero probablemente el gran evento del 2001 fue el lanzamiento de la consola Xbox de Microsoft. Durante 2003 aparecieron varias secuelas cinematográficas con grandes efectos especiales X-Men 2, Matrix 2 y Terminator 3 son solo algunos ejemplos Matrix Revolutions presentó una gran cantidad de asombroso sorprendentes. El 2004 fue un buen año para los videojuegos. Algunos de los juegos que aparecieron ese año como FarCry de Ubisoft fueron de los primeros juegos en utilizar los últimos avances en los gráficos por computadora como los shaders de Direct X 9.0. El segundo gran juego fue Doom 3, la secuela de la legendaria y revolucionaria serie de Doom. Para la película Spider-Man 3 de 2007 Sony Pictures Imageworks (SPI) usó el software Autodesk Maya para la animación en 3D, el modelado, texturizado y combinación de movimientos de los personajes y efectos visuales aproximadamente en 80% de las tomas realizadas por el estudio.











lunes, 30 de enero de 2012

Introducción a la graficación por computadora

El uso adecuado y provechoso de la tecnología han hecho de la computadora una dispositivo poderoso para producir imágenes en forma rápida y económica. Actualmente en todas las áreas es posible aplicar gráficas por compuadora con algún objetivo, por ello se ha generalizado la utilización de gráficas por computadora. De igual modo las gráficas por computadora se utilizan de manera rutinaria en diversas áreas, como en la ciencia, ingeniería, empresas, industria, gobierno, arte, entretenimiento, publicidad, educación, capacitación y presentaciones gráficas.

1.Aplicaciones de graficos de computadora

Representación de colores
Las computadoras almacenan y manipulan colores representándolos como una combinación de tres números. Por ejemplo, en el sistema de colores RGB (siglas en inglés de red-green-blue, 'rojo-verde-azul'), el computador utiliza sendos números para representar los componentes primarios rojo, verde y azul de cada color. Otros sistemas pueden representar otras propiedades del color, como por ejemplo el matiz (frecuencia de la luz), la saturación (la intensidad cromática) y el brillo.
Si se emplea un byte de memoria para almacenar cada componente de color en un sistema de tres colores, pueden representarse más de 16 millones de combinaciones cromáticas.

Efecto de escalonado (aliasing) y reducción del mismo
Como un monitor informático es esencialmente una rejilla de cuadrados coloreados contiguos, las líneas diagonales tienden a representarse con un aspecto escalonado. Este fenómeno, puede reducirse calculando lo cerca que está cada píxel a la línea ideal de la imagen dibujada y basar el color del píxel en su distancia a dicha línea. Por ejemplo, si el píxel está directamente sobre la línea, recibe el color más oscuro, y si sólo está parcialmente alineado, recibe un color más claro. Este proceso suaviza eficazmente la línea.

Procesado de imágenes
El procesado de imágenes es una de las herramientas más potentes e importantes dentro de los gráficos por ordenador. Sus técnicas se emplean en muchas aplicaciones, como detectar el borde de un objeto, realzar la imagen y reducir el ruido en el diagnóstico médico por imagen, difuminarla, o aumentar la nitidez o el brillo en películas y anuncios.
La distorsión de imagen permite al usuario manipular y deformar una imagen a lo largo del tiempo.  Estos puntos de transformación suelen ser o bien una rejilla superpuesta sobre los objetos o bien un conjunto específico de rasgos, como la nariz, los ojos, la boca y las orejas en caso de que se realice una metamorfosis entre dos rostros.

Creación de gráficos tridimensionales por ordenador
Muchos usos de los gráficos por ordenador —como la animación por ordenador, el diseño y fabricación asistidos por computadora (CAD/CAM, siglas en inglés), los videojuegos o la visualización científica de datos como imágenes de órganos internos obtenidas por resonancia magnética— exigen dibujar objetos de tres dimensiones en la pantalla del ordenador. El cálculo de escenas en 3D se realiza mediante algoritmos de rendering, algunos en paralelo o de forma distribuida.
Existen microprocesadores especiales para gráficos en 3D. El cálculo de imágenes 3D por hardware suele ser cara, pero permite al usuario crear hasta 60 imágenes por segundo en tiempo real. Los sistemas de render por software son más lentos, y exigen hasta todo un día para plasmar una única imagen.

Modelado
El primer paso es la creación de objetos en 3D. La superficie de un objeto, por ejemplo una esfera, se representa como una serie de superficies curvas o como polígonos, generalmente triángulos. Los puntos de la superficie del objeto, llamados vértices, se representan en el ordenador por sus coordenadas espaciales. También hay que especificar otras características del modelo, como el color de cada vértice y la dirección perpendicular a la superficie en cada vértice (la llamada normal). Como los polígonos no proporcionan superficies suaves, los modelos detallados exigen un número enormemente elevado de polígonos para crear una imagen con aspecto natural.

Transformación
Una vez creados estos modelos, se colocan ante un fondo generado por computadora. Por ejemplo, una esfera plasmada puede colocarse ante un fondo de nubes. Las instrucciones del usuario especifican el tamaño y orientación del objeto. A continuación se seleccionan los colores, su situación y la dirección de la luz en la escena generada por computadora, así como la localización y la dirección del ángulo de visión de la escena.

Iluminación y sombreado
Una vez situada una primitiva hay que sombrearla. La información del sombreado se calcula para cada vértice a partir del lugar y el color de la luz en la escena generada por ordenador, de la orientación de cada superficie, del color y otras propiedades de la superficie del objeto en ese vértice, y de los posibles efectos atmosféricos que rodean el objeto, como por ejemplo niebla.

Aplicación
Varias técnicas permiten al artista añadir detalles realistas a modelos con formas sencillas. El método más común es la aplicación de texturas, que aplica una imagen a la superficie de un objeto como si fuera papel pintado. Por ejemplo, es posible aplicar un dibujo de ladrillos a una esfera. En este proceso, el aspecto del objeto al ser iluminado sólo se ve afectado por la forma del objeto, no por las características de la textura (como los bordes rectangulares y los intersticios de los ladrillos): la esfera sigue apareciendo lisa. Otra técnica, llamada aplicación de bultos, proporciona una visión más realista al crear brillos para que la superficie parezca más compleja. En el ejemplo de la textura de ladrillos, la aplicación de bultos podría proporcionar sombreado en los intersticios y brillos en algunas superficies de los ladrillos.

Mezcla
Después de que el proceso de sombreado haya producido un color para cada píxel de la primitiva, el último paso del plasmado es introducir ese color en la memoria intermedia de cuadros. Frecuentemente se emplea una técnica conocida como separación en el eje Z (z-buffer) para determinar cuál es la primitiva más cercana a la situación y ángulo de visión de la escena, con el fin de garantizar que no se dibujen los objetos situados detrás de otros. Por último, si la superficie que se está dibujando es semitransparente, el color del objeto frontal se mezcla con el del objeto que hay detrás.

Cálculo de imágenes con base física
Como el proceso de cálculo de imágenes tiene poco que ver con la forma en que la luz se comporta realmente en una escena, no funciona bien con sombras y reflejos. Otra técnica frecuente de cálculo de imagen, el trazado de rayos, calcula la trayectoria de los rayos luminosos en la escena. El trazado de rayos proporciona sombras más precisas que los otros métodos, y también maneja correctamente las reflexiones múltiples. Aunque es un algoritmo exigente computacionalmente, la calidad que proporciona es alta.

2. SISTEMA DE GRAFICOS

PROCESADOR
La unidad de procesamiento gráfico o GPU (acrónimo del inglés graphics processing unit) es un procesador dedicado al procesamiento de gráficos u operaciones de coma flotante, para aligerar la carga de trabajo del procesador central en aplicaciones como los videojuegos y o aplicaciones 3D interactivas. De esta forma, mientras gran parte de lo relacionado con los gráficos se procesa en la GPU, la unidad central de procesamiento (CPU) puede dedicarse a otro tipo de cálculos (como la inteligencia artificial o los cálculos mecánicos en el caso de los videojuegos).
Una GPU implementa ciertas operaciones gráficas llamadas primitivas optimizadas para el procesamiento gráfico. Una de las primitivas más comunes para el procesamiento gráfico en 3D es el antialiasing, que suaviza los bordes de las figuras para darles un aspecto más realista.

MEMORIA

La memoria (también llamada almacenamiento) se refiere a parte de los componentes que forman parte de una computadora. Son dispositivos que retienen datosinformáticos durante algún intervalo de tiempo. Las memorias de computadora proporcionan una de las principales funciones de la computación moderna, la retención o almacenamiento de información. Es uno de los componentes fundamentales de todas las computadoras modernas que, acoplados a una unidad central de procesamiento (CPU por su sigla en inglés,central processing unit), implementa lo fundamental del modelo de computadora de Arquitectura de von Neumann, usado desde los años 1940.

DISPOSITIVOS DE ENTRADA
Son los que envían información a la unidad de procesamiento, en código binario. 
Entrada:
  • Teclado
  • Ratón
  • Joystick
  • Lápiz óptico
  • Micrófono
  • Webcam
  • Escáner
  • Escáner de código de barras
DISPOSITIVOS DE SALIDA
Son los dispositivos que reciben información que es procesada por la CPU y la reproducen para que sea perceptible para la persona.
Salida:
  • Monitor
  • Altavoz
  • Auriculares
  • Impresora
  • Plotter
  • Proyector

3. DISPARIDAD BINOCULAR
Ligera diferencia entre los dos puntos de vista proporcionados por ambos ojos. La disparidad binocular es la forma de percibir profundidad y relieve más utilizada por el cerebro humano, y es la que permite ser más manipulada, convirtiéndose en la base para la creación de imágenes 3D en superficies llanas. El cerebro coge estos dos puntos de vista distintos y los integra, creando así un objeto en tres dimensiones.

Hay muchas formas de crear ilusión óptica de profundidad utilizando la disparidad binocular: hologramas, estereoscopios y estereogramas, todos ellos separan imágenes para ser captadas por un sólo ojo.
FUENTES DE INFORMACION
http://www.monografias.com/trabajos14/dispositivos/dispositivos.shtml
http://es.wikipedia.org/wiki/Disparidad_binocular
http://www.monografias.com/trabajos33/dispositivos/dispositivos.shtml
http://es.wikipedia.org/wiki/Memoria_(inform%C3%A1tica)
http://Wikipedia

domingo, 29 de enero de 2012

OpenGL

OpenGL (Open Graphics Library) es una especificación estándar que define una API (Interfaz de programación de aplicaciones), multilenguaje y multiplataforma para escribir aplicaciones que produzcan gráficos 2D y 3D. La interfaz consiste en más de 250 funciones diferentes que pueden usarse para dibujar escenas tridimensionales complejas a partir de primitivas geométricas simples, tales como puntos, líneas y triángulos. Fue desarrollada originalmente por Silicon Graphics Inc. (SGI) en 1992 y se usa ampliamente en CAD, realidad virtual, representación científica, visualización de información y simulación de vuelo. También se usa en desarrollo de videojuegos, donde compite con Direct3D en plataformas Microsoft Windows.


Como instalar OpenGL

Paso 1


Instalar el compilador de C.


Una de las cosas que mas me sorprendió es que Ubuntu, no viene con el compilador de C, en su instalación de default (hasta ahora es el único Gnu/Linux donde me ha pasado esto), así que tienes que instalarlo desde los repositorios.
En Ubuntu solo es cuestión de instalarte los paquetes ya sea vía apt-get o via synaptic lo que te acomode mejor, al caso debes de instalar los siguientes paquetes:

  • build-essential
  • g++
  • g77
  • gcc
  • make

Estos paquetes no vienen solos, es decir probablemente necesites descargar muchos paquetes mas para satisfacer las dependencias de estos, sin embargo dado que tanto synaptic como apt-get, pueden satisfacer sus dependencia de manera automática solo debemos indicarle estos paquetes. tanto de gcc, como de g++ y g77, hay varias versiones de los paquetes, sin embargo el paquete sin números siempre es un paquete con la versión mas actual.
En resumen lo único que un usuario novato debe de teclear es:
  $sudo apt-get install build-essential g++ g77 gcc make

Paso 1.5 Probamos la instalación del compilador de C


En nuestro editor de textos plano favorito tecleamos un programa de C, básico por ejemplo un clásico hola mundo: hello.c Lo guardamos por ejemplo con el nombre de hello.c y vamos a compilarlo.
Con la siguiente instrucción:
$gcc hello.c -o hello
Podemos observa que la sintaxis para compilar un programa en C, es la siguiente:
$gcc [archivo fuente.c] -o [nombre de mi ejeculable]

2 Instalamos las librerias necesarias para OpenGL

Ahora necesitaremos instalar los siguientes paquetes:
freeglut3 freeglut3-dbg freeglut3-dev ftgl-dev gle-doc glut-doc glutg3 glutg3-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa libgl1-mesa-dev libgl1-mesa-dri libglut3 libglut3-dev mesa-common-dev mesa-demos mesa-swrast-source mesa-utils
No se cuales sean los esenciales, yo siempre he instalado con todos, pero se que así funciona, muchos de ellos son dependencias, así que no igual lo único que debes de tener en cuenta es tratar de instalar freeglut-dev.
Importante: Si piensas tener tu computadora con Aceleración Gráfica (por ejemplo para tener Beryl), es decir instalar los drivers propietarios de ATI o de nVidia, debes hacerlo antes de hacer esta instalación, se pueden tener ambas funcionando pero poner el driver gráfico debe ser anterior a la instalación de OpenGL. De la contrario nuestros programas de OpenGL no tendrán aceleración
Para saber si nuestra computadora tiene o no aceleración Gráfica puedes ejecutar el comando glxinfo y ver la salida, en el renglón donde dice direct rendering: un “Yes”, significa que tenemos Aceleración gráfica. Una forma de filtrarlo es:
   $glxinfo | grep rendering
Por supuesto que tener o no Aceleración Gráfica es totalmente dependiente de tu hardware. Por lo que no se puede escribir una guía general, sin embargo hay muchísima información en la red sobre esto, mi experiencia es que si tu computadora tiene tarjeta de vídeo Intel o nVidia, no debes tener ningún problema, las ATI, en cambio debes de investigar un poco antes de hacerlas funcionar.

2.5Probar la instalación de OpenGL y glut

Nos tecleamos un programa sencillo de glut y OpenGL, por ejemplo este: ventana.c
Y ahora vamos intentar la compilación:
$gcc ventana.c -o ventana -lglut
Y debemos ver una ventana negra.
Si en al linea de comandos ven un warning que dice algo así como:

libGL warning: 3D driver claims to not support visual 0x5b
Pero la ejecución de el programa continua, no deben de preocuparse, este warning solo significa que no esta correctamente configurado su driver de la tarjeta de vídeo, pero es algo que no debe de afectar sus programas escritos en OpenGL, mas que en el performance, y no es un problema de su programa si no del driver de la computadora.
Obviamente el caso ideal es tener tanto el OpenGL como la aceleración gráfica funcionando al mismo tiempo, si ya tenían la aceleración gráfica y siguen este método no deben de tener ningún problema y ni siquiera les debe marcar ese molesto warning.
Usuarios de Red Hat y similares la receta es la misma, solo que deberán de tratar de instalar el freeglut-devel***.rpm, donde *** usualmente son la distribución, la arquitectura y versión del paquete, se recomienda que instalen el paquete que viene en sus discos, usualmente este paquete tiene muchas dependencias, así que la ayuda de un gestor de paquetes como yump o synaptic sin duda les ayudara.
En un post posterior hablare de como tener un IDE funcional que nos de mas ayuda a compilar programas de OpenGL en Linux, en particular en Ubuntu la idea es que el final de mi serie de post del tema se pueda tener un entorno de programación cómodo y funcional en Ubuntu, como para que puedan con ayuda de algún libro como el libro rojo autoaprender a programar con OpenGL.

CODIGO
/*cubetex.c           */
/* Rotating cube with texture mapping */
/* mouse buttons control direction of
/* rotation, keyboard allows start/top/quit */
/* E. Angel, Interactive Computer Graphics */
/* A Top-Down Approach with OpenGL, Third Edition */
/* Addison-Wesley Longman, 2003 */
#include <stdlib.h>
#include <GL/glut.h>
GLfloat planes[]= {-1.0, 0.0, 1.0, 0.0};
GLfloat planet[]= {0.0, -1.0,  0.0, 1.0};
 GLfloat vertices[][3] = {{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},
 {1.0,1.0,-1.0}, {-1.0,1.0,-1.0}, {-1.0,-1.0,1.0},
 {1.0,-1.0,1.0}, {1.0,1.0,1.0}, {-1.0,1.0,1.0}};
 GLfloat colors[][4] = {{0.0,0.0,0.0,0.5},{1.0,0.0,0.0,0.5},
 {1.0,1.0,0.0,0.5}, {0.0,1.0,0.0,0.5}, {0.0,0.0,1.0,0.5},
 {1.0,0.0,1.0,0.5}, {1.0,1.0,1.0,0.5}, {0.0,1.0,1.0,0.5}};
void polygon(int a, int b, int c , int d)
{
/* draw a polygon via list of vertices */
  glBegin(GL_POLYGON);
 glColor4fv(colors[a]);
 glTexCoord2f(0.0,0.0);
 glVertex3fv(vertices[a]);
 glColor4fv(colors[b]);
 glTexCoord2f(0.0,1.0);
 glVertex3fv(vertices[b]);
 glColor4fv(colors[c]);
 glTexCoord2f(1.0,1.0);
 glVertex3fv(vertices[c]);
 glColor4fv(colors[d]);
 glTexCoord2f(1.0,0.0);
 glVertex3fv(vertices[d]);
 glEnd();
                          }
void colorcube(void)
{
/* map vertices to faces */
 polygon(0,3,2,1);
 polygon(2,3,7,6);
 polygon(0,4,7,3);
 polygon(1,2,6,5);
 polygon(4,5,6,7);
 polygon(0,1,5,4);
}
static GLfloat theta[] = {0.0,0.0,0.0};
static GLint axis = 2;
void display(void)
{
/* display callback, clear frame buffer and z buffer,
   rotate cube and draw, swap buffers */
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 glLoadIdentity();
 glRotatef(theta[0], 1.0, 0.0, 0.0);
 glRotatef(theta[1], 0.0, 1.0, 0.0);
 glRotatef(theta[2], 0.0, 0.0, 1.0);
 colorcube();
 glutSwapBuffers();
}
void spinCube()
{
/* Idle callback, spin cube 2 degrees about selected axis */
 theta[axis] += 2.0;
 if( theta[axis] > 360.0 ) theta[axis] -= 360.0;
 glutPostRedisplay();
}
void mouse(int btn, int state, int x, int y)
{
/* mouse callback, selects an axis about which to rotate */
 if(btn==GLUT_LEFT_BUTTON && state == GLUT_DOWN) axis = 0;
 if(btn==GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) axis = 1;
 if(btn==GLUT_RIGHT_BUTTON && state == GLUT_DOWN) axis = 2;
}
void myReshape(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    if (w <= h)
        glOrtho(-2.0, 2.0, -2.0 * (GLfloat) h / (GLfloat) w,
            2.0 * (GLfloat) h / (GLfloat) w, -10.0, 10.0);
    else
        glOrtho(-2.0 * (GLfloat) w / (GLfloat) h,
            2.0 * (GLfloat) w / (GLfloat) h, -2.0, 2.0, -10.0, 10.0);
    glMatrixMode(GL_MODELVIEW);
}
void key(unsigned char k, int x, int y)
{
 if(k == '1') glutIdleFunc(spinCube);
 if(k == '2') glutIdleFunc(NULL);
 if(k == 'q') exit(0);
}
void
main(int argc, char **argv)
{
   GLubyte image[64][64][3];
   int i, j, r, c;
   for(i=0;i<64;i++)
   {
     for(j=0;j<64;j++)
     {
       c = ((((i&0x8)==0)^((j&0x8))==0))*255;
       image[i][j][0]= (GLubyte) c;
       image[i][j][1]= (GLubyte) c;
       image[i][j][2]= (GLubyte) c;
     }
   }
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(500, 500);
    glutCreateWindow("colorcube");
/* need both double buffering and z buffer */
    glutReshapeFunc(myReshape);
    glutDisplayFunc(display);
   glutIdleFunc(spinCube);
   glutMouseFunc(mouse);
   glEnable(GL_DEPTH_TEST);
   glEnable(GL_TEXTURE_2D);
   glTexImage2D(GL_TEXTURE_2D,0,3,64,64,0,GL_RGB,GL_UNSIGNED_BYTE, image);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
   glutKeyboardFunc(key);
   glClearColor(1.0,1.0,1.0,1.0);
   glutMainLoop();
}



miércoles, 25 de enero de 2012

Graficación por computadora


DISEÑO ASISTIDO POR COMPUTADORA
E n todos los proceso de diseño hay un importante uso para las graficas por computadora, ya que es de uso importante para la ingeniería y arquitectura, sin embargo en la actualidad casi todo lo que es para uso de gráficos es en computadora. El CAD se utiliza casi siempre en el diseño de automóviles, aeronaves, embarcaciones, naves espaciales, computadoras, telas, construcciones, software y muchos otros productos.
El diseño asistido por computadora en siglas DAO o mejor conocido como CAD (Computer Aided Design), se trata básicamente de una base de datos de entidades geométricas como puntos, líneas o arcos, etc. Con el CAD se puede operar una interfaz grafica para diseñar lo que se pida.
ARTE DIGITAL
Los métodos de graficas por computadora se utilizan en forma en general tanto en aplicaciones de bellas artes como en aplicaciones de arte comercial. Hoy en día los artistas utilizan una gran variedad de métodos de cómo graficar por medio de las computadoras incluyendo el hardware de propósito especial como tabletas digitilizadares, software como Adobe Photoshop o CAD
Una ventaja del arte digital es que a diferencia del convencional, el primero permite usa layers o capas las cuales pemirten añadir mas profundidad a las imágenes. Así el arte digital no se desgasta con el tiempo no a las condiciones normales a las que se somete el arte grafico común.
ENTRETENIMIENTO
En la actualidad se utilizan mas las graficas por computadora para producir películas, videos musicales y programas de televisión. En ocasiones se despliegan solo imágenes gráficas y otras veces se combinan objetos por computadora con personajes, actores u objetos reales.
ANIMACION POR COMPUTADORA
La animación pertenece al ámbito del cine y la televisión aunque la relación que existe entre estos dos es directa a las artes visuales clásicas, dibujo, pintura y escultura, así como la fotografía. Para la animación se requieren ciertas técnicas que van más allá de los familiares dibujos animados, la más utilizada es la animación por computadora que así permite reducir el costo de producción y edición.
La animación de escritorio ha tenido auge en los últimos cinco años, aún cuando el GIF animado surgió hace mucho tiempo, no fue sino hasta la popularización de Internet, que fue posible poner al alcance de toda la animación.



VIDEOJUEGOS
Un video juego llamado también juego de video es un programa informático creado expresamente para divertir,  formando parte del sector audiovisual. Los videojuegos están basados en la interacción entre una persona y una computadora (ordenador). Los videojuegos recrean entornos virtuales en los cuales el jugador puede controlar a un personaje o cualquier otro elemento de dicho entorno, y así conseguir uno o varios objetivos por medio de unas reglas determinadas.
Los videojuegos son programas como software siendo grabados en algún medio de almacenamiento como un cartucho, tarjeta, disquete o CD, etc. El hardware que ejecuta los videojuegos puede ser una computadora, o un artefacto especialmente creado para ello, las videoconsolas dividida para uso público caseras como en casa, portátiles o de bolsillo mas recientemente los teléfonos móviles.
PELICULAS
Las gráficas por computadora se utilizan en diversas etapas de la creación de películas. Se puede utilizar la animación, edición y efectos especiales, siendo los efectos especiales lo que más llama la atención entre los consumidores. Como se había mencionado anteriormente, en las películas o series de televisión es común que se combinen objetos animados y objetos o actores reales, estas técnicas son incluso utilizadas en los noticieros cuando el anunciador del clima es filmado sobre una pantalla azul y digitalmente se agregan los mapas e información del clima.
VISUALIZACIÓN
Científicos, ingenieros, personal médico, analistas comerciales y otros necesitan con frecuencia analizar grandes cantidades de información o estudiar el comportamiento de ciertos procesos. Las simulaciones numéricas que se efectúan en supercomputadoras a menudo producen archivos de datos que contienen en miles e incluso millones de valores de datos.
PROCESAMIENTO DE IMÁGENES
A pesar de que los métodos empleados en las gráficas por computadora y en el procesamiento de imágenes se traslapan, las dos áreas realizan, en forma fundamental, operaciones distintas. En las gráficas por computadora, se utiliza una computadora para crear una imagen. Por otro lado, en el procesamiento de imágenes se aplican técnicas para modificar o interpretar imágenes existentes, como fotografías y rastreos de televisión. Las desaplicaciones principales del procesamiento de imágenes son:

El mejoramiento de la calidad de la imagen y
la percepción de la máquina de información visual, como se utiliza en la robótica.

Para aplicar los métodos de procesamiento de imágenes, primero digitalizamos una fotografía u otra imagen en un archivo de imagen. Entonces, se pueden aplicar métodos digitales para reordenar partes de imágenes, para mejorar separaciones de colores para aumentar la calidad del sombreado.
INTERFACES GRÁFICAS DE USUARIO
Es común que los paquetes de software ofrezcan una interfaz gráfica. Un componente importante de una interfaz gráfica es un administrador de ventanas que hace posible que un usuario despliegue áreas con ventanas múltiples. Cada ventana puede contener un proceso distinto que a su vez puede contener despliegues gráficos y no gráficos.
Para activar una ventana en particular, sólo hacemos clic en esa ventana utilizando un dispositivo de pulsar interactivo. Las interfaces también despliegan menús e iconos para permitir una selección rápida de las opciones de procesamiento o de valores de parámetros.

FORMATOS GRÁFICOS DE ALMACENAMIENTO
El almacenamiento de los datos que componen una imagen  digital en un archivo binario puede realizarse utilizando diferentes formatos gráficos, cada uno de los cuales ofrece diferentes posibilidades con respecto a la resolución de la imagen, la gama decolores, la compatibilidad, la rapidez de carga, etc.