Objetivo: Proporcionar al alumno el contexto dentro del cual se desarrolla la actividad del Cómputo Gráfico, abarcando aspectos históricos y tecnológicos, para así comprender la importancia de éste y áreas de desarrollo. Breve introducción histórica En sus inicios las computadoras se utilizaban principalmente en aplicaciones científicas. La ENIAC, una de las primeras computadoras, calculaba densidades de neutrón transversales para ver si explotaría la bomba de hidrógeno. Los resultados se reportaban por medio de dispositivos de impresión sencillos que producían secuencias de caracteres alfanuméricos que los usuarios debían examinar. El siguiente paso en la evolución de las computadoras fue la creación de dispositivos de visualización que permitían al usuario de una computadora observar los resultados del procesamiento en el dispositivo. La primera computadora que utilizó un CRT (Tubo de Rayos Catódicos) como dispositivo de visualización fue Whirlwind, construida en el MIT (Instituto Tecnológico de Massachussets) en 1950 para simular vuelos de entrenamiento de los escuadrones de bombarderos de la marina de Estados Unidos. Figura 1: La computadora Whirlwind desarrollada en el MIT. Durante la década de los 50 también continuó el desarrollo de los dispositivos de entrada. El sistema para la defensa espacial SAGE, desarrollado para convertir los sonidos de detección de un radar en imágenes, fue el primero en emplear un lápiz óptico para seleccionar símbolos en la pantalla. 4 El primer videojuego de la historia fue creado en 1952, con el nombre de OXO. Fue producto de la tesis 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 computadora EDSAC. Figura 2: La computadora EDSAC. El programa podía tomar sus decisiones en función de los movimientos del jugador, que transmitía las órdenes por medio de un dial telefónico 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. El juego aunque tenía un nivel de interacción solo permitía un jugador. Figura 3: La pantalla de OXO. 5 En 1961 un estudiante del MIT, Steve Russell dirigió un equipo que creó el primer videojuego interactivo de naves espaciales. Le tomó al equipo cerca de 200 horashombre escribir la primera versión de Spacewar. El juego se escribió en una PDP1 que fue una donación de DEC al MIT esperando que en el MIT se pudiera hacer algo trascendente con su producto. El modo de juego de Spacewar! Involucra dos naves espaciales armadas llamadas “la aguja” y “la cuña” intentando disparar a la otra mientras se maniobra en el flujo gravitacional de una estrella. Cada nave tiene un número limitado de misiles y combustible. Cada jugador controla una de las naves y debe intentar simultáneamente disparar a la otra nave y evitar chocar con la estrella. Los movimientos de las naves inicialmente se controlaban por medio de interruptores de prueba en el panel frontal del equipo, con cuatro interruptores para cada jugador. Figura 4 a) Escena de Spacewar! Figura 4 b) DEC PDP-1 6 Fue en 1963 cuando se creo el primer sistema que permitía la manipulación directa de objetos gráficos y fue el precursor de los sistemas 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 permitía a los usuarios dibujar puntos, segmentos de líneas rectas y arcos circulares directamente sobre la pantalla mediante un lápiz óptico. Figura 5: El Sketchpad permitía dibujar objetos con un lápiz óptico mediante una indicación en la pantalla. El sistema de Sutherland, llamado Sketchpad se basaba en la “interfaz” del TX-2, una de las primeras computadoras que por medio de una especie de lápiz de luz y una serie de interruptores permitía introducir formas a la computadora. El Sketchpad inventado por Ivan Sutherland fue el primer sistema interactivo de gráficos por computadora utilizado para aplicaciones de diseño e ingeniería. En 1966 Sutherland, ejerciendo como profesor en Harvard, junto con Bob Sproull fue el primero en implementar un sistema de realidad virtual, a través del cual, con la ayuda de un casco, los usuarios podían ingresar virtualmente en una habitación y mirar en todas direcciones una vez adentro. Los inventos de Ivan Sutherland contribuyeron al desarrollo de las interfaces gráficas de usuario que actualmente son una parte indispensable en cualquier sistema de cómputo. Muchas de las ideas demostradas por primera vez en el Sketchpad ahora son parte de entornos de computadoras usadas por millones en aplicaciones de investigación científica, negocios y recreación. Estas ideas incluyen: 7 • • • • • • • • El concepto de estructura jerárquica interna de una imagen representada por computadora y la definición de esa imagen en términos de sub-imágenes. El concepto de imagen maestra e instancias de imagen las cuales son versiones transformadas de la imagen maestra. El concepto de restricción como un método para especificar detalles de la geometría de una imagen. La habilidad para desplegar y manipular representaciones icónicas de las restricciones. La habilidad de copiar así como crear instancias tanto de imágenes como restricciones. Algunas técnicas elegantes para la construcción de imágenes usando un lápiz luminoso. La separación del sistema de coordenadas en el cual una imagen es definida a partir de lo que es desplegado; y Operaciones recursivas tales como “mover” y “borrar” aplicadas a las imágenes definidas jerárquicamente. En el ámbito del hardware, los CRT utilizados hasta entonces podían trazar líneas rectas entre dos puntos en la pantalla, pero ya que las líneas dibujadas se desvanecían en la pantalla, era necesario redibujarlas varias veces por segundo, lo que solo era posible por medio de dispositivos muy costosos de hardware. Estos dispositivos se denominaban pantallas de vector, de trazo o caligráficas. El primer dispositivo de este tipo fue introducido al mercado por IBM en 1965. En 1968 Tektronix introdujo un CRT con tubo de almacenamiento que permitía retener permanentemente un dibujo hasta que el usuario decidiera borrarlo. Este sistema eliminó la necesidad de utilizar costosos sistemas especiales de hardware y memoria para redibujado. Aunque su precio era más accesible no dejaba de ser elevado. Sus modelos 601 y 611 fueron los primeros en su línea de productos diseñados especialmente para gráficos por computadora. El primer modelo comercial de Tektronix fue el 4002A con un precio aproximado de 9000 dólares. Figura 6: Monitor con tubo de almacenamiento de despliegue directo Tektronix 4002A 8 En 1970 un estudiante de nombre Edwin Catmull iniciaba sus estudios en la Universidad de Utah, inscribiéndose a la clase de gráficos por computadora de Sutherland. Habiendo crecido con los dibujos animados de Disney, Catmull amaba la animación aunque rápidamente descubrió que no tenía talento para dibujar. Pero Catmull, al igual que otros, vio las computadoras como la evolución natural de la animación y quería ser parte de esa revolución. La primera animación por computadora que Catmull vio fue de si mismo. El creó una animación de su mano abriéndose y cerrándose. Se volvió uno de sus objetivos crear una película entera usando gráficos por computadora. En la misma clase Fred Parke creó una animación del rostro de su esposa. Figura 7: Rostro digital creado por Fred Parke Con la presencia de Sutherland que fue reclutado por Dave Evans para el programa de ciencia computacional en la Universidad de Utah, esta comenzó a ganar reputación como lugar para la investigación de gráficos computacionales, de modo que Catmull acudió ahí para aprender sobre gráficos 3D. De ese modo el laboratorio de gráficos por computadora de la Universidad de Utah atrajo gente de todas partes, John Warnock fue uno de esos pioneros; mas tarde fundaría Adobe Systems y crearía una revolución en el mundo de la publicación con su lenguaje de descripción de páginas PostScript. Tom Stockham dirigió el grupo de procesamiento de imagen en Utah que trabajó estrechamente con el laboratorio de gráficos por computadora. Jim Clark también estuvo ahí; después fundaría Silicon Graphics Inc. El mayor de los primeros avances en gráficos por computadora tridimensionales fue creado por esos pioneros, el algoritmo de superficie oculta. Para dibujar la representación tridimensional de un objeto en la pantalla, la computadora debe determinar cuales superficies están “detrás” del objeto desde la perspectiva del observador, y de ese modo serían “escondidas” cuando la computadora crea (o renderiza) la imagen. 9 A partir de 1970 se comenzaron a introducir los gráficos por computadora en el mundo de la televisión. Computer Image Corporation (CIC) desarrollo sistemas complejos de hardware y software como ANIMAC, SCANIMATE y CAESAR. Todos esos sistemas funcionaban escaneando una imagen existente, para después manipularla, aplastándola, estirándola, girándola y haciéndola volar por la pantalla, etc.… Bell Telephone y CBS Sports fueron unos de los muchos que empezaron a usar los nuevos gráficos por computadora. Figura 8: Sistema SCANIMATE para procesamiento por computadora de imágenes para TV. Figura 9: Primeros sistemas para la generación de personajes animados por computadora. 10 Uno de los mas importantes 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 reducida a un único chip, el microprocesador a veces llamado CPU (Unidad Central de Procesamiento). Una de las primeras microcomputadoras de escritorio diseñada para uso personal fue la Altair 8800 de Micro Instrumentation Telemetry Systems (MITS). Se entregaba por correo en forma de kit para armar, la Altair (nombrada como un planeta en la popular serie Star Trek) se vendía alrededor de los 400 dólares. Tiempo después las computadoras personales avanzarían hasta punto de permitir la creación de gráficas computacionales con calidad de película. Figura 10: Kit para armar la Microcomputadora personal Altair 8800. 11 En el mismo año Nolan Kay Bushnell 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 de los gráficos por computadora. Figura 11: El Atari Pong de 1972. El juego se basaba en aquel creado en 1958 por William Higinbotham, quien programó un osciloscopio para que simulara una partida de ping-pong que permitía la interacción entre dos jugadores. El objetivo era manejar dos líneas móviles que interceptaban la pelota representada por un punto móvil en la pantalla circular del osciloscopio. El juego fue llamado Tenis for two. Figura 12 b) La pantalla del juego. Figura 12 a) El osciloscopio en el que se jugaba Tennis for two en 1958. 12 Pong poseía una menor calidad gráfica que el juego en el que se inspiraba, pero la clave de su éxito radicaba en la ventaja de poder producirse en masa a un precio relativamente económico convirtiéndose en uno de los videojuegos mas vendidos de la historia. Figura 13: Anuncio para la versión en arcadia del juego Pong de Atari en 1972. Pero el avance de la industria no se limitaba al entretenimiento para el hogar. El primer videojuego público y comercial de la historia fue el Galaxy Game, creado por dos estudiantes de la Universidad de Stanford, Hill Pitts y Hugh Tuck, quienes reprogramaron la versión original del juego Spacewar de Stephen Russell. La máquina fue instalada en Tresidder Memorial Union, una tienda dentro del complejo del campus en la Universidad. Oficialmente la primer máquina de videojuegos para obtener ganancias económicas en ser colocada en un sitio público y que poseía un mecanismo para recaudar monedas de 5 centavos. Fue arrollador el éxito de la máquina, con colas interminable para disfrutar del juego por unos minutos. 13 Figura 14: Galaxy Game en el Museo de Computación de Stanford. Después del éxito de Galaxy Game comenzaron a producirse otras máquinas en serie, la primera fue Computer Space, otra variación del juego Spacewar y que automáticamente se convirtió en el detonante de la comercialización masiva de los videojuegos, abandonando el ambiente experimental que hasta entonces había rodeado a los avances en ese campo. Tanto en la industria de los videojuegos y entretenimiento como en las aplicaciones científicas 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. El programa de gráficos por computadora de Cornell es bien conocido por sus trabajos en síntesis de imágenes realistas, incluyendo el método de radiosidad para el cálculo de iluminación directa e indirecta en escenas sintéticas. El objetivo del laboratorio a largo plazo es desarrollar modelos de iluminación basados en física y procedimientos de renderizado preceptúales que sean visual y cuantificablemente indistinguibles de imágenes del mundo real. Su trabajo ha generado muchas de las más notables capacidades de iluminación en el software comercial. Desde su fundación, el laboratorio de Cornell ha articulado y refinado un sistema para investigación en iluminación global incorporando modelos de reflexión, simulación de transporte de energía y algoritmos de despliegue visual. 14 Figura 15: Escena de Cornell en perspectiva. En la conferencia SIGGRAPH de 1980 fue mostrada una impactante película titulada “Vol Libre”. Se trataba de un vuelo de alta velocidad a través de montañas fractales generadas por computadora. El programador de nombre Loren Carpenter de la compañía Boeing en Seattle, Washington había estudiado y modificado la investigación de Mandelbrot para simular montañas fractales realistas. Carpenter había estado trabajando en el departamento de servicios de cómputo de Boeing desde 1966 y era estudiante en la Universidad de Washington. Eventualmente trabajó con un grupo en Boeing en un sistema de dibujo asistido por computadora. Esto finalmente le dio acceso al equipo de gráficos por computadora. Trabajando ahí con otros empleados, desarrolló varios algoritmos de renderizado y publicó artículos sobre ellos. Figura 16: Escena de la película de animación Vol Libre. 15 A finales de los 70’s Carpenter había construido modelos en 3D de diseños de aeroplanos y quería algunos escenarios para usarlos. Así que leyó el libro de Mandelbrot y de inmediato se decepcionó cuando encontró que las fórmulas no eran prácticas para lo que el tenía en mente. En esa época se había estrenado Star Wars y siendo gran fan de la imaginación Carpenter soñó con crear algún tipo de paisaje extraterrestre. Esto lo condujo a hacerlo realmente; para 1979 tenía una idea de cómo crear un terreno fractal en animación. Durante un viaje de negocios al estado de Ohio en 1979, Carpenter encontró a una persona que conocía bastante gente en el campo de los gráficos por computadora, gente como Ed Catmull. Él le explicó como Catmull había sido contratado por George Lucas para montar un laboratorio en Lucasfilm. Carpenter se interesó inmediatamente pero no quería mandar su currículo aún, porque todavía estaba trabajando en su película de la montaña fractal. Carpenter continuó trabajando, quería demostrar no solo que esas imágenes fractales lucían bien, sino que además podían animarse bien. Lo logró después de resolver varias dificultades técnicas y su película estuvo lista para presentarse en SIGGRAPH 1980. Quería llamar la atención tanto como fuera posible ya que deseaba trabajar en Lucasfilm. Al término de la película fue contratado por la gente de Lucasfilm que era parte de la audiencia. Mas tarde, en 1981 Carpenter escribió su primer programa de rendering para Lucasfilm, llamado REYES (Renders Everything You Ever Saw). REYES eventualmente formaría parte del motor de Renderizado Renderman y actualmente, Carpenter aún está con Pixar. En 1986 se formó Pixar cuando la división de gráficos por computadora de Lucasfilm fue adquirida por Steven Jobs. El equipo pionero de la compañía formado por John Lasseter, Ed Catmull y Ralph Guggenheim produjo el famoso software Renderman. Renderman Interface Specification, o RISpec, es un API desarrollada por los estudios de animación Pixar para describir escenas tridimensionales y convertirlas en imágenes digitales foto realistas. Figura 17: Escena generada con Renderman para la película “The Abyss” de 1989. 16 Terminator 2 fue estrenada en 1991 e impuso un nuevo estándar para los efectos con imágenes generadas por computadora (CGI). El robot maligno T-1000 en T2 fue alternado entre el actor Robert Patrick y una versión animada computarizada en 3D de Patrick. Figura 18: Escena de la película Terminator 2 de 1991. El verano de 1994 trajo toda una gama de películas llenas de gráficos por computadora. Algunos efectos sin embargo, eran tan fotorealistas que el uso de la computadora era indetectable. Por ejemplo en la película Forrest Gump, los artistas usaron composición digital, sobreponiendo distintas secuencias de video una encima de otra, produciendo la ilusión de que el actor Tom Hanks estaba en la misma escena con algunos famosos politicos americanos como John F. Kennedy. También usaron técnicas de edición estándar de imágenes para “cortar” las piernas de un actor que interpreta el papel de un soldado herido que perdió sus piernas en la guerra. Simplemente lo hicieron usar calcetines largos de color azul. De ese modo después de que la grabación fue escaneada en la computadora, el artista usó el software Parallax para copiar porciones del escenario de fondo sobre los calcetines azules en cada cuadro. El resultado es que Tom Hanks carga al actor fuera de la cama y se ve como si este realmente no tuviera piernas. Figura 19: Efecto especial usado en la película Forrest Gump de 1994. 17 En 1995 se presentó la primera película de larga duración con gráficos y animaciones 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ó ese año. Sony lanzó al mercado mundial su consola de juegos Playstation (X). Hasta entonces las llamadas consolas de videojuegos solamente podían manejar gráficos 2D, pero el Playstation contenía un chip (además del CPU) de 3D acelerado por hardware capaz de dibujar 360,000 polígonos por segundo. Figura 20: Playstation de Sony. 1996 podrá no ser el año más excitante 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 (Diamond Edge de Diamond Multimedia usando el procesador NV1 de nVidia, y Virge de S3). Sin embargo los aceleradores de esta primera generación fueron prácticamente inútiles. Quake nunca los requirió y aún cuando los usara, los aceleradores ofrecían un pobre desempeño. En 1997 la industria de los videojuegos experimentó de nuevo una revolución, esta vez fue el acelerador 3DFX Voodoo 3D. Este chip 3D aplastó por completo a la competencia con su increíble y extremadamente práctico desempeño en 3D. Este era el momento de cambio para los gráficos 3D acelerados por hardware. Después de Voodoo no hubo vuelta atrás. 1997 también vio la llegada de Quake 2. Los beneficios de un buen acelerador 3D fueron obvios y el lema fue: “Si quieres jugar juegos geniales, tendrás que comprar un acelerador 3D”. 18 1999 fue probablemente el año más excitante para los videojugadores de todo el mundo. nVidia finalmente logró superar el desempeño de 3DFX en la batalla de los chips 3D con su procesador TNT2. Ni siquiera la Voodoo 3 podría igualar al chip TNT2 (y TNT2 Ultra). Pero nVidia no se detuvo ahí. En octubre sacaron a la venta el primer GPU (Unidad Gráfica de Procesamiento) para consumidor del mundo, la GeForce256. La GeForce (nombre código nv10) fue la primera tarjeta 3D que poseía un motor de hardware llamado Transform & Lighting. Ninguno de los títulos lanzados en 1999 soportaba esta opción con la excepción de Quake III, el cual salió a la venta en diciembre. La GeForce 256 podía renderizar triángulos con soporte de T&L en hardware, todo esto capaz de trabajar en conjunto con un rendimiento igual o mayor a 10 millones de polígonos por segundo. Figura 21: Escena del juego Quake III Arena de 1999. El año 2000 fue realmente “el año de nVidia“. En diciembre, nVidia adquirió los activos intelectuales de su alguna vez competidor 3DFX. Este es un buen recordatorio de que tan rápido cambian las cosas en la industria. ATI se estaba volviendo fuerte y Matrox había anunciado nuevos productos, pero sobre todos ellos, claramente nVidia se había convertido en el estándar para el cómputo en casa. En el 2001 nVidia continuó dominando el mercado con una competencia ocasional por parte de ATI. 19 Nintendo lanzó el 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. Con un procesador gráfico desarrollado por nVidia, disco duro, CPU Intel y más, fue diseñada para ganarles a sus principales competidores que serían el Playstation 2 y el Gamecube de Nintendo. El alguna vez tan influyente SEGA había dejado el negocio del hardware y ahora se concentraba en el software. El mundo de la cinematografía también se vio beneficiado con estos avances y se puede ver en películas como Final Fantasy: The Spirits Within, tal vez el primer intento verdadero por crear humanos realistas en una película completamente generada por computadora. Figura 22: Escena de Final Fantasy: The Spirits Within, con personajes completamente generados por computadora. Jurassic Park triunfó de nuevo, por supuesto, con dinosaurios tan reales que incluso un artista gráfico podría sentarse a disfrutar la película sin pensar acerca de los efectos especiales. La película A.I. presentó efectos especiales extremadamente bien producidos, pero que fueron la simple evolución de las técnicas creadas para Terminator 2. La gran película del año fue Lord Of The Rings, presentando algunas escenas sorprendentes. 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 asombrosos efectos especiales. 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. Aunque el juego no fue del completo gusto de todos, nadie puede negar la calidad gráfica que se conseguía con el uso de iluminación dinámica, sombras y el sonido surround. 20 Hacia finales del año llegó el juego posiblemente mas esperado de todos los tiempos, Half-Life 2. Habiéndose desarrollado durante seis años el juego presentaba gráficos increíblemente realistas y creaba toda una nueva dimensión en el modo de juego con su cuidadosamente implementado motor de física. 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. Se usó el sistema de efectos visuales Autodesk Flame para hacer cambios en el rostro de los personajes y para integrar tomas reales de ellos en ambientes generados totalmente por computadora. El uso de ese software también fue decisivo para crear la secuencia extremadamente compleja de Sandman y la sustancia simbiótica de Venom. Figura 23: Efectos especiales de Spider-Man 3 generados con el software de Autodesk. 21 Actividades de aprendizaje Investiga: • Funcionamiento del casco del sistema de realidad virtual desarrollado por Sutherland. • Características de un sistema de renderizado compatible con Renderman. • Ventajas del lenguaje shading de Renderman. • Que es SIGGRAPH y para que se realiza. 22 El hardware gráfico Un sistema gráfico tradicional consta de cuatro componentes: procesador, unidad de procesamiento gráfico, dispositivos de entrada y dispositivos de salida. El procesador desempeña un papel central en cualquier sistema gráfico y cada uno de los demás componentes debe comunicarse en algún momento con otro, o con el procesador mediante un canal de datos. Figura 24: Arquitectura de un sistema gráfico básico. Generalmente el dispositivo principal de salida de un sistema gráfico es un monitor de video. El tipo más común es un CRT y actualmente se incrementa el uso de los LCD. Uno de los componentes de un monitor de video CRT es el cañón de electrones; el cañón tiene un cátodo que al calentarse emite un haz de electrones (rayos catódicos) que pasa a través de los sistemas de enfoque y desviación que dirigen el haz hacia una posición específica de la pantalla que se encuentra recubierta con una película de fósforo con carga positiva, de modo que al impactar el rayo de electrones en un punto de la cubierta de fósforo esta emite luz durante una fracción de segundo. El sistema de desviación consta de un par de placas metálicas horizontales y un par de verticales. Al pasar los electrones del haz entre cada par de placas, el campo eléctrico generado entre estas produce una desviación en el haz, primero en dirección vertical y después horizontal. 23 Figura 25: Componentes de un CRT. La pantalla de video que utilizan la mayoría de las microcomputadoras se dividen en pequeños puntos. Cada uno de esos puntos se denomina pixel (picture element). Discretamente, el CRT es representado por una rejilla de líneas verticales y horizontales. A cada línea horizontal se le conoce como línea de barrido mientras que la presentación de video se denomina presentación por barrido. La calidad de una presentación por barrido se describe de acuerdo a su resolución. La resolución se determina por el número de líneas de barrido y pixeles por línea. Cuanto mayor sea la resolución mas detallada resultará la imagen. Las presentaciones de baja resolución tienen cerca de 300 líneas de barrido, cada una con aproximadamente 400 pixeles. Las presentaciones de alta resolución tienen por lo menos 1000 líneas de barrido, con más de 1000 pixeles por línea. Un pixel es la unidad mínima de representación gráfica. La resolución de una presentación por barrido es un indicador de su calidad gráfica y se determina por el número de pixeles por unidad de área. 24 Cuando hablamos de mejor resolución gráfica, hablamos de usar un número mayor de líneas de barrido (horizontales) con mayor número de píxeles. Realmente, lo que sucede es que cuanto más se juntan los píxeles, es más difícil distinguir entre uno y otro píxel adyacente. Esto se debe en parte a la distancia física entre los conos de la retina del ojo humano y en parte a las condiciones visuales que dependen del entorno. Esta habilidad de discernir detalles se llama agudeza visual. Nuestra agudeza es menor por el desgaste, al envejecer, y por efectos de nuestro entorno; por ejemplo, al disminuir el contraste y brillo. La resolución y el concepto de una malla de áreas de colores son análogos a un mosaico. En tal forma de arte, un mosaico intenta representar una imagen a partir de azulejos pequeños de determinados colores y tonos. Cada azulejo intenta aproximarse en color a un área de la imagen, combinando los colores en dicho área, como refleja la siguiente imagen: Figura 26: Analogía entre el concepto de resolución y una figura de mosaicos. 25 En un sistema de barrido se presenta la imagen por medio de una secuencia predefinida y cíclica. El haz de electrones que ha sido desviado por las placas de deflexión choca contra la esquina superior izquierda de la pantalla recubierta de fósforo produciendo luminiscencia en ese punto. En los monitores a color, cada punto o pixel de la pantalla esta compuesto por tres pequeños puntos de fósforo: rojo, azul y verde. Iluminando estos puntos con diferentes intensidades puede obtenerse cualquier color. Este tipo de monitores tiene tres cañones de electrones que producen rayos de electrones de distintas intensidades, correspondientes a los tres colores, que pasan por la máscara de sombra colocada detrás de la pantalla de fósforo. La máscara de sombra es una placa con pequeños agujeros que aseguran que los electrones de cada uno de los tres cañones alcancen solo los fósforos del color apropiado en la pantalla. Los tres rayos pasan a través de los mismos agujeros en la máscara, pero el ángulo en que llegan es diferente para cada cañón. El espacio entre los agujeros, el espacio entre los fósforos y la colocación de los cañones esta ajustada para que por ejemplo el cañón azul solamente tenga libre el camino hacia los fósforos azules. Los fósforos rojo, verde y azul para cada pixel, generalmente están alineados en una formación triangular. Figura 27 a) Detalle de una pantalla de CRT a color. Figura 27 b) Funcionamiento de la máscara de sombra. Después de que el haz de electrones ha iluminado el primer punto de la pantalla, la tensión de las placas de deflexión cambia continuamente, guiando al haz de electrones sobre la línea de barrido de izquierda a derecha. Cuando se llega al final de la línea el cañón de electrones se apaga y la tensión de las placas se ajusta para desviar el haz al inicio de la segunda línea de barrido; este proceso se conoce como retorno horizontal. Se continúa repasando cada línea de barrido de la pantalla y cuando se ha llegado al extremo derecho de la última línea de barrido se ha completado un cuadro. Al final de cada cuadro el haz de electrones se apaga y regresa a la esquina superior izquierda para iniciar el cuadro siguiente; a esto se le llama retorno vertical. 26 El proceso de barrido es tan rápido que el ojo humano no es capaz de distinguir como se activan los puntos por separado, percibiendo la ilusión de que todos los pixeles se activan al mismo tiempo. Sin embargo, un punto de fósforo iluminado emite luz solo durante una fracción de segundo, el patrón de barrido de izquierda a derecha y de arriba hacia abajo debe repetirse varias veces por segundo. El número de veces en un segundo que el cañón de electrones dibuja un cuadro completo en la pantalla se conoce como frecuencia de refresco y se mide en hertz (ciclos por segundo). El recíproco de la frecuencia de refresco es el tiempo transcurrido entre cada barrido completo, que es llamado tiempo de cuadro. Una frecuencia de refresco muy baja puede producir un efecto de parpadeo. El proceso de barrido generalmente se divide en dos fases, cada una con una duración de 1/60 de segundo. En la primera fase se despliegan las líneas de barrido numeradas impares y, en la segunda, las líneas pares. El resultado de este ciclo de refresco entrelazado es una reducción del efecto de parpadeo con un tiempo de cuadro de 1/30 de segundo. Se observa que los sistemas de presentación entrelazada requieren dos retornos verticales por tiempo de cuadro. Figura 28: Una exposición de alta velocidad en video puede mostrar al rayo de electrones en el proceso de barrido. Cuando se despliega una imagen en la pantalla de un monitor de video, se necesita iluminar solo los pixeles adecuados. La iluminación de los pixeles apropiados requiere una unidad de presentación que consta de dos partes: memoria de video y controlador de video. En ese esquema se hace un uso mas eficiente de la memoria ya que se destina la memoria de video destinada al almacenamiento de copias de la imagen a desplegarse en pantalla es independiente de la memoria principal del sistema. 27 Figura 29: Arquitectura de un sistema gráfico con presentación con barrido. La memoria de video almacena el resultado de las funciones gráficas. Cada pixel en pantalla corresponde a una entrada particular en un arreglo bidimensional en memoria. Algunos sistemas gráficos cuentas con una memoria de video diferente de la memoria principal. El número de renglones en el arreglo de la memoria de video es igual al número de líneas de barrido en la pantalla, así el número de columnas en este arreglo es igual al número de pixeles en cada línea de barrido. El término pixel se usa también para describir el renglón y la columna de colocación en el arreglo de la memoria de video que corresponda a la posición en pantalla. Cada pixel se codifica mediante un conjunto de bits de longitud determinada (la llamada profundidad de color), por ejemplo, puede codificarse un pixel con un byte, u 8 bits, de manera que cada pixel admite 256 variantes (2 dígitos por bit, elevados a la octava potencia). En las imágenes de color verdadero se suelen usar tres bytes para definir un color, es decir, en total podemos representar un total de 2 elevado a 24, o sea 16,777,216 colores diferentes. La cantidad de memoria de video requerida para almacenar una pantalla se determina multiplicando el número de pixeles horizontales, el número de pixeles verticales y el número de bytes usados para codificar un pixel. Memoria de video = Res. H x Res. V x Núm. de bytes por pixel 28 Si se quiere desplegar un pixel en pantalla, se coloca un valor específico en la localidad de memoria correspondiente en el arreglo de la imagen. Se accede a cada posición de pixel en pantalla y su correspondiente localidad en la memoria de video por medio de un par coordenado entero (x, y). El valor de x se refiere a la columna, mientras que el valor de y representa la posición del renglón. Por lo general, el origen de este sistema de coordenadas aparece en la esquina inferior izquierda aunque la imagen continúe desplegándose en el mismo orden que las líneas de barrido, de arriba abajo. El controlador de video es un dispositivo de hardware que lee el contenido de la memoria de video y lo deposita en un buffer de video, para luego convertir la representación digital de una cadena de valores de pixeles en señales analógicas de tensión que se envían en serie a la pantalla de video. Siempre que el controlador encuentra un valor de 1 en la memoria de video, se envía una señal de alta tensión al CRT, el cual enciende el pixel correspondiente en pantalla. El controlador de video realiza una interacción secuencial a lo largo de la memoria de video, satisfaciendo la frecuencia de refresco. El tiempo de cuadro 1 / frecuencia de refresco es la suma del tiempo de retorno vertical (k = 2 si está entrelazado, de lo contrario k = 1), el tiempo total de retorno horizontal (uno por cada línea de barrido), y el tiempo de presentación de todos los pixeles. El tiempo de acceso a un pixel es: t acceso = [t c − (k × t rv )] − [t rh × nlineas ] n pixeles tacceso = tiempo de acceso al pixel tc = tiempo de cuadro trv = tiempo de retorno vertical trh = tiempo de retorno horizontal nlineas = número de líneas de barrido npixeles = número de pixeles en la pantalla El controlador de video lee de la memoria de video el color del pixel a dibujar y envía la información a un convertidor digital analógico (DAC) en donde por medio de las componentes de color RGB se determina la intensidad del pixel. 29 El usuario de un sistema gráfico se comunica con el programa por medio de ciertos dispositivos de entrada y obtiene los resultados en los dispositivos de salida. Figura 30: Dispositivos de entrada y salida. Dispositivos de entrada • • • • • • • • • Teclado: un dispositivo para introducir texto y caracteres presionando botones (referidos como teclas), similar a una máquina de escribir. La configuración más común de teclas en la QWERTY. Ratón: un dispositivo apuntador que detecta el movimiento bidimensional relativo a su superficie de contacto. Trackball: un dispositivo apuntador que consiste en una esfera expuesta colocada en un armazón que detecta la rotación sobre dos ejes. Joystick: un dispositivo general de control que consta de dos o tres ejes que transmiten el ángulo de su movimiento en dos o tres dimensiones a la computadora. Gamepad: un control de juegos general que posee botones y un control de dirección que se manipulan con los dedos. Scanner: dispositivo que analiza imágenes, texto impreso o escritura a mano y los convierte en imágenes digitales. Cámara Web: una cámara de video de baja resolución usada para proveer una entrada visual que puede ser fácilmente transferida por Internet. Lápiz óptico: un dispositivo con fotocelda que, cuando se activa oprimiendo la punta contra la pantalla, devuelve a la computadora la posición del pixel iluminado en ese campo visual. Guante de datos: un dispositivo con sensores que detectan los movimientos de la mano y de los dedos para poner en posición o 30 Dispositivos de salida • • • Impresora: un dispositivo periférico que produce una copia impresa de un documento. Monitor: dispositivo que despliega una señal de video, similar a una televisión, para proporcionar información y una interfaz con la cual interactuar. Altavoces: dispositivo que convierte señales de audio analógicas en vibraciones de aire equivalentes para hacer el sonido audible. El hardware gráfico también incluye a las tarjetas gráficas. Una tarjeta gráfica o tarjeta de video, es una tarjeta de expansión para una computadora encargada de procesar los datos provenientes de la CPU y transformarlos en información comprensible y representable en un dispositivo de salida, como un monitor o televisor. Algunas tarjetas gráficas han ofrecido funcionalidades añadidas como captura de vídeo, sintonización de TV, decodificación MPEG-2 y MPEG-4 o incluso conectores de ratón, lápiz óptico o joystick. Figura 31: Tarjeta gráfica ATI PowerColor Radeon X850XT PE. 31 Actividades de aprendizaje Investiga: • Como funciona un monitor LCD. • Que es un dispositivo de despliegue vectorial. • Diferencias entre gráficos raster y gráficos vectoriales. Resuelve el siguiente problema: Determina el tiempo de acceso a un píxel para una pantalla con una resolución de 768 por 256 pixeles y con una frecuencia de refresco de 40 Hz en un sistema de barrido entrelazado. Para un sistema de representación de este tipo, el tiempo de retorno horizontal es de 20 µs, el tiempo de retorno vertical de 1500 µs, y el tiempo de cuadro de 25000 µs. 32 El software gráfico Figura 32: modelo producido con un software gráfico de aplicación. Una representación gráfica consisten en un conjunto de pixeles que se obtiene a partir de una idea de más alto nivel; como puede ser la descripción de la gráfica en términos de líneas, arcos, colores etc. o incluso en términos de objetos tridimensionales, puntos de vista e iluminación. El como llegar de estas descripciones de alto nivel al conjunto de pixeles final es algo de lo que las diferentes partes del sistema se deberán encargar; por lo general el programador dispone de una serie de librerías de programación gráfica que le permiten escribir aplicaciones sin tener que llegar a conocer en detalle el hardware sobre el que se ejecutará su código, y sin tener que escribir desde el principio miles de procedimientos que, además, distan de ser triviales. Ejemplos de estas librerías podrían son OpenGL de SGI y Direct3D de Microsoft. Por lo general, estas librerías permiten trabajar creando estructuras en un sistema de coordenadas local, integrar estas estructuras en una escena más compleja que utiliza un sistema de coordenadas global o "de mundo". De algún modo, el software transformará estas coordenadas a unas coordenadas de dispositivo normalizado (independiente de las características físicas del dispositivo real) y en un último paso estas se ajustarán al rango de salida del dispositivo final. Figura 33: Proceso de transformación de una descripción a una imagen. 33 Los bloques de construcción básicos que ofrece una librería se conocen como "primitivas" y pueden incluir desde un mínimo de líneas, círculos, caracteres, etc. en dos dimensiones hasta mallas de polígonos tridimensionales, definiciones de luces, etc. Las siguientes APIs para gráficos por computadora son particularmente populares: • OpenGL • Direct3D (subconjunto de DirectX para producir gráficos interactivos en 3D) OpenGL OpenGL (Open Graphics Library) es una API portable para desarrollar aplicaciones gráficas interactivas 2D y 3D. Fue desarrollada por Silicon Graphics y actualmente es un estándar abierto controlado por diversas compañías. Su mayor ventaja es su portabilidad, es decir que puede ser usada en una gran cantidad de plataformas de hardware, desde dispositivos móviles hasta súper computadoras, además de distintos sistemas operativos y tarjetas aceleradoras 3D. Es relativamente fácil de usar. Algunas de las operaciones que se pueden realizar con OpenGL son las siguientes: • • • • Modelado de figuras a partir de primitivas básicas, mediante la creación de descripciones geométricas de los objetos (puntos, líneas, polígonos y mapas de bits). Situar los objetos en el espacio de una escena tridimensional y seleccionar el punto de vista desde el que se quiere observar. Determinar el color de los objetos. El color puede asignarse a cada pixel, o calcularse a partir de las condiciones de iluminación o asignarse por medio de una textura mapeada sobre los objetos. Convertir la representación matemática de los objetos y la información de color y textura asociada, en pixeles de la pantalla, en una imagen virtual tridimensional. Además de estos procesos, OpenGL realiza otras operaciones complejas como la eliminación de líneas y caras de los objetos que quedan ocultas para el usuario al ser cubiertas por otros objetos de la escena. 34 Figura 34: Escenario generado en OpenGL. Direct3D Direct3D es parte de DirectX, una API propiedad de Microsoft disponible tanto en los sistemas Windows de 32 y 64 bits, como para sus consolas Xbox y Xbox 360 para la programación de gráficos 3D. El objetivo de esta API es facilitar el manejo y trazado de entidades gráficas elementales, como líneas, polígonos y texturas, en cualquier aplicación que despliegue gráfico en 3D, así como efectuar de forma transparente transformaciones geométricas sobre dichas entidades. Direct3D provee también una interfaz transparente con el hardware de aceleración gráfica. Se usa principalmente en aplicaciones donde el rendimiento es fundamental, como los videojuegos, aprovechando el hardware de aceleración gráfica disponible en la tarjeta gráfica. El principal competidor de Direct3D es OpenGL, desarrollado por Silicon Graphics Inc. 35 Actividades de aprendizaje Investiga: • En consiste el modo retenido y el modo inmediato de Direct3D. • Que implementaciones existen basadas en OpenGL. • Que es un API. 36