Computación Gráfica (Algunos Fundamentos) Universidad de los Andes Demián Gutierrez Octubre 2011 1 ¿Qué es? Es una rama de la ciencia de computación que estudia al conjunto de técnicas que permiten la representación tridimensional* de los objetos de la vida real en el computador *No solo de objetos tridimensionales, y no sólo de objetos de la vida real 2 ¿Qué es? ¿Que arquitecturas de hardware y software debo tener? ¿Cómo dibujo gráficos 2D? ¿Líneas? ¿Curvas? ¿Polígonos? ¿Aliasing? ¿Cómo relleno un polígono? ¿Cómo represento y dibujo modelos 3D en dispositivos de despliegue 2D? ¿Cómo despliego modelos 3D que sean realistas? ¿Iluminación? ¿Texturas? ¿Sombreado? ¿Suavizado? 3 ¿Aplicaciones? Juegos de Computadora / Video (Weee!!!) Aplicaciones Científicas Aplicaciones y Software para Ingeniería Educación y Entrenamiento Arte (cine, entre otros) Muchos más... 4 ¿Aplicaciones? 5 ¿Aplicaciones? 6 ¿Aplicaciones? 7 ¿Aplicaciones? 8 ¿Aplicaciones? 9 Soporte Conceptual / Fundamentos Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones de colores Estructuras de Datos Arquitectura de Computadores 10 Componentes de un Sist. Gráfico ¿Cuál es la naturaleza de este dispositivo? 11 ¿qué es un gráfico? ¿qué tipos de gráficos existen? ¿naturaleza de un gráfico? 12 ¿Cómo se representa una imagen? 13 ¿Cómo se representa una imagen? Una imágen/gráfico se representa con un conjunto de puntos donde cada punto tiene un valor (color) o una intensidad (por ejemplo, en el caso de escalas de grises) 14 ¿Cómo se representa una imagen? muchos millones (4.294.967.296) de colores muchos (65.536) colores (256) colores (16) colores (8) colores (4) colores 15 ¿Cómo se representa una imagen? de izquierda a derecha: 2 tonos 16 tonos grises 256 tonos grises 16 Raster Vector ¿Vectorial vs Raster? 17 ¿Vectorial vs Raster? 18 ¿Vectorial vs Raster? ¿Cómo dibujar? 19 ¿en qué dispositivos se despliegan los gráficos? 20 Tecnologías de Salida (cómo se dibuja una imágen) 21 Tecnologías de Salida 22 Tecnologías de Salida LCD LED Plasma 23 Tecnologías de Salida Kindle aunque con esto no nos vamos a meter... iPad 24 ¿algunas arquitecturas? 25 Arquitecturas CPU Memoria del Sistema Controlador de Video Bus del Sistema Otros Dispositivos de E/S 26 Arquitecturas CPU Memoria del Sistema Frame Buffer Controlador de Video Bus del Sistema Otros Dispositivos de E/S 27 Arquitecturas Memoria del Procesador de Video CPU Frame Buffer Procesador de Video Controlador de Video Memoria del Sistema Bus del Sistema Otros Dispositivos de E/S 28 Arquitectura / Framebuffer Controlador de Video Frame Buffer memoria p p p p ... 1 2 3 1024 p p p p 1025 1026 1027 2048 p p p p 2049 2050 2051 3072 0x00004000 valor pixel-1 0x00004001 valor pixel-2 0x00004002 valor pixel-3 0x00004003 valor pixel-4 ... ... ... p --- 0x0000FFFF valor pixel-n 800 ... p --- p --1024 ... p n 29 ¿Qué es? Frame Buffer Controlador de Video El Frame Buffer en el fondo se puede ver como un “mapa de bits” ¿mapa de bits? 30 ¿Cómo se representa una imagen? RGB |0000...|0000...|0000...| R G B RGBA |0000...|0000...|0000...|0000...| R G B A (16) colores (8) colores (4) colores 31 Arquitectura / Framebuffer 8 bits por pixel: 256 colores 16 bits por pixel 65536 colores 24 bits por pixel 16 millones de colores 32 bits por pixel 4.294.967.296 colores p p p p ... 1 2 3 1024 p p p p 1025 1026 1027 2048 p p p p 2049 2050 2051 3072 ... p --- 800 ... p --- p --- ... p n 1024 Esto es más de lo que el ojo humano puede diferenciar 32 Arquitectura / Framebuffer por ejemplo: 8 bits por pixel: |00|000|000| R G B ¿Por qué hay más verde y azul que rojo? 33 bien, pero... hasta ahora sólo hemos hablado de gráficos 2D... ¿qué sucede con el 3D? ¿cómo se definen gráficos 3D? ¿cómo se representan en 2D? 34 ¿cómo se definen gráficos 3D? ¿cómo se representan en 2D? ... ¿se acuerdan de sistemas de representación? 35 Objetos y observadores 36 Transformando al Observador en una Cámara 37 Transformando al Observador en una Cámara Proyección Escena 3D Cámara / Observador (localizada en el espacio 3D) Resultado 2D 38 Añadiendo Iluminación... La luz añade complejidades adicionales: sombra, reflejos, colores, etc 39 Añadiendo Iluminación... ¿Cómo se calculan los colores, las sombras, etc? 40 Soporte Conceptual / Fundamentos OpenGL DirectX / Direct3D Tecnologías que definen APIs que permiten dibujar primitivas (puntos, líneas, polígonos, curvas, texturas, iluminación, etc) y realizar un conjunto de operaciones gráficas 41 Soporte Conceptual / Fundamentos Aplicación Frameworks (Java / Otros) (Scene Graphs) (Ej. Java3D, JMonkeyEng, etc) Frameworks (C/C++) (Scene Graphs) (Ej. Ogre) Bindings (Ej. JOGL) ¿? API API OpenGL Direct3D ¿¿?? 42 Soporte Conceptual / Fundamentos Memoria del Procesador de Video Frame Buffer Procesador de Video (“acelerado”) Controlador de Video Operaciones y primitivas gráficas implementadas en el Hardware OpenGL Direct3D API API 43 Soporte Conceptual / Fundamentos Memoria del Procesador de Video Frame Buffer Procesador de Video Implementación en “Software” OpenGL Direct3D API API Controlador de Video Operaciones y primitivas gráficas implementadas en Software (mucho más lento que el anterior) 44 ...ver transparencias del Prof. Domingo... 45 Gracias ¡Gracias! 46