Computación Gráfica Introducción Semestre 201321 CRN Septiembre 2012 – Febrero 2013 Ciro Durán Ingeniero en Computación [email protected] http://www.ciroduran.com @chiguire Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Mecánica ¡Bienvenidos! Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción ¡Bienvenidos! Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción ¡Bienvenidos! Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción ¿Qué es Computación Gráfica? • La computación gráfica generalmente se refiere a la creación, almacenamiento y manipulación de modelos e imágenes. • Tales modelos provienen de diversos y cada vez mas campos del conocimiento como biología, física, matemática, arte o incluso estructuras conceptuales abstractas. Spam plant, por Alex Dragulescu, MIT Media Lab. 2009. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Video: SIGGRAPH 2012 Technical Papers Preview http://www.youtube.com/watch?v=cKrng7ztpog Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción ¿Qué es Computación Gráfica? William Fetter acuñó el término “computer graphics” en 1960 para describir los nuevos métodos de diseño que estaba investigando en Boeing. • Creó una serie de imagenes ampliamente reproducidas en un pen plotter explorando el diseño de cabinas, usando un modelo 3D del cuerpo humano. • “Tal vez la mejor manera de definir los gráficos por computadora es encontrar lo que no es. No es una máquina. No es una computadora, ni un grupo de programas de computadora. No es el conocimiento de un diseñador gráfico, un programador, un escritor, un especialista en películas, o un especialista en reproducción. La computación gráfica es todo esto - una tecnolog{ia concienzudamente manejada y documentada, dirigida hacia comunicar información descriptivamente y con precisión.” Computer Graphics, por William A. Fetter, 1966. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción ¿Qué es Computación Gráfica interactiva? (1/2) • • El usuario controla los contenidos, estructura y apariencia de los objetos y sus imágenes desplegadas via un feedback visual rápido. Componentes básicos de un sistema de gráficos interactivos – entrada/input (ej. mouse, tableta y lápiz, multitouch, etc.) – procesamiento (y almacenamiento) – despliegue/output (ej., pantalla, impresoras basadas en papel, videograbador, etc.) • • El primer sistema gráfico verdaderamente interactivo, Sketchpad, se estrenó en el MIT de mano por Iván Sutherland en su tesis de Ph.D. en 1963. Usó un mainframe transistorizado TX-2 en el laboratorio Lincoln. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción ¿Qué es Computación Gráfica interactiva? (2/2) • Casi todos los elementos claves de los sistemas gráficos interactivos son expresados en el primer párrafo de la tesis doctoral de Sutherland en 1963, Sketchpad, un sistema hombre-máquina de comunicación gráfica: – El sistema Sketchpad usa el dibujo como un medio novedoso de comunicación para una computadora. El sistema contiene entrada, salida y programas de computación que le permiten interpretar información dibujada directamente en un monitor de computadora. Sketchpad se ha mostrado más útil como una ayuda al entendimiento de procesos, tales como el movimiento de enlaces, los cuales pueden ser descritos con imágenes. Sketchpad también facilita hacer dibujos altamente repetitivos o altamente precisos y cambiar los dibujos previamente hechos con el mismo… • Hoy en día usamos todavía un modo batch no interactivo para los renders finales con calidad de producción de video y filmes (efectos especiales - FX). Hacer el render de un solo cuadro de Cars 2 (una película de 24 fps) se toma un promedio de 11.5 horas en un render farm de 12,500 núcleos. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción De dónde viene la computación gráfica moderna (1/5) • Revolución de hardware – Ley de Moore: cada 12 a 18 meses, el poder de cómputo aumenta por un factor de 2 en precio/desempeño a medida que se reduce el tamaño físico. – Avances significativos en chips gráficos de consumo masivo cada 6 meses vs. varios años para CPUs de propósito general. • NVIDIA GTX 680... 3090.4 gigaflops – Los procesores más nuevos son de 64 bits, con 2, 4, 6, 8, o 10 núcleos. • Intel Core i7 - de consumo masivo, hasta 6 núcleos hyperthreaded para proveer 12 hyperthreads. • Intel Sandy Bridge EP - de uso industrial, 8 núcleos con hyperthread, para llegar a 16 núcleos. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción De dónde viene la computación gráfica moderna (2/5) • Subsistemas gráficos – Descargar el procesamiento gráfico del CPU a un chip especialmente diseñado para hacer rápidamente operaciones gráficas. – nVidia GeForce, ATI Radeon. – Los GPUs son usados para computación de propósito especial, también unidos para hacer supercomputadoras. • El GPU ha llevado al desarrollo de otros subsistemas dedicados – Física: nVidia PhysX PPU (Unidad de Procesamiento de Física), estándar en muchos GPUs de nVidia. – Inteligencia artificial: IBM Watson. • Datos de hardware: NVIDIA GeForce GTX 460s – 1.35GHz, 1GB de memoria, tasa de relleno de 37.8 billones de píxeles por segundo. – Tarjetas viejas: GeForce 7300 GT: reloj de 350MHz, 256MB de memoria, tasa de relleno de 2.8 billones. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción De dónde viene la computación gráfica moderna (3/5) • Dispositivos de entrada – Mouse, tableta y lápiz, multi-touch, force feedback, y otros controladores de juego (ej. Wii), escáner, cámara digital (imágenes, visión de computadora), etc. – Cuerpo completo como dispositivo de interacción: Kinect Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción De dónde viene la computación gráfica moderna (4/5) • Muchas formas diferentes de dispositivos – Celulares/PDAs (smartphones), laptops/escritorios/tabletas. – Microsoft PixelSenson en el Samsung SUR40 (sucesor del Microsoft Surface) – Sistemas de realidad virtual 3D inmersivos, tales como el Brown's Cave. Brown’s CaveTM Apple iPhone™ Samsung Galaxy SIII (Android) Samsung SUR40 Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Microsoft Surface Rediseño de CAVE • Vieja Cave: – 4 proyectores de 1024x786 en paredes de 8'x8' (8 a 10 píxeles por pulgada) – Muy bajo para muchas aplicaciones, y empeoró (el brillo y el contraste deterioraron en el tiempo) • Nueva Cave como se planea: – 70 pantallas de 1080p o proyectores dispuestos en un cilindro de 8'. – Impulsado por un cluster de ~35 máquinas gráficas. – No hay ángulos rectos, hasta 40 píxeles por pulgada (no se pueden ver píxeles individuales a una distancia normal de visión). Credit: John Huffman, Brown CCV Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción De dónde viene la computación gráfica moderna (5/5) • Mejoras de software – Algoritmos y estructuras de datos • Modelado de materiales • Render de fenómenos naturales • "Estructuras de aceleración de datos" para ray tracing. – Paralelización • La mayoría de las operaciones son trivialmente paralelas: cambiar el valor de un pixel a menudo es independiente de otros píxeles. – Computación distribuida y en la nube • Enviar operaciones a 'la nube', obtener resultados, sin importar cómo. • Render inclusive como servicio de internet. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Evolución del ambiente (1/5) • Monitores de caracteres (1960s-hoy) • Visualización: texto más pseudográficos alfamosaicos (ASCII art) • Especificación de objetos y comandos: tipeado de línea de comandos. • Control sobre apariencia: código para formato de texto (.p = párrafo, .i 5 = indentar 5) • Control de aplicaciones: monotarea. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Evolución del ambiente (2/5) • Vectores (caligráficos, dibujo de líneas) • Monitores (1963 - 1980x) • Visualización: despliegue de dibujos lineales y texto trazado; hardware para transformación 2D y 3D. • Especificación de objetos y comandos: tipeado de línea de comandos, teclas de función y menúes. • Control sobre apariencia: pseudo-WYSIWYG. • Control de aplicaciones: mono o multitarea, computación distribuida via host de mainframe <-> satélite de minicomputadoras. • El término "gráficos vectoriales" sobrevive como libreria de "gráficos vectoriales escalables" de Adobe y W3C - las formas como objetos transformables en vez de sólo bitmaps. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Evolución del ambiente (3/5) • • Monitores de bitmaps 2D rasterizados para PCs y estaciones de trabajo (1972 en Xerox PARC hasta ahora) Visualización: ventanas, iconos, texto legible, gráficos de “tierra plana”. – Nota: los tardíos años 60 vieron el primer uso de gráficos rasterizados, especialmente para simuladores de vuelo. • • • Especificación de objetos y commandos: tipeado mínimo a través de WIMP (Windows, Icons, Menus, Pointer, o Ventanas, Iconos, Menúes y Apuntador). GUI: selección point-and-click de items de menu y objetos, widgets y manipulación directa (ej. Drag and drop), metáfora de “escritorio desordenado”. Control sobre apariencia: WYSIWYG (lo que es realmente WYSIAYG, lo que ves es todo lo que obtienes). Control de aplicaciones: computación multitasking, en red cliente-servidor y menajador de ventanas (incluso “terminales X”). Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Arriba, una interfaz clásica WIMP. La tecnología en sí Permanece intacta al día de hoy. Abajo, una interfaz WIMP moderna. Introducción Evolución del ambiente (4/5) • Estaciones de trabajo de gráficos 3D (1984 en SGI – hoy) • Visualización: imagines de escenas 3D pseudo-realísticas en tiempo real. • Especificación de objetos y commandos: dispositivos de entrada 2D, 3D y N-D (que controlan más 3 grados de libertad), dispositivos hápticos con force feedback para apuntar y clickear, widgets y manipulación directa. • Control sobre apariencia: WYSIWYG (todavía WYSIAYG) • Control de aplicaciones: computación multitarea, por red (cliente/servidor) y Estaciones de trabajo gráfico manejador de ventanas. como esta han sido reemplazados por hardware de consumo masivo como los GPUs. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Evolución del ambiente (5/5) PCs de altas prestaciones con sofisticadas tarjetas gráficas (nVidia GeForce, ATI Radeon) han sustituido a las estaciones de trabajo gráficas. • Tales PCs son ahora organizadas en clusters a través de buses de alta velocidad o LANs para proveer “gráficos escalables” para impulsar PowerWalls, Caves, etc. • – Tal forma de cluster ahora es accesible a los consumidores a través de nuevas tecnologías como los puentes SLI (Scalable Link Interface) de nVidia. Puedes poner múltiples GPUs juntas en tu Computadora usando SLI Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Hardware de visualización de gráficos Gráficos vectoriales (caligráficos, de trazo, barrido al azar) – Manejado por comandos de despliegue (mover(x,y), carácter(“A”), línea(x, y), etc.) – Sobrevive como “gráficos vectoriales escalables” Ideal Drawing Vector Drawing Raster (TV, bitmap, pixmap) usado en monitores e impresoras laser – Manejado por un arreglo de pixeles (sin semántica, forma más baja de representación) – Nótese los “jaggies” o errores de aliasing debigo a las primitivas de muestreo contínuo. Raster Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Outline Introducción Filled Marco conceptual para gráficos interactivos • Los paquetes o librerías gráficas son intermediarios entre las aplicaciones y el hardware de visualización (sistema gráfico). • Las aplicaciones hacen una correspondencia entre objetos de la aplicación a vistas (imágenes) de esos objetos al llamar a una librería gráfica. El modelo de la aplicación puede contener muchos datos no-gráficos (ej. Propiedades no geométricas del objeto). • La interacción del usuario produce una modificación del modelo o de la imagen. • Este marco de hardware y software tiene más de 4 décadas desde que se concibió, pero es todavía útil. Software Modelo de la aplicación/ base de datos Programa Hardware Librería Gráfica Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Sistema gráfico/ GPU Introducción Librería de gráficos Ejemplos: OpenGL, DirectX, Windows Presentation Foundation (WPF), RenderMan, AWT. • Primitivas (caracteres, líneas, polígonos, meshes, etc.) • Atributos • – Color, estilo de línea, propiedades materiales para 3D • Luces • Transformaciones • Modo inmediato vs. Modo retenido – Modo inmediato: no hay representación almacenada, el paquete sólo contiene un estado a trbiutos, y la aplicación está encargada de dibujar completamente cada fotograma. – Modo retenido: la librería compila y muestra un grafo de la escena que mantiene, un DAG complejo (gráfico acíclico dirigido). Es un extracto centrado en la visualización del Modelo de la Aplicación. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Distinciones de la aplicación: dos paradigmas básicos • Los gráficos basados en muestras: muestras discretas son utilizadas para describir la información visual. – Los píxeles se pueden crear digitalizando imágenes, usando un programa de “pintura” basado en muestras, etc. – A menudo algunos aspectos del mundo físico se muestrean para ser visualizados, ej., las temperaturas de las corrientes marítimas. – Programas de ejemplo: Adobe Photoshop, GIMP, Adobe AfterEffects. Introducción Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Distinciones de la aplicación: dos paradigmas básicos • Gráficos basados en geometrías (también llamados gráficos vectoriales escalables o gráficos orientados a objetos): un modelo geométrico se crea, junto con varios atributos de apariencia, y luego es muestreado para visualización (rendering, también conocido como síntesis de imagen) – A menudo algunos aspectos del mundo físico son simulados visualmente, o “sintetizados”. – Ejemplos de aplicaciones 2D: Adobe Illustrator, Adobe FreeHand, Corel CorelDRAW. – Ejemplos de aplicaciones 3D: Autodesk AutoCAD2010, Autodesk Maya (antes de Alias|Wavefront), Autodesk 3D Studio Max. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Gráficos basados en muestras (1/2) • Las imágenes están hechas de grillas de píxeles discretos, o “picture elements” 2D. • Los píxeles son ubicaciones puntuales con valores asociadas a la muestra, usualmente valores de intensidad lumínica o colores, transparencia u otra información de control. • Cuando muestreamos una imagen, hacemos la muestra de la ubicación del punto a lo largo de una señal continua y no podemos tratar los píxeles como pequeños círculos o cuadrados. Patrón de iluminación de un rayo CRT Visualización de grilla matemática de píxeles Monitor LCD Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Intensidad de luz 1 pixel No se puede resolver Píxeles adyacentes en CRT Introducción Gráficos basados en muestras (2/2) • Las muestras se crean directamente en un programa tipo pintura, o como una muestra de materiales visuales continuos (análogos), ej. La fotografía puede ser muestreada (intensidad de la luz o color medida en intervalos regulares) con muchos dispositivos incluyendo: – Escáner de tambor o de cama plana. – Cámaras digitales o videocámaras. – Dispositivos conectables tales como capturadores de vídeo. • • Los valores de muestra pueden ser también introducidos numéricamente (ej. Con números de un conjunto de datos computarizado) Una vez que una imagen se define como un arreglo de píxeles, puede ser manipulado. – Edición de imágenes: cambios hechos por el usuario, tales como cortar y pegar secciones, herramientas tipo brocha, y procesar áreas selectas. – Procesamiento de imágenes: operaciones algorítmicas que son ejecutadas en la imagen (o una porción preseleccionada de la imagen) sin intervención del usuario. Difuminación, afilado, detección de bordes, balance de color, rotación, distorsión. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Muestreando una imagen • Hagamos un muestreo de esta fotografía. • Un valor de color se mide a lo largo de cada punto de la grilla y se usa para colorear el cuadrado correspondiente. (0, blanco, 5, gris, 10, negro) • Un muestreo y un método de reconstrucción de imágenes pobres crea una imagen “pixelada”. 0 = blanco, 5 = gris, 10 = negro Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción ¿Cuál es la ventaja? • Una vez que la imagen es definida en términos de colores en puntos (x, y) de la grilla, se pueden cambiar los colores fácilmente alterando los valores de ubicación o de color. • Ejemplo, si invertimos la correspondencia hecha anteriormente y hacemos que 10 sea blanco y 0 negro, la imagen se vería de esta manera: (imagen) • La información de píxeles de una imagen puede ser copiada y pegada en otra, reemplazando o combinando información de otros píxeles previamente almacenados. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción ¿Cuál es la desventaja? • WYSIAYG (lo que ves es todo lo que obtienes): no hay información adicional – No hay información de profundidad – No se puede examinar la escena desde un punto de vista distinto – A lo sumo se puede jugar con los píxeles individualmente o por grupos para cambiar colores, mejorar el contraste, encontrar bordes, etc. – Pero ha surgido recientemente un fuerte interés en el rendering basado en imágenes para simular escenas 3D y posiciones arbitrarias de cámaras. Nuevas imágenes construidas por interpolación, composición, distorsión y otras operaciones. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Gráficas basadas en geometría Las aplicaciones gráficas basadas en geometría almacenan descripciones matemáticas, o “modelos”, de elementos geométricos (líneas, polígonos, poliedros, etc.) y atributos asociados (ej., color o propiedades de material). Los elementos son formas geométricas primitivas, o primitivas para acortarlo. • Las imágenes son creadas como arreglos de píxeles (a través de muestreo de geometría) para ser visualizadas, pero no son almacenadas como parte del modelo. Imágenes de muchas vistas diferentes son generadas del mismo modelo. • Los usuarios usualmente no pueden trabar directamente con píxeles individuales en programas basados en geometría; a medida que el usuario manipula los elementos geométricos, el programa remuestrea y redibuja los elementos. • Es cada vez más común la combinación de gráficos geométricos y basados en muestras, ya sea como un hack de desempeño o para aumentar la calidad del producto final. • Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción ¿Qué es el modelado geométrico? (1/2) • ¿Qué es un modelo? • Captura características sobresalientes (datos, comportamiento) de la cosa o fenómeno que se está modelando. – Los datos incluyen geometría, apariencia, atributos… – Nótese similitudes a ideas de programación orientada a objetos. • Real: algunas inherentes a la geometría – Físicas (ej. objetos tales como sillas) – No-físicas (ej. Funciones matemáticas, datos climáticos) • Abstractos: no inherentes a la geometría, sino a la visualización – Organizacionales (ej. un organigrama de una compañía) – Cuantitativos (ej. gráfico del mercado de la bolsa) Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción ¿Qué es el modelado geométrico? (2/2) • Modelar es hacerle frente a la complejidad • Nuestro foco: modelar y ver objetos simples del día a día • Considera esto: – A través de los gráficos computarizados 3D, por primera vez en la historia de la humanidad tenemos formas 3D abstractas fácilmente modificables. Esto ha revolucionado los procesos de trabajo de muchos campos – ciencia, ingeniería, diseño industrial, arquitectura, comercio, entretenimiento, etc. Esto ha tenido profundas implicaciones para el pensamiento visual y alfabetización visual… Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Modelado vs. Rendering Modelado • • • • • Crear modelos Aplicar materiales a los modelos Colocar modelos alrededor de una escena Colocar luces en una escena Colocar la cámara Rendering • • Tomar una “foto” con la cámara Ambas se pueden hacer con software comercial: Autodesk Maya, 3D Studio Max, Blender, etc. Posición de luces direccionales Luz ambiental Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Descomposición de un modelo geométrico • • • • Dividir y conquistar Jerarquía de componentes geométricos Reducción de primitivas (ej. esferas, cubos, etc.) Elementos simples vs. No tan simples (clavo vs. Tornillo). Cabeza Cuerpo Punta composición Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán descomposición Introducción Diagrama jerárquico (árbol) de un clavo • El objeto a ser modelado es visualmente analizado, y luego descompuesto en colecciones de formas primitivas. • El diagrama de árbol provee un método visual para expresar relaciones “compuesto de” del modelo. Clavo Cuerpo Cabeza (cilindro) Punta Cuerpo (cono) (cilindro) Diagrama de árbol Nodo raíz Nodos hoja • Tales diagramas son parte de las interfaces de programas 3D (ej., 3D Studio MAX o Maya) • Como son estructuras de datos a ser renderizados, se le llama un grafo de la escena (o scenegraph en inglés). Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Composición de un modelo geométrico • Las primitivas que se crean en un proceso de descomposición deben ser ensambladas para crear un objeto final. Esto se hace con transformaciones afines, T, R, S (como en el ejemplo anterior). Traslación Traslación y escalamiento Traslación y rotación Primitivas En su propio sistema de coordenadas de modelado Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Composición En el sistema de coordenadas mundial (raíz) Introducción Próximos tópicos • • • • Hemos manipulado formas primitivas con transformaciones geométricas (translación, rotación, escalamiento). Estas transformaciones son esenciales para organización de los modelos, el procesamiento de componer objetos complejos a partir de componentes más simples. Modelos jerárquicos y transformaciones geométricas también son esenciales para la animación. Una vez que la geometría del objeto sea establecida, debe ser vista en pantalla: corresponder del 3D a 2D para ver, y de 2D a 3D para dispositivos de entrada 3D (ej. mouse o lápiz) Mientras que se hace la correspondencia de 3D a 2D, se usan las propiedades superficiales del objeto y los efectos de iluminación para hacer el rendering de esas construcciones. Este proceso de rendering se conoce también como síntesis de imágenes. Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción Créditos de imágenes • • • • • • Render de tablero de ajedrez por Sara Villareal y Jesús Simanca. Render volumétrico de datos de una simulación de Resonancia Magnética, de la tesis “Rendering volumétrico basado en mecanismos de manejo de texturas”, por Durán y Morillo (2006). Imagen de la cara tomada de http://spintdt.blogspot.com/2010/11/using-mental-ray-to-implementskin.html Visualización de la distancia al McDonald’s más cercano en EE.UU. Por Stephen Von Worley en http://www.datapointed.net/2009/09/distanceto-nearest-mcdonalds/ Ejemplo de Raytracing tomado de http://cs.tju.edu.cn/orgs/vlsilab/index.php?option=com_content&view= article&id=81:raytracing61070136&catid=17:projectinresearch&Itemid=149 Foto de la UCAB por Antonio Jordana http://www.flickr.com/photos/51387266@N00/122080807 Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán Introducción