Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MAT-610
Dra. Claudia Esteves Jaramillo cesteves@cimat.mx
Pgina web: http:/ /www.cimat.mx/~cesteves/cursos/cg Lugar y hora: LUNES 9h30-11h Saln 6 MIRCOLES 8h-9h30 Saln de Seminarios DEMAT
Ambiente de programacin: C++, GNU/Linux u otro UNIX, OpenGL, Qt, Windows (mingw - gcc4). LUA, libpng
Referencias
Foley, van Dam, Feiner, Hughes. Computer Graphics: Principles and Practice. AddisonWesley. Hearn and Baker. Computer Graphics with OpenGL. Prentice Hall. OpenGL Programming Guide. Addison Wesley. Parent. Computer Animation: Algorithms and Techniques. Morgan Kaufmann.
...
Calicacin
Tareas - 50% Exmenes - 30% Proyecto nal* - 20%
* el proyecto nal se dividir en 5% para la propuesta del proyecto, 20% para la especicacin del proyecto (documentacin) y 75% para el producto nal.
Tareas (1)
Las tareas se entregarn antes de la clase en los das de entrega (correo, memoria usb) o antes por correo electrnico. Tienen tres retrasos en entrega de tareas de mximo 2 das que se podrn usar como comodn en las tareas que ms les convenga. El ambiente de programacin ser C++, OpenGL y Qt. La salida grca ser usando OpenGL o imgenes en formato PNG segn se pida en la tarea.
Tareas (2)
En cada tarea se proporcionar una lista de objetivos a cumplir, se debe adjuntar un archivo README especicando qu objetivos se cumplieron y cules no y su estado al momento de la entrega. si falta esa informacin NO se dar crdito parcial. Todas las tareas son individuales. En caso de utilizar cdigo de alguien ms o cdigo propio realizado anteriormente se deber especicar claramente.
Algunos temas
Lnea de grcos ( graphics pipeline ) y Hardware. Matrices, transformaciones anes en 3D. Modelizacin y estructuras de datos. Color, luz y sombras. Ray Tracing. Iluminacin. Texturas Animacin GLSL
El usuario controla el contenido, la estructura y la apariencia de los objetos y sus imgenes desplegadas por medio de retroalimentacin visual.
Componentes bsicos de un sistema interactivo de grcos entrada (ratn, tableta y pluma, dispositivo de retroalimentacin de fuerza, scanner, videos, etc.); procesamiento y almacenamiento; despliegue / salida (pantalla, impresora, video, ...)
1968: Douglas Engelbart: inventa el ratn, pionero de la interaccin hombre-computadora (hypertexto). Primera video conferencia de la historia. Fundacin de Evans & Sutherland.
Dreamworks Shrek
Quake 3 - id Software
Cars - Pixar
Algunas aplicaciones
Efectos especiales en pelculas y televisin. Juegos de video. Visualizacin cientca. Visualizacin mdica. Diseo industrial. Simulacin. Comunicacin, etc.
Algunas operaciones en CG requieren manipular imgenes en 2D (bitmaps) El procesamiento de imgenes se aplica directamente sobre la cuadrcula de pixeles e incluye operaciones como color, correccin, escalamiento, movimiento (blurring, sharpening)... Ej. Adobe Photoshop
Sntesis de imgenes
La sntesis de imgenes o generacin de imgenes se reere a la construccin de imgenes desde cero en lugar de procesar imgenes existentes. El proceso de sintetizar una imgen en 2D a partir de una escena 3D se conoce como rendering.
Photoreal Rendering
Dibujar una escena en 3D de manera realista. Simulacin fsica de la propagacin de los rayos de luz en el ambiente 3D. La mayora de los algoritmos de rendering modernos estn basados en el algortmo clsico de trazado de rayos ( ray tracing ) que traza el camino de los rayos de luz individuales a partir del ojo y hacia atrs hasta la fuente de luz.
Non-photoreal Rendering
Dibujar las escenas de otras maneras... Por ejemplo, con lpiz, acuarela, pinceles, etc. Propsitos artsticos o cientcos
Graphics Pipeline
mat-610
Rendering
Conversin de una escena a una imagen. Interpretacin
Ofine rendering
Ofine rendering
Exactitud sobre rapidez. Modelos utilizados por ejemplo para el diseo y manufactura de aviones y autos o aplicaciones mdicas.
Real-time rendering
Sacricar detalles por desempeo. Se utiliza para motores de juegos de video y simuladores. Flujo de cuadros constante para mantener las animaciones suaves y uidas.
Real-time rendering
Graphics Pipeline
Las escenas estn compuestas de modelos en el espacio en 3 dimensiones. Los modelos se introducen a mano o son creados por un programa. La imgen se dibuja en un monitor, se imprime o se graba en una memoria. La manera de dibujar debe ser independiente al dispositivo. Clsicamente la conversin modelo-imgen-modelos se divide en etapas nas, llamadas secuencia grca, graphics pipeline o 3D pipeline.
Desempeo
La gran cantidad de procesamiento necesario en una sola escena ha llevado a hacer trampas al momento de dibujar imgenes. Esto es, reducir detalles visuales para mejorar el desempeo de tal manera que no afecte a la calidad del dibujo. En grcos el procesador y la memoria son bienes preciosos y limitados. Ejemplo: culling.
Graphics pipeline
Algunas etapas del pipeline se pueden implementar en el hardware para obtener desempeo interactivo. Los aceledores grcos actuales permiten pipelines programables. Algunas etapas del pipeline son unidades programables. Se pueden implementar modelos de iluminacin o transformaciones geomtricas propias. Acelerador grco programable: GPU Se debe saber lo que se hace (matemticas) para usar el GPU.
Marcos de referencia
Sistema de coordenadas Cartesiano: marcos de referencia. Marco del modelo. Marco del mundo. Marco de vista o de cmara. Marco de despliegue o pantalla.
Cada modelo est en su propio marco de referencia. Su origen es algn punto en el modelo (el centroide, un pie...) El modelo cuenta tpicamente con un punto de control El objeto permanece constante ante este punto. Si el punto se transforma (translacin, rotacin) el modelo se transforma tambin.
Al colocar los modelos en el mundo 3D deben tener un origen comn. Muchos programas 3D evitan esta tranformacin y van directamente al marco de la cmara (por ejemplo OpenGL)
ortogrco o isomtrico
perspectiva
Similar al sistema coordenado de cmara pero el frustum se adapta a un cubo unitario. Los ejes x y y normalizados en un rango entre -1 y 1 y z entre 0 y 1.
Aqu, de las coordenadas 3D de la escena se toman x y y como coordenadas de la imagen 2D. Las coordenadas z se guardan para las pruebas del z-buffer. En esta etapa no se ha realizado todava la transformacin de la escena a pixeles (rasterization)
MCS
Modelo Escena 3D M1 Modelo M2 V Vista de la escena 3D
Mn Modelo
WCS
VCS
Rasterization
Despliegue
Clip
Normalizar
SCS
Graphics pipeline
Las transformaciones entre dos marcos de referencia se representan con una matriz. En el proceso se puede agregar informacin (iluminacin, sombras) y eliminar primitivas (ocultas) o modicarlas (clipping). Jugar con modelos de Google SketchUp C++
API de grcos
En prctica las etapas de un pipeline se administran por una Interfaz de Programacin de Aplicaciones (Application Programming Interface - API). Ejemplos de API: OpenGL, Microsofts Direct3D, Pixars Renderman ... El hardware grco se comunica con los APIs. Se hacen tambin capas de abstraccin de hardware (HALs) pudiendo hacer al API independiente del dispositivo.
OpenGL (1)
OpenGL es un software que sirve como interfaz con el hardware. Consta de alrededor de 250 comandos (~200 en OpenGL y 50 en la librera de utilidades GLU). Se usa para especicar los objetos y operaciones necesarias para producir aplicaciones 3D interactivas. Diseado para funcionar de manera independiente al hardware, las compaas que venden hardware proporcionan los drivers. No da soporte para tareas con ventanas, botones, etc. Debe usarse un manejador de ventanas: Qt, GLUT, ... No soporta tampoco modelos de alto nivel, sino solamente las primitivas: puntos, lneas y polgonos.
OpenGL (2)
La Librera de Utilidades de OpenGL (GLU) soporta algunas herramientas para modelar: supercies cuadrticas, curvas y supercies NURBS. GLU acompaa todas las implementaciones de OpenGL. Entonces que se puede hacer con OpenGL? http:/ /glprogramming.com/red - Captulo 1
Modelo en wireframe
Antialiasing
texturas y sombras
Motion-blur
Humo (fog)
OpenGL (3)
Cmo se ve el cdigo en OpenGL? Tareas a realizar: inicializar ciertos estados que controlan cmo se va a dibujar la escena. especicar los objetos que formarn el modelo.
OpenGL (4)
#include <whateverYouNeed.h> main(){ ! InitializeWindowPlease(); ! ! glClearColor(0.0, 0.0, 0.0, 0.0); ! glClear(GL_COLOR_BUFFER_BIT); ! glColor3f(1.0, 1.0, 1.0); ! glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); ! glBegin(GL_POLYGON); !! glVertex3f(0.25, 0.25, 0.0); !! glVertex3f(0.75, 0.25, 0.0); !! glVertex3f(0.25, 0.75, 0.0); ! glEnd(); ! glFlush(); ! UpdateTheWindowAndCheckForEvents(); }
OpenGL: sintxis
prejo gl para comandos (glClearColor( ... )) prejo GL_ para constantes (GL_COLOR_BUFFER_BIT). 3f en glColor3f() o glVertex3f(). b (bit), s(short), i (int o long), f (oat), d (double), ub (unsigned char), us (unsigned short), ui (unsigned int). glVertex*v - vector.
Se inicializan los estados y se mantienen hasta que se especique un cambio: glEnable, glDisable. Cada variable tiene un modo predeterminado que se puede conocer con comandos de tipo glGetBooleanv(), glGetDoublev()...
Display Lists
Las listas de despliegue sirven para almacenar la geometra o pixels de los modelos o bitmaps. Estas se utilizan ms tarde al desplegar el modelo en cuestin. Modo no-inmediato (vs. inmediato).
Evaluators
Todas las primitivas se deben especicar al nal con vrtices: las curvas paramtricas y las supercies se pueden denir con puntos de control pero deben ser evaluados.
Per-vertex operations
Los vrtices se deben convertir en primitivas. Algunos datos de vrtices se transforman a matrices de 4x4. Aqu se generan las coordenadas de texturas, iluminacin, sombras.