Está en la página 1de 66

Grcas computacionales

MAT-610
Dra. Claudia Esteves Jaramillo cesteves@cimat.mx

Informacin general (1)

Pgina web: http:/ /www.cimat.mx/~cesteves/cursos/cg Lugar y hora: LUNES 9h30-11h Saln 6 MIRCOLES 8h-9h30 Saln de Seminarios DEMAT

Informacin general (2)

Ambiente de programacin: C++, GNU/Linux u otro UNIX, OpenGL, Qt, Windows (mingw - gcc4). LUA, libpng

Pre-requisitos: lgebra lineal 1 C++, programacin orientada a objetos

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

Gracacin por computadora (1)


Creacin, almacenamiento y manipulacin de modelos e imgenes. William Fetter acu el trmino computer graphics en 1960 para describir los mtodos de diseo que usaban en Boeing.

Boeing man - First man

El usuario controla el contenido, la estructura y la apariencia de los objetos y sus imgenes desplegadas por medio de retroalimentacin visual.

Gracacin por computadora (2)

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, ...)

Breve historia (1)


Principios de los 60s: Animaciones por computadora para simulacines fsicas. Edward Zajac muestra su investigacin sobre satlites usando CG en 1961.

Breve historia (2)


1963: Ivan Sutherland (MIT) realiza el primer dispositivo de gracacin interactiva llamado Sketchapad. (manipulacin directa, CAD, Caligrafa, vectores, dispositivos de despliegue)

1968: Douglas Engelbart: inventa el ratn, pionero de la interaccin hombre-computadora (hypertexto). Primera video conferencia de la historia. Fundacin de Evans & Sutherland.

Breve historia (3)


1969: Primer SIGGRAPH Finales de los 60s, principios de los 70s: Dinasta de Utah 1970: Pierre Bzier desarrolla las curvas de Bzier. 1971: Sombras de Gouraud. 1972: Westworld, primera pelcula en utilizar grcos por computadora. 1974: Ed Catmull desarrolla el z-buffer (Utah). Primer corto animado: Hunger (animacin keyframe y morphing) 1975: Bui-Tuong Phong crea el sombreado de Phong (Utah) Martin Newell modela la tetera con curvas de Bzier (Utah)

Breve historia (4)


Mediados de los 70s: Raster graphics (Xerox PARC) 1976: Jim Blinn desarrolla el mapeo por textura y bump 1977: Star Wars, CG utilizado para los planes de la Estrella de la Muerte. 1979: Turner Whitted desarrolla el ray tracing Mediados de los 70s, principios de los 80s: Bsqueda de realismo 1982: Tron, Sistemas de Partculas 1986: Primera animacin por computadora nominada para un Oscar: Luxo Jr. (Pixar)

Breve historia (5)


1989: Tin Toy (Pixar) gana el Oscar 1995: Toy Story (Pixar & Disney), primera pelcula de animacin completamente generada por computadora. Reboot, primer caricatura completamente en 3D. Babylon 5: Primera serie de televisin que usa rutinariamente modelos 3D. Finales de los 90s: ambientes interactivos, visualizacin cientca y mdica, dibujo artstico (rendering), trazado de caminos, etc. 00s: Dibujo fotorealista en hardware comn (tarjetas de video)

Dreamworks Shrek

Rendering no interactivo (ofine) hace 7 aos

Quake 3 - id Software

Rendering interactivo (tiempo real) hace 7 aos

Cars - Pixar

Rendering no interactivo (ofine) moderno

Project Gotham Racing

Rendering interactivo moderno

Algunas aplicaciones
Efectos especiales en pelculas y televisin. Juegos de video. Visualizacin cientca. Visualizacin mdica. Diseo industrial. Simulacin. Comunicacin, etc.

Procesamiento de imgenes (anlisis)

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

Monsters Inc. - Pixar

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.

Model coordinate system (MCS)

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.

World coordinate system (WCS)

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)

Viewer coordinate system (VCS) (1)


La cmara se coloca en algn lugar del espacio 3D unicado (mundo). El ojo de la cmara se vuelve entonces el origen del sistema coordenado mirando hacia el fondo al eje z dentro de la escena. Las operaciones de culling, back-face culling e iluminacin se realizan con esta referencia. El volumen visible se produce con una proyeccin de la escena frente a la cmara: pensar en un proyector. El volumen visible se dene de acuerdo a los parmetros de la cmara. La forma del volumen ser rectangular (proyeccin paralela u ortogrca) o piramidal (proyeccin perspectiva - view frustum)

Viewer coordinate system (VCS) (2)

Viewer coordinate system (VCS) (3)

ortogrco o isomtrico

perspectiva

Clipped coordinate system (normalizado)

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.

Screen coordinate system (SCS)

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

Wireframe con profundidad (depth-cued)

Antialiasing

Flat shaded, no iluminado

smooth shaded, iluminado

texturas y sombras

Motion-blur

Diferente punto de vista

Humo (fog)

Efectos de profundidad (en el foco de la cmara) - blur

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.

OpenGL como mquina de estados

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()...

OpenGL rendering pipeline

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.

También podría gustarte