computación gráfica unidad i: introducción docentes: néstor calvo Ángel calegaris walter sotil...

46
Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Upload: eutimio-orantes

Post on 02-Apr-2015

114 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Computación Gráfica

Unidad I: Introducción

Docentes:

Néstor CalvoÁngel Calegaris

Walter Sotil

2008

Page 2: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 2

• No Es:• CAD• Arte• Animación• Visualización• Juegos

• Sí Es:• Geometría

o Espacioso Transformaciones

• Modeladoo Curvas, Superficies, Objetoso Iluminación, Texturas, Ambienteo Mecánica – Interacciones

• Programacióno C++ (lógica y flujo del programa)o OpenGL (presentación gráfica)o GLUT (interacción con el usuario)

Que sirve para hacer(no hacemos muebles, hacemos máquinas para hacer muebles)

Computación Gráfica

Page 3: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 3

Información UsuarioComunicación

Procesamiento de la Información

Es una tecnología para presentar información en forma gráfica

ComputaciónGeometría Comunicación Gráfica

Computación Gráfica

Computación Gráfica

Page 4: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 4

Sketchpad, Ivan Sutherland

Primeros Pasos

DAC-1, El primer CAD de IBM

Douglas Engelbart

1963!!

Page 5: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 5

Hoy: Ciencia, Tecnología e Industria

Page 6: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 6

Tendencias Futuro (??????????????)

Page 7: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 7

Sistema Gráfico Básico

Page 8: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 8

Es la transformación de una escena en una imagen

ImagenEscena 3DRendering

• Escena: • Modelo:

o Ensambles de primitivaso Superficies: Color, Textura, Normales y Normales “truchas”o Fondo o Ambiente

• Luces: Modelos de iluminación• Cámara: Proyección

• Animación: sucesión de escenas.• Imagen:

• Puede realizarse en varios medios (device independence)• Vector: secuencia de comandos select_pen(1); goto (x,y); pen_down();...

• Raster: framebuffer (array de pixels) (W x H x C) (& cia.)

Rendering

Page 9: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 9

Tubo de Rayos Catódicos o CRT

Page 10: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 10

CRT Vectorial

Page 11: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 11

CRT Raster

Page 12: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 12

Más Monitores Raster

Cristal Líquido (LCD)

Panel de Plasma

Page 13: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 13

Es la transformación de una escena en una imagen

ImagenEscena 3DRendering

• Escena: • Modelo:

o Ensambles de primitivaso Superficies: Color, Textura, Normales y Normales “truchas”o Fondo o Ambiente

• Luces: Modelos de iluminación• Cámara: Proyección

• Animación: sucesión de escenas.• Imagen:

• Puede realizarse en varios medios (device independence)• Vector: secuencia de comandos select_pen(1); goto (x,y); pen_down();...

• Raster: framebuffer (array de pixels) (W x H x C) (& cia.)

Rendering

Page 14: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 14

Modelo: Constructive Solid Geometry (CSG)

Page 15: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 15

Modelo: Boundary Representation (BRep)

Page 16: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 16

Modelo: Level-Sets y Marching Cubes

Page 17: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 17

Modelo: Objetos Orgánicos (Metaballs)

Page 18: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 18

Modelo y Superficie

Page 19: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 19

Superficie: Textura

Page 20: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 20

Bump-Map

TexturaDecal (calcomanía)

Bump Real Bump Falso

Superficie: Imágenes y Normales

Page 21: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 21

• Color 24 BPP 3x1byte/píxel (0-255)• Escala de Grises (r=g=b=l) 256 colores 1byte/píxel luminancia=max(r,g,b)

Iluminación: Color

Page 22: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 22

Iluminación: Mezcla (Blending)

Page 23: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 23

Iluminación: Luz y Reflejos

Page 24: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 24

Modelo de Phong

Iluminación Local

Page 25: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 25

Ray CastingRay TracingRadiosityPhoton Map

Global

Iluminación Global

Page 26: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 26

Bidirectional Reflectance Distribution Function

Iluminación

Page 27: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 27

Non-Photorealistic Rendering (NPR)

Page 28: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 28

Es la transformación de una escena en una imagen

ImagenEscena 3DRendering

• Escena: • Modelo:

o Ensambles de primitivaso Superficies: Color, Textura, Normales y Normales “truchas”o Fondo o Ambiente

• Luces: Modelos de iluminación• Cámara: Proyección

• Animación: sucesión de escenas.• Imagen:

• Puede realizarse en varios medios (device independence)• Vector: secuencia de comandos select_pen(1); goto (x,y); pen_down();...

• Raster: framebuffer (array de pixels) (W x H x C) (& cia.)

Rendering

Page 29: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 29

Es la transformación de una escena en una imagen

• Escena: • Modelo:

o Ensambles de primitivaso Superficies: Color, Textura, Normales y Normales “truchas”o Fondo o Ambiente

• Luces: Modelos de iluminación• Cámara: Proyección

• Animación: sucesión de escenas.• Imagen:

• Puede realizarse en varios medios (device independence)• Vector: secuencia de comandos select_pen(1); goto (x,y); pen_down();...

• Raster: framebuffer (array de pixels) (W x H x C) (& cia.)

Rendering

TRANSFORMACIONES

(dua

les)

(ran

go 2

) (2D)

Page 30: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 30

Ensamble: Primitivas (LCS) Modelo (MCS)Textura: Imagen (ICS) Superficie del modelo (PS: u,v)Escena: Modelos (MCS) Universo (WCS)Iluminación: Luces (LCS) Universo (WCS)Proyección: Universo (WCS) Observador (VCS)Normalización: Observador (VCS) Dispositivo Universal (NDCS)Rasterización: Dispositivo Universal (NDCS) Dispositivo (DCS) Pantalla (SCS) Imagen (ICS)

L: Local M: ModelI: Image W: WorldV: Viewer ND: Normalized DeviceD: Device S: ScreenPS: Parameter Space

Sistemas de Coordenadas

Page 31: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 31

L

M

ND

V

Sistemas de Coordenadas

Page 32: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 32

Color: Display (front, back, layers)Z o Depth: Oclusión de superficies.Stencil: Restricción del área de dibujo. Reflejos y Sombras.Accumulation: Movimiento, Antialiasing, Prof. de Campo.Stereo: Visión estereoscópica (left/right color buffers).

Rasterizado: Color, Z, y otros buffers

Framebuffer (memoria de video)

Page 33: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 33

Animación

Page 34: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 34

Rendering Pipeline

• Programa: La CPU, por si sola o interactuando con el usuario alimenta de datos al sistema geométrico

• Sistema Geométrico: recibe los datos y realiza las operaciones per-vertex sobre los objetos geométricos: transformaciones, clipping, iluminación. Suele estar acelerado por hardware (implementada en la GPU)

• Sistema Gráfico: Recibe los datos vectoriales proyectados (NDC) y con ellos procesa o arma los distintos buffers; realiza operaciones per-pixel como rasterizado, mapeo de la textura, alpha-blending (mezcla de capas) y z-buffering (ocultamiento de objetos) para luego enviar el framebuffer al dispositivo gráfico y, posiblemente, realimentar el programa. También suele estar implementado en la GPU

Pipeline

•Vertex: Vecinos geométricos•Pixel: Vecinos gráficos

Page 35: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 35

Rendering Pipeline

Page 36: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 36

API: Application Programming Interface Es un programa para programar. Provee piezas de alto nivel (lenguaje, bibliotecas) que se ensamblan para armar una aplicación.En otra acepción es una biblioteca de rutinas para interactuar con el hardware.

GUI: Graphical User InterfaceEs una biblioteca para programar la interacción del usuario con el programa mediante dispositivos de entrada y utilizando ventanas y otras metáforas gráficas. Normalmente proveen funciones tipo callback para reaccionar a la entrada de datos a través de:

• Teclado• Mouse: Botones y Cursor• Menú: texto, iconos• Widgets (artilugios) gráficos: slider, dial, cuadros de diálogo …• Otros: Joystick, Tablero Digitalizador, Trackball….

“Computer” Graphics

Page 37: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 37

• OpenGL: Provee funciones para casi todo el pipeline y es soportado por casi todos los sistemas operativos. Está implementado en hardware en casi todas las placas gráficas (la GPU se encarga de hacer las operaciones).

• Direct3D: idem pero solo para Windows.• X11, Postscript, PDF…. Solo 2D y por software.• HPGL: caído en desuso, pero es un ejemplo de API vectorial.

API´s Gráficas

• AUX: para aprender OpenGL, excesivamente simple, ya no se utiliza.• GLUT: simple y estable, no cubre todas las necesidades.• QT, FLTK, wxWidgets… muy completas (hay que estudiar para usarlas)

GUI´s gratuitas con ventana OpenGL

“Computer” Graphics

Page 38: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 38

• ESTABLE El trabajo hecho perdura y se puede reutilizar

¡Cuidado con las extensiones! (en lo posible no usar)• PORTABLE

Exactamente el mismo código en cualquier sistema• EFICIENTE

Casi todo el trabajo lo hace la GPU Implementado en cualquier placa gráfica estándar Aun por software es eficiente

• GRATUITO OpenGL tiene copyright de Silicon Graphics

Pero hay implementaciones realmente libres (Mesa)

OpenGL, ¿Por que?

Page 39: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 39

• Máquina de Estados• Procedural (Assembler de rutinas gráficas)• OpenGL es un renderizador, no es modelador

ni GUI (Las bibliotecas asociadas GLU y GLUT tienen algo de modelado y algo de GUI)

Funcionamiento de OpenGL

Page 40: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 40

• Abre ventanas de OpenGL• Callbacks para interacción con hardware

• Recibir input del teclado y mouse• Temporizador (idle callback)• Resize y Redraw (render)

• Menús (muy modestos)

• Estable, sencillo y eficiente

• No posee widgets (sliders, cuadros de diálogo)• No posee selector de archivos• No soporta la ruedita del ratón• No se actualiza desde hace mucho tiempo

OpenGL Utility Library (GLUT)

Page 41: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 41

• Creación de la ventana de aplicación• Creación de ventanas de dibujo e interacción

• GUI:• Declaración de callbacks

• Funciones del mouse• Funciones de los menús• Funciones del teclado

• OpenGL:• Variables de estado usuales• Sistema de coordenadas estándar• Iluminación inicial • Cámara y sistema de proyección usual

• loop de ejecución• Dibujar• Reaccionar a los eventos • Alterar el contenido o los métodos

Lineamientos de un programa gráfico

Page 42: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 42

Crear ventanasDefinir callbacks

Inicializar OpenGL

Reaccionar a eventos

Actualizar variables(animación)

RedibujarLoop de Eventos

Lineamientos de un programa gráfico

Page 43: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 43

Siempre

Nombre

Dimensión

Tipo Puntero

Parámetros

Ejemplos: glBegin(GL_LINE_LOOP); glVertex3d(x,y,z); ........... glEnd(); glLightfv(GL_LIGHT0,GL_POSITION,lpos);

glAlgunaFuncion[234][dfis][v](.....);

Llamada Típica a Funciones del OpenGL

Page 44: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 44

Avisar como se dibujan las cosas

Dibujar algunas cosas

Avisar como se dibujan las cosas

Dibujar algunas cosas

Secuencia típica de dibujo en OpenGL

Page 45: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 45

Rendering Pipeline (simplificada) de OpenGL

Page 46: Computación Gráfica Unidad I: Introducción Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

Introducción 46

Fin