Prof. Ing.
Jesws Rodriguez Salas
INTRODUCCIÓN:
-Computación gráfica
-Historia
-Aplicaciones
-Jerarquía de Software gráfico.
Uso de API’s gráficas.
Computación
Gráfica
Es el campo de la informática visual,
lo cual comprende el uso de
computadoras con el fin de generar
imágenes visuales y espaciales del
mundo real.
Es una tecnología para representar
información en forma gráfica
Comunicación
Información Usuario
Procesamiento de la información
Computación Gráfica
Geometría Computación Comunicación
Gráfica
VISIÓN COMPUTACIONAL
La visión computacional llamada también visión artificial, trata de emular los procesos de visión humana, estos
son:
Captura de la imagen del mundo real convirtiéndola en una imagen digital
Cámaras digitales
Videocámaras
Escáner
satélite, entre otros.
Interpretación de la imagen a través de sus características
Procesos de segmentación (división de imágenes en objetos)
Descripción (obtención de características de los tipos de objetos)
Reconocimiento (identificación de los objetos).
Utilización de la información de la imagen digital.
En los procesos de la visión computacional intervienen varias disciplinas como la óptica, las matemáticas, la
física, la ingeniería electrónica, la informática y la inteligencia artificial.
Algunos de los campos de acción de la visión computacional son:
Análisis de Imágenes
Reconocimiento de formas
Objetos y patrones
Reconstrucción 3D
Interpretación de imágenes aéreas y de satélite, etc.
HISTORIA 1961
Steve Russell crea Spacewars,
el primer juego de vídeo por
Ayer... computadora para la PDP-1.
1963
Iván Sutherland es considerado
el fundador de la graficación por
computadora.
1950
Ben Laposky crea las primeras
imágenes gráficas en un
1975
osciloscopio, (permite registrar Martín Newell: Diseño de una
oscilaciones de ondas y las tetera usando Bezier
presenta en una pantalla)
HISTORIA 1987
IBM - Creó el VGA, Video Graphics
Ayer... Array 1989: Video Electronics
Standards Association (VESA)
SVGA, Super VGA
1992
Silicon Graphics: Establece la
especificación de OpenGL.
1993 1995
“Toy Story”, primera película
Jaron Lanier - “DataGlove” , un completamente generada por
guante para realidad virtual. computadora. NVIDIA Corporation
GeForce 256, GeForce 3 (2001).
Hoy: Ciencia, Tecnología e Industria
Introducción
APLICACIÓN
AVANCES CIENTÍFICOS
CINE Y ENTRETENIMIENTO DISEÑO ASISTIDO POR COMPUTADORA
DISPOSITIVOS DE VISUALIZACIÓN
Computación Gráfica o Síntesis
de imagen por computador :
Escena 3D Representación 2D
Computer Image
Procesamiento de Imágenes:
Imagen 2D Imagen 2D
Vision por computador:
Imagen 2D Información de
una realidad 3D
10
DISPOSITIVOS DE VISUALIZACIÓN
Unrealistic – Polygonal rendering
Image
Synthesis Ray tracing
Realistic
Computer Graphics Radiosity
or Image Synthesis
Geometric Solid Modeling
Modeling
Geometric Design
1D-based Alg.
Volume
Visualization
2D-based Alg.
Surface
rendering
3D-based Alg.
Direct volume
rendering 11
COMPONENTES DE UN SISTEMA
GRÁFICO
MODELO Y SUPERFICIE
SUPERFICIE
TEXTURA
RENDERING
Es la transformación de una escena 3D en una imagen
• Escena:
• Modelo:
• Ensambles de Primitivas
• Superficies: Color, Textura, Normales
• Fondo o Ambiente
• Luces:Modelos de Iluminación
• Cámara: Proyección
• Animación: Sucesión de escenas
• Imagen:
• Puede realizarse en varios modelos
• Vector: Secuencia de comandos
• Raster: framebuffer (array de pixels) (W x H x C)
RENDERING
Es la transformación de una escena 3D en una imagen
TRANSFORMACIONES
• Escena:
• Modelo:
• Ensambles de Primitivas
• Superficies: Color, Textura, Normales
• Fondo o Ambiente
• Luces:Modelos de Iluminación
• Cámara: Proyección
• Animación: Sucesión de escenas
• Imagen:
• Puede realizarse en varios modelos
• Vector: Secuencia de comandos
• Raster: framebuffer (array de pixels) (W x H x C)
¿QUÉ ES EL RENDERING
DE UNA ESCNA 3D?
Introducción a la Computación Gráfica 18
Introducción a la Computación Gráfica 19
Introducción a la Computación Gráfica 20
Introducción a la Computación Gráfica 21
Introducción a la Computación Gráfica 22
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
23
Introducción
SISTEMAS DE COORDENADAS
Animación
25
Introducción
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
26
Introducción
Rendering Pipeline
27
Introducción
USO DE API’s
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….
28
Introducción
API´s Gráficas
• 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.
GUI´s gratuitas con ventana OpenGL
• 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)
29
Introducción
OpenGL, ¿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
OpenGL tiene copyright de Silicon Graphics
Pero hay implementaciones realmente libres (Mesa)
30
Introducción
Funcionamiento de OpenGL
• 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)
OpenGL Utility Library (GLUT)
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 Introducción
31
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
• 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
32
Introducción
Lineamientos de un programa gráfico
Crear ventanas
Definir callbacks
Inicializar OpenGL
Reaccionar a eventos
Actualizar variables
(animación)
Redibujar
Loop de Eventos
33
Introducción
Llamada Típica a Funciones del OpenGL
glAlgunaFuncion[234][dfis][v](.....);
Parámetros
Siempre
Nombre Tipo Puntero
Dimensión
Ejemplos:
glBegin(GL_LINE_LOOP);
glVertex3d(x,y,z);
...........
glEnd();
glLightfv(GL_LIGHT0,GL_POSITION,lpos);
34
Introducción
Secuencia típica de dibujo en OpenGL
Avisar como se dibujan las cosas
Dibujar algunas cosas
Avisar como se dibujan las cosas
Dibujar algunas cosas
35
Introducción
Rendering Pipeline (simplificada) de OpenGL
36
Introducción