Computacin Grfica Unidad I Introduccin Docentes Nstor Calvo

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

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

Computación Gráfica • No Es: • CAD • Arte • Animación • Visualización •

Computación Gráfica • No Es: • CAD • Arte • Animación • Visualización • Juegos • Sí Es: • Geometría o o Espacios Transformaciones • Modelado o Curvas, Superficies, Objetos o Iluminación, Texturas, Ambiente o Mecánica – Interacciones • Programación o C++ (lógica y flujo del programa) o Open. GL (presentación gráfica) o GLUT (interacción con el usuario) Que sirve para hacer (no hacemos muebles, hacemos máquinas para hacer muebles) Introducción 2

Computación Gráfica Es una tecnología para presentar información en forma gráfica Información Comunicación Usuario

Computación Gráfica Es una tecnología para presentar información en forma gráfica Información Comunicación Usuario Procesamiento de la Información Computación Gráfica Geometría Computación Comunicación Gráfica Introducción 3

Primeros Pasos DAC-1, El primer CAD de IBM Sketchpad, Ivan Sutherland 1963! ! Douglas

Primeros Pasos DAC-1, El primer CAD de IBM Sketchpad, Ivan Sutherland 1963! ! Douglas Engelbart Introducción 4

Hoy: Ciencia, Tecnología e Industria Introducción 5

Hoy: Ciencia, Tecnología e Industria Introducción 5

Tendencias Futuro (? ? ? ? ) Introducción 6

Tendencias Futuro (? ? ? ? ) Introducción 6

Sistema Gráfico Básico Introducción 7

Sistema Gráfico Básico Introducción 7

Rendering Es la transformación de una escena en una imagen Escena 3 D Rendering

Rendering Es la transformación de una escena en una imagen Escena 3 D Rendering Imagen • Escena: • Modelo: o o o Ensambles de primitivas Superficies: Color, Textura, Normales y Normales “truchas” 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. ) Introducción 8

Tubo de Rayos Catódicos o CRT Introducción 9

Tubo de Rayos Catódicos o CRT Introducción 9

CRT Vectorial Introducción 10

CRT Vectorial Introducción 10

CRT Raster Introducción 11

CRT Raster Introducción 11

Más Monitores Raster Cristal Líquido (LCD) Panel de Plasma Introducción 12

Más Monitores Raster Cristal Líquido (LCD) Panel de Plasma Introducción 12

Rendering Es la transformación de una escena en una imagen Escena 3 D Rendering

Rendering Es la transformación de una escena en una imagen Escena 3 D Rendering Imagen • Escena: • Modelo: o o o Ensambles de primitivas Superficies: Color, Textura, Normales y Normales “truchas” 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. ) Introducción 13

Modelo: Constructive. Solid Geometry(CSG) Introducción 14

Modelo: Constructive. Solid Geometry(CSG) Introducción 14

Modelo: Boundary. Representation (BRep) Introducción 15

Modelo: Boundary. Representation (BRep) Introducción 15

Modelo: Level-Sets y Marching. Cubes Introducción 16

Modelo: Level-Sets y Marching. Cubes Introducción 16

Modelo: Objetos Orgánicos Metaballs ( ) Introducción 17

Modelo: Objetos Orgánicos Metaballs ( ) Introducción 17

Modelo y Superficie Introducción 18

Modelo y Superficie Introducción 18

Superficie: Textura Introducción 19

Superficie: Textura Introducción 19

Superficie: Imágenes y Normales Textura Decal (calcomanía) Bump-Map Bump Real Bump Falso Introducción 20

Superficie: Imágenes y Normales Textura Decal (calcomanía) Bump-Map Bump Real Bump Falso Introducción 20

Iluminación: Color • Color 24 BPP 3 x 1 byte/píxel (0 -255) • Escala

Iluminación: Color • Color 24 BPP 3 x 1 byte/píxel (0 -255) • Escala de Grises (r=g=b=l) 256 colores 1 byte/píxel luminancia=max(r, g, b) Introducción 21

Iluminación: Mezcla (Blending) Introducción 22

Iluminación: Mezcla (Blending) Introducción 22

Iluminación: Luz y Reflejos Introducción 23

Iluminación: Luz y Reflejos Introducción 23

Iluminación Local Modelo de Phong Introducción 24

Iluminación Local Modelo de Phong Introducción 24

Iluminación Global Ray Casting Ray Tracing Radiosity Photon Map Global Introducción 25

Iluminación Global Ray Casting Ray Tracing Radiosity Photon Map Global Introducción 25

Iluminación Bidirectional Reflectance Distribution Function Introducción 26

Iluminación Bidirectional Reflectance Distribution Function Introducción 26

Non-Photorealistic Rendering(NPR) Introducción 27

Non-Photorealistic Rendering(NPR) Introducción 27

Rendering Es la transformación de una escena en una imagen Escena 3 D Rendering

Rendering Es la transformación de una escena en una imagen Escena 3 D Rendering Imagen • Escena: • Modelo: o o o Ensambles de primitivas Superficies: Color, Textura, Normales y Normales “truchas” 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. ) Introducción 28

Rendering Es la transformación de una escena en una imagen o o go 2

Rendering Es la transformación de una escena en una imagen o o go 2 (ran s) ale (du o (2 D) • Escena: • Modelo: ) TRANSFORMACIONES Ensambles de primitivas Superficies: Color, Textura, Normales y Normales “truchas” 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. ) Introducción 29

Sistemas de Coordenadas Ensamble: Primitivas (LCS) Modelo (MCS) Textura: Imagen (ICS) Superficie del modelo

Sistemas de Coordenadas 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: Model I: Image W: World V: Viewer ND: Normalized Device D: Device S: Screen PS: Parameter Space Introducción 30

Sistemas de Coordenadas L M ND V Introducción 31

Sistemas de Coordenadas L M ND V Introducción 31

Rasterizado: Color, Z, y otros buffers Framebuffer (memoria de video) Color: Display (front, back,

Rasterizado: Color, Z, y otros buffers Framebuffer (memoria de video) 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). Introducción 32

Animación Introducción 33

Animación Introducción 33

Pipeline • Programa: La CPU, por si sola o interactuando con el usuario alimenta

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 Rendering Pipeline • Vertex: Vecinos geométricos • Pixel: Vecinos gráficos Introducción 34

Rendering. Pipeline Introducción 35

Rendering. Pipeline Introducción 35

“Computer ” Graphics API: Application Programming Interface Es un programa para programar. Provee piezas

“Computer ” Graphics 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 Interface Es 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…. Introducción 36

“Computer ” Graphics API´s Gráficas • Open. GL: Provee funciones para casi todo el

“Computer ” Graphics API´s Gráficas • Open. GL: 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). • Direct 3 D: idem pero solo para Windows. • X 11, Postscript, PDF…. Solo 2 D y por software. • HPGL: caído en desuso, pero es un ejemplo de API vectorial. GUI´s gratuitas con ventana Open. GL • AUX: para aprender Open. GL, excesivamente simple, ya no se utiliza. • GLUT: simple y estable, no cubre todas las necesidades. • QT, FLTK, wx. Widgets… muy completas (hay que estudiar para usarlas) Introducción 37

Open. GL, ¿Por que? • ESTABLE El trabajo hecho perdura y se puede reutilizar

Open. GL, ¿Por que? • 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 Open. GL tiene copyright de Silicon Graphics Pero hay implementaciones realmente libres (Mesa) Introducción 38

Funcionamiento de Open. GL • Máquina de Estados • Procedural (Assembler de rutinas gráficas)

Funcionamiento de Open. GL • Máquina de Estados • Procedural (Assembler de rutinas gráficas) • Open. GL es un renderizador, no es modelador ni GUI (Las bibliotecas asociadas GLU y GLUT tienen algo de modelado y algo de GUI) Introducción 39

Open. GLUtility. Library(GLUT) • Abre ventanas de Open. GL • Callbacks para interacción con

Open. GLUtility. Library(GLUT) • Abre ventanas de Open. GL • 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 No posee widgets (sliders, cuadros de diálogo) posee selector de archivos soporta la ruedita del ratón se actualiza desde hace mucho tiempo Introducción 40

Lineamientos de un programa gráfico • Creación de la ventana de aplicación • Creación

Lineamientos de un programa gráfico • 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 • Open. GL: • 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 Introducción 41

Lineamientos de un programa gráfico Crear ventanas Definir callbacks Inicializar Open. GL Reaccionar a

Lineamientos de un programa gráfico Crear ventanas Definir callbacks Inicializar Open. GL Reaccionar a eventos Actualizar variables (animación) Redibujar Loop de Eventos Introducción 42

Llamada Típica a Funciones del Open. GL gl. Alguna. Funcion[234][dfis][v](. . . ); Parámetros

Llamada Típica a Funciones del Open. GL gl. Alguna. Funcion[234][dfis][v](. . . ); Parámetros Siempre Nombre Tipo Puntero Dimensión Ejemplos: gl. Begin(GL_LINE_LOOP); gl. Vertex 3 d(x, y, z); . . . gl. End(); gl. Lightfv(GL_LIGHT 0, GL_POSITION, lpos); Introducción 43

Secuencia típica de dibujo en Open. GL Avisar como se dibujan las cosas Dibujar

Secuencia típica de dibujo en Open. GL Avisar como se dibujan las cosas Dibujar algunas cosas Introducción 44

Rendering. Pipeline(simplificada) de Open. GL Introducción 45

Rendering. Pipeline(simplificada) de Open. GL Introducción 45

Fin Introducción 46

Fin Introducción 46