Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Computación Gráficas, Apuntes de Computación Gráfica

Gráficas por computadora gráficos por computadora en OpenGL

Tipo: Apuntes

2018/2019

Subido el 30/10/2019

usui-takumi
usui-takumi 🇲🇽

5

(1)

2 documentos

1 / 24

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
Historia de la Computación Grafica
1946 -> ENIAC Primera computadora de propósito general
1950 -> CRT, tubo de rayos catódicos (Whirlwind) y lápiz óptico (SAGE defensa espacial)
1952 -> OXO, Uno de los primeros videojuegos tesis doctoral de Alexander Sandy Douglas
1961 -> Spacewar, Primer programa interactivo de naves espaciales
1963 -> Sketchpad, Manipulación directa de objetos gráficos CAD por Ivan Sutherland
1966 -> The Sword of Damocles primer Sistema de Realidad Virtual y GUI
1968 -> CRT mejorado, integración de memoria
1970 -> PostScritp y algoritmos nuevos
1971 -> Atari, año del microprocesador y aparece Altair 8800 microcomputadora
1972 -> Pong, Primer juego de arcadia
1980 -> SIGGRAPH (Special Interested Group on Graphics). Loren Carpenter video “Vol libre”.
1981 -> Loren Carpenter ingresa a LucasFilm, y crea la herramienta REYES
1986 -> PIXAR, y desarrollo de RenderMan
1992 -> OpenGL, Mark Segal y Kurt Akeley crean la documentación para OpenGL 1.0
1993 -> Aparece el videojuego 3D Doom
1995 -> Toy Story. Play Station y Direct 3D
1997 -> Primer acelerador gráfico, 3Dfx Voodoo 3D
1999 -> Aparición del primer GPU (Graphics Processing Unit). Videojuego Final Fantasy VIII.
2001 -> Película Final Fantasy: The Spirits Within
2003 -> Shaders. “Física” en aplicaciones
2005 -> Cómputo en paralelo (GPU´s)
2008 -> GPGPU, se utilizan para realizar cálculos complejos y liberar aún más el procesador central
2009 -> Integración GPU y CPU
2010 -> Interfaces de usuario “naturales”
2012 -> Realidad Aumentada
2014 -> Physically Based Rendering
2015 -> Dispositivos para Realidad Virtual
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Vista previa parcial del texto

¡Descarga Computación Gráficas y más Apuntes en PDF de Computación Gráfica solo en Docsity!

Historia de la Computación Grafica

1946 -> ENIAC Primera computadora de propósito general 1950 -> CRT , tubo de rayos catódicos (Whirlwind) y lápiz óptico (SAGE defensa espacial) 1952 -> OXO , Uno de los primeros videojuegos tesis doctoral de Alexander Sandy Douglas 1961 -> Spacewar , Primer programa interactivo de naves espaciales 1963 -> Sketchpad , Manipulación directa de objetos gráficos CAD por Ivan Sutherland 1966 -> The Sword of Damocles primer Sistema de Realidad Virtual y GUI 1968 -> CRT mejorado , integración de memoria 1970 -> PostScritp y algoritmos nuevos 1971 -> Atari , año del microprocesador y aparece Altair 8800 microcomputadora 1972 -> Pong , Primer juego de arcadia 1980 -> SIGGRAPH (Special Interested Group on Graphics). Loren Carpenter video “Vol libre”. 1981 -> Loren Carpenter ingresa a LucasFilm , y crea la herramienta REYES 1986 -> PIXAR , y desarrollo de RenderMan 1992 -> OpenGL , Mark Segal y Kurt Akeley crean la documentación para OpenGL 1. 1993 -> Aparece el videojuego 3D Doom 1995 -> Toy Story. Play Station y Direct 3D 1997 -> Primer acelerador gráfico, 3Dfx Voodoo 3D 1999 -> Aparición del primer GPU (Graphics Processing Unit). Videojuego Final Fantasy VIII. 2001 -> Película Final Fantasy: The Spirits Within 2003 -> Shaders. “Física” en aplicaciones 2005 -> Cómputo en paralelo (GPU´s) 2008 -> GPGPU , se utilizan para realizar cálculos complejos y liberar aún más el procesador central 2009 -> Integración GPU y CPU 2010 -> Interfaces de usuario “naturales” 2012 -> Realidad Aumentada 2014 -> Physically Based Rendering 2015 -> Dispositivos para Realidad Virtual

Hardware Gráfico

Monitor CRT

El monitor es el encargado de traducir y mostrar las imágenes en forma de señales que provienen de la tarjeta gráfica. Su interior es similar al de un televisor convencional. La mayoría del espacio está ocupado por un tubo de rayos catódicos en el que se sitúa un cañón de electrones. Este cañón dispara constantemente un haz de electrones contra la pantalla, que está recubierta de fósforo (material que se ilumina al entrar en contacto con los electrones). En los monitores en color, cada punto o píxel de la pantalla está compuesto por tres pequeños puntos de fósforo: rojo (magenta), cian (azul) y verde. Iluminando estos puntos con diferentes intensidades, puede obtenerse cualquier color.

Ésta es la forma de mostrar un punto en la pantalla, pero ¿cómo se consigue rellenar toda la pantalla de puntos? La respuesta es fácil: el cañón de electrones activa el primer punto de la esquina superior izquierda y, rápidamente, activa los siguientes puntos de la primera línea horizontal. Después sigue pintando y rellenando las demás líneas de la pantalla hasta llegar a la última y vuelve a comenzar el proceso.

En específico los monitores CRT están formados por:

 Cañón Emisor de Electrones.  Láminas de Deflexión Vertical y Horizontal  Máscara de Sombra.  Capa de Fósforo Ventajas: Excelente calidad de imagen Económico. Tecnología robusta. Resolución de alta calidad.

Desventajas: Presenta parpadeo por el refrescado de imagen. Consumo de energía. Generación de calor. Generación de radiaciones eléctricas y magnéticas. Alto peso y tamaño

La profundidad de color se refiere al número de bits necesarios para codificar y guardar la información de color de cada píxel en una imagen. Un bit es una posición de memoria que puede tener el valor 0 ó 1. Cuanto mayor sea la profundidad de color en bits, la imagen dispondrá de una paleta de colores más amplia.

El número de bits que tiene cada píxel se llama profundidad de color.

 1 bit por pixel: 21 = 2 colores (blanco y negro).  4 bits por pixel: 24 = 16 colores (VGA).  8 bits por pixel: 28 = 256 colores (Super VGA).  24 bits por píxel: 224 = 16,7 millones de colores (color verdadero 256 rojos x 256 verdes x 256 azules)

Color real o True Color

Para la profundidad de color de 24 bits por pixel, se habla de color verdadero debido a que la policromía se acerca a lo que el ojo humano puede encontrar en el mundo real, y a que dicho ojo humano se torna incapaz de diferenciar entre un tono y otro, si la diferencia se mantiene en un cierto rango mínimo. En la profundidad de color de 24 bits por pixel, se dedica un octeto entero a representar la intensidad luminosa de cada uno de los tres tonos primarios de rojo, verde y azul, lo cual permite que cada pixel pueda tomar 224 = 256x256x256 = 16.777.216 colores distintos.

Cuando se utilizan 32 bits para representar un color se agrega al esquema de 256 valores para cada tono primario un cuarto canal denominado alfa que representa la transparencia. Este valor se utiliza cuando se deben superponer dos imágenes.

Software Gráfico

Paquetes de propósito específico

 Diseñados para los no programadores, se enfocan en generar imágenes, gráficos o diagramas.  Se basa en conjunto de menús para poder interactuar con scripts, ejemplos: Paint, 3DS Max, CAD

Paquetes de programación general

 Proporciona una colección de funciones gráficas que se pueden implementar dentro de los lenguajes de programación, tales como C, C++, FORTRAN, JAVA.  Sus funciones básicas incluyen el manipulado de imágenes, color, selección de vistas y transformaciones.  Ejemplos: GL (Graphics Library), OpenGL, VRML (Virtual-Reality Modelling Language), Java 2D y Java 3D.

OpenGL

 Open Graphics Library: API multiplataforma.  Desarrollada en 1992 como un proyecto alterno de Silicon Graphics partiendo de IrisGL y con la finalidad de que fuera open Source.  Se ha utilizado para proyectos en las ramas de visualización, videojuegos, educativos y científicos.  Diseñado inicialmente para salida de video por lo que solo cuenta con funciones de dibujo.  Tampoco incluye manejo de ventanas, multimedia, manejo de interfaces o captura de pantalla.  Esto le permite ser independiente del Sistema Operativo.

Microsoft DirectX

 La competencia directa de OpenGL  Módulo de la API DirectX de Microsoft, por lo cual es exclusivo para máquinas con Sistema Operativo Windows.  Inicialmente DirectX manejaba los gráficos 2d y 3d con diferentes módulos, pero desde la versión 8 ya se encarga Direct3D.  La ventaja que tiene Direct3D es que al ser parte de DirectX no se requiere buscar librerías adicionales para manejo de multimedia, interfaces, red y demás módulos necesarios.  Su desventaja es que al dejar de recibir soporte algún módulo de DirectX, los desarrolladores de hardware y software deben de buscar la forma de hacer “port” a las nuevas especificaciones.

Shader

En el año 2000 surgió la tarjeta gráfica Geforce Serie 2, la cual fue la primer tarjeta en permitir que los efectos de iluminación y sombreados fueran procesados por el GPU en lugar del CPU, lo cual dio paso a que en el año 2001 surgieran los modelos de sombreado, los cuales son lenguajes de programación que se ligan a una API de dibujo gráfico.

Los tres principales modelos de sombreado son:

 GLSL: Ligada a OpenGL  HLSL: Microsoft ligada a DirectX  CG: Nvidia, compatible con OpenGL y con Nvidia.

Se deben de tomar en cuenta la tarjeta gráfica (ATI o Nvidia), que modelo de sombreado es soportado, lenguaje usado y que versión de modelo se utiliza.

Tipos de shaders:

 Vertex Shader  Fragment Shader  Geometry Shader  Pixel Shader

Proyecciones

Las proyecciones se encargan de realizar el “recorte” y de convertir la información de la escena a dos dimensiones. Las proyecciones son la analogía al uso de una cámara. Se tiene una posición, una ubicación a la cual se apunta y se agrega un factor de inclinación. Estas propiedades influyen en la forma en que se ve la escena en nuestro dispositivo de despliegue.

Nos centraremos en proyecciones planares. En esta se define una dirección de visión que va desde el observador hasta el objeto en cuestión  Tenemos dos tipos de proyecciones  OrtogonalPerspectiva Sin embargo, no importando el tipo de proyección con la cual se trabaje, todas tienen los siguientes elementos:  Posición del observador , o también llamado “foco” o “punto de proyección”, es el lugar matemático en donde se encontrará el observador. También es el lugar en donde coinciden las líneas de proyección.  Líneas de proyección , son líneas rectas que van desde la información de la escena (vértices) hasta el punto de proyección.  Plano de Proyección , es un plano que se encuentra entre el punto de proyección y la información de la escena. Las líneas de proyección que pasen por el plano, representarán a la información que será visualizada en el dispositivo de despliegue en dos dimensiones.  Volumen de proyección , es el espacio dentro de nuestro escenario que podrá ser visualizado.

Contamos con un mundo 3D que estamos observando desde una determinada posición. Podemos pensar en el observador como una cámara filmando nuestro mundo virtual. Ese punto es el centro de proyección. Evidentemente el mundo es tridimensional pero su proyección en un plano (plano de proyección) es bidimensional. Este plano es nuestro frame buffer antes de dibujar o bien la pantalla del monitor.

Proyección Ortogonal

Para el caso de la proyección ortogonal la analogía de la cámara no es tan evidente, porque en realidad estamos definiendo una caja, o volumen de visualización alrededor del ojo de la cámara (esto es, podemos ver detrás) Para hacer esto, llamamos a:

glOrtho(left, right, bottom, top, near, far)

Características

 El centro de proyección se encuentra en el infinito (COP).  Las líneas de proyección son perpendiculares al plano de proyección y paralelas entre sí.  No preserva las dimensiones reales de los objetos.  No se toma en cuenta la profundidad

Este tipo de proyecciones no preserva las dimensiones reales de los objetos según la distancia hasta ellos. Es decir si nos acercamos o alejamos de ellos no se producen cambios de tamaño, con lo cual el realismo no es total.

Existen dos formas de crear estas perspectivas:

glFrustum( left, right, bottom, top, near, far);

Una manera más simple de definir la proyección perspectiva es mediante la función

gluPerspective (alpha, aspect, near, far)

Donde:

  • alpha corresponde al ángulo de apertura del campo de visión en la dirección de y.
  • near la distancia mínima a la que deben estar los objetos para salir en la foto.
  • far la distancia máxima (ambas siempre positivas).
  • aspect define la relación entre el ángulo de visión horizontal y vertical (es la anchura / altura) típicamente debería ser de entre 30 y 35 grados para obtener resultados realistas.  NOTA : La relación entre far / near debería ser lo más cercana posible a 1.

Cámara Sintética

La Cámara son nuestros ojos virtuales. Todo lo que ella vea será proyectado, discretizado y finalmente mostrado en nuestra ventana. Podemos imaginar que de la cámara emana el volumen de visualización de forma que se traslada con ella. Los parámetros a definir en cuanto a la cámara son:

 Posición XYZ  Orientación  Dirección “UP”

Tenemos que definir no sólo la posición de la cámara (o donde está), sino también hacia dónde mira y con qué orientación (no es lo mismo mirar con la cara torcida que recta… aunque veamos lo mismo). Para hacer esto, basta con modificar la matriz ModelView para mover toda la escena de manera que parezca que hemos movido la cámara.

La librería GLU nos facilita esto con la función:

void gluLookAt( posX, posY, posZ, viewX, viewY, viewZ, up_X, up_Y, up_Z);

Donde:

pos: corresponde a la posición de la cámara,  view: corresponde al punto hacia donde mira la cámara  up: es un vector que define la orientación de la cámara.

1100 0100 0101

1000 0000 0001

1010 0010 0011

Los nueve códigos de región para la identificación de la posición de un punto extremo de una línea, relativos a los límites de la ventana de recorte.

  1. A los valores binarios de la línea aplicarle la operación OR

Si OR = 0, se dibuja la línea y termina

Si OR ≠0, pasa al paso 5

  1. Se aplica la operación AND

Si AND = 0, la línea se recorta y de ser posible se evalúa si los puntos de recorte de la línea están dentro de la ventana. Si AND ≠0, la línea se descarta y termina.

  1. Obtener el punto de recorte, si es posible.

Ejemplos:

Tabla de Verdad X Y F 0 0 0 0 1 1 1 0 1 1 1 1

Tabla de Verdad X Y F 0 0 0 0 1 0 1 0 0 1 1 1

Y  Yinicial  m  X  Xinicial 

X  Xw minlimite izq

X  Xw maxlimite der

m

YfinalYinicial XfinalXinicial XXinicialYYinicial m

Algoritmo de Liang Barsky

Se considera para 2D y se puede aplicar a 3D, se necesita conocer los valores que delimitan nuestra ventana de recorte ( 𝑿𝒎𝒊𝒏, 𝑿𝒎𝒂𝒙, 𝒀𝒎𝒊𝒏, 𝒀𝒎𝒂𝒙 ). Se conocen también los puntos extremos del segmento de la línea que se quiere analizar.

Se basa en la ecuación paramétrica de la recta 𝑃 = 𝑃 0 + 𝑢(𝑃𝑓 − 𝑃𝑖) de dicha ecuación conocemos los puntos final e inicial y la incógnita es “u”. La restricción que tenemos al calcular “u” es que solamente podemos aplicar el algoritmo si el valor de “u” va de 0 a 1.

Se debe hacer el cálculo de la intersección de la recta con cada uno de los 4 límites y se evalúa si el punto de recorte está dentro de la ventana de recorte.

Ecuaciones implicadas:

Despejando u para la primera ecuación

Este procedimiento se realiza para todas las ecuaciones Si u cumple la condición comprobar que los limites estén dentro de la ventana

Ejemplos:

x min  xiuxfxix max  xiuxfxi

y min  yi  u  yf  yi 

y max  yi  u  yf  yi 

u min  x min xi xfxi ,^ para u^ ^ 0, 1

[

𝑉 1 𝑥 𝑉 2 𝑥 … 𝑉 1 𝑦 𝑉 2 𝑦 … 𝑉 1 𝑧 𝑉 3 𝑧 …

𝑉𝑛𝑥 𝑉𝑛𝑦 𝑉𝑛𝑧

]

Transformaciones Geométricas

Son reglas de correspondencia que se aplican a los objetos para modificar su geometría de acuerdo a las necesidades del escenario. Tiene matrices asociadas en 2D y 3D.

Las transformaciones son:

 Traslación  Escala  Rotación

Datos (# vértices)

1 vértice Más de 2 vértices

Escalado 2D

[

𝑉𝑥 𝑉𝑦 𝑉𝑧

]

3x1 (^3) xn

Modelos de Color

Hasta ahora hemos considerado el color como una simple tupla de tres números (R, G, B)... pero esto es únicamente un modelo de color concreto, y no el único.

¿Qué es el color? ¿Cuál es su naturaleza?

 Los objetos tienen color. El color es una propiedad de los objetos.

FALSO. Los objetos reflejan o absorben ciertas frecuencias

 La luz tiene color. El color es una propiedad de la luz.

FALSO. La luz es una radiación electromagnética en cierto rango de frecuencias

Según los expertos, el color es una sensación humana, derivada de la capacidad del ojo de captar los niveles de radiación en 3 frecuencias diferentes.

Formalmente, se puede decir que un color es la variedad de espectros (en principio, infinita) que dan lugar a la misma excitación de los conos y bastones del ojo humano.

 El color es fruto de una sensación humana, no de la naturaleza intrínseca de la luz.  Un modelo de color completo debería tener por lo menos tres dimensiones.

El significado diferente del color en la luz (espectro emitido) y en los objetos (espectro reflejado) da lugar a dos modos de ver el proceso de mezcla de colores: modelo aditivo y substractivo.

Modelo aditivo mezcla:

 Corresponde a los colores luz.  La mezcla de dos colores se obtiene sumando los espectros asociados a ambos colores.  Podemos seleccionar un # reducido de colores primarios y obtener los demás con ellos.  Por ejemplo, si tomamos como primarios rojo, verde y azul, los secundarios son amarillo, magenta y cian.

El espacio RGB tiene forma de cubo de lado 1. El punto (R=0, G=0, B=0) es el negro, y el (R=1, G=1,B=1) es el blanco. Surgen tres colores secundarios: cian, magenta y amarillo

El modelo CMY

En ciertas aplicaciones, como por ejemplo impresión de imágenes, se utiliza más el modelo CMY (o CMYK).

 CMY está basado en un modelo sustractivo de mezcla , con 3 colores primarios: C-cian, M- magenta, Y-amarillo.  La combinación sustractiva (tintas de color) de estos colores primarios produce todo el rango de colores representables en CMY.  En la práctica, la mezcla de C, M e Y no llega a producir negro, sino una especie de gris marengo.  El modelo CMYK soluciona el problema, añadiendo el negro como color primario.

Los modelos HLS y HSV

Los modelos HLS (o HSL) y HSV están pensados para ser fácilmente interpretables y legibles por un humano, usan términos más familiares cuando hablamos de color.

Luminosidad o intensidad de un color : cualidad de ser más claro o más oscuro.  Saturación : diferencia del color respecto a un gris con la misma intensidad. Cuanto más diferente, más saturado.  Matiz de un color : su ángulo dentro de la rueda cromática. También, se puede definir como la frecuencia dominante del espectro.

HSV consta de los componentes: H-matiz (hue), S-saturación, V-valor de intensidad.

HLS consta de : H-matiz, L-luminosidad, S-saturación.

Ambos son transformaciones no lineales del RGB. La definición de H es igual en ambos. La diferencia se encuentra en la forma de calcular la saturación , S, y la intensidad , V o L.

El espacio HSV se suele representar como un cono. O como un cilindro