Upload
rulz88
View
226
Download
0
Embed Size (px)
Citation preview
8/8/2019 Expo Graficacion
1/31
Graficacin por Computadora
Ing. Computacin
Rosa Isela Brena Luis
25/11/2010 1
8/8/2019 Expo Graficacion
2/31
Funciones OpenGL para Atributos de Rellenode reas
Atributos de los caracteres Funciones OpenGL para Atributos de Relleno
de caracteres
Suavizado Funciones OpenGL de Suavizado
Resumen de Funciones
Bibliografa
25/11/2010 2
8/8/2019 Expo Graficacion
3/31
En el paquete grfico OpenGL, se dispone desubrutinas de relleno de reas slo parapolgonos convexos.
Generamos visualizaciones de polgonos convexosrellenos siguiendo estos cuatro pasos:
(1) Definir un patrn de relleno
(2) Invocar la subrutina de relleno de polgonos
(3) Activar la caracterstica de OpenGL derelleno de polgonos
(4) Describir los polgonos que se van a rellenar
25/11/2010 3
8/8/2019 Expo Graficacion
4/31
Un patrn de relleno de polgonos se visualiza hasta eincluyendo las aristas del polgono. Por tanto, no hay lneaslmite alrededor de la regin de relleno a menos queaadamos stas especficamente a la representacin.
Adems de especificar un patrn de relleno para el interiorde un polgono, existen otras muchas opciones.Lnea opcin consiste en representar un polgono hueco, enel que no se aplica un color o patrn interior y slo segeneran las aristas.Un polgono hueco es equivalente a mostrar una primitiva
de polilnea cerrada.Otra opcin es mostrar los vrtices del polgono, sinrelleno interior ni aristas. Tambin, se pueden designaratributos diferentes para las caras anterior y posterior deun rea de relleno poligonal.
25/11/2010
8/8/2019 Expo Graficacion
5/31
De forma predeterminada, un polgono convexo se muestracomo una regin de color liso, utilizando la configuracinde color actual. Para rellenar un polgono con un patrn enOpenGL, utilizamos una mscara de 32 por 32 bits. Unvalor de 1 en la mscara indica que el pxel
correspondiente se ha de cambiar al color actual, y un 0deja el valor de dicha posicin del bfer de imagen sincambios. El patrn de relleno se especifica con bytes sinsigno utilizando el tipo de dato de OpenGL GLubyte ,como hicimos con la funcin glBitmat.
Definimos un patrn de bits con valores hexadecimalescomo, por ejemplo,
Glubyte fillPattern [ ] = { Oxff, 0x00, Oxff, 0x00, . . . };
25/11/2010 5
8/8/2019 Expo Graficacion
6/31
Una vez que hemos definido una mscara,podemos establecer sta como el patrn derelleno actual con la funcin:
glPolygonStippIe ( fillPattern );Ejemplo 0
25/11/2010 6
8/8/2019 Expo Graficacion
7/31
A continuacin, necesitamos habilitar lassubrutinas de relleno antes de especificar losvrtices de los polgonos que han de
rellenarse con el patrn actual. Esto lohacemos con la lnea:g l E n a b l e (GL_POLYGON_STIPPLE);
De forma similar, desactivamos el relleno con
patrones con la instruccin:g l D i s a b l e (GL_POLYGON_STIPPLE)
25/11/2010 7
8/8/2019 Expo Graficacion
8/31
Otro mtodo para rellenar polgonos consiste enutilizar patrones de textura.
Este mtodo puede producir patrones de relleno que
simulan la apariencia superficial de la madera,ladrillos, acero cepillado o algn otro material.Tambin, podemos obtener una coloracin porinterpolacin del interior de un polgono comohicimos con la primitiva de lneas. Para ello,asignamos colores diferentes a los vrtices delpolgono.
El relleno por interpolacin del interior de unpolgono se utiliza para producir visualizacionesrealistas de superficies sombreadas con variascondiciones de iluminacin.
25/11/2010 8
8/8/2019 Expo Graficacion
9/31
El siguiente ejemplo asigna el color azul, rojo o verde a cada uno de lostres vrtices de un tringulo. El relleno del polgono es una interpolacinlineal de los colores de sus vrtices.
EJEMPLO 1.exe
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 1.0, 0.0);
glShadeModel (GL_SMOOTH);glBegin (GL_TRIANGLES);glColor3f( 0, 0, 1 );glVertex2i (100, 100);glColor3f ( 1.0 , 0.0 , 0.0 );
glVertex2i(200, 100) ;glColor3f( 0.0 , 1.0 ,
.0 );glVertex2i(150, 200) ;
glEnd();glFlush();
25/11/2010 9
8/8/2019 Expo Graficacion
10/31
Tambin podemos elegir mostrar slo las aristas de los polgonos. Estoproduce una representacin alambica o hueca del polgono. O podramosmostrar un polgono dibujando nicamente un conjunto de puntos en lasposiciones de sus vrtices. Estas opciones se seleccionan con la funcin:
glPolygonMode ( f a c e , displayMode)
Utilizamos el argumento face para designar qu cara del polgonoqueremos mostrar slo como aristas o solo como vrtices. A esteargumento se le asigna
GLFRONT, GL_BACK o GL_FRONT_AND_BACK, para indicar la carafrontal, la cara trasera, o ambas, respectivamente. Despus, si sloqueremos que se muestren las aristas del polgono, asignaremos laconstante GL_LINE al argumento displayMode. Para dibujar slo lospuntos de los vrtices del polgono, asignaremos la constante GL_POINT
al argumento displayMode. Unatercera opcin es GL_FILL .
25/11/2010 10
8/8/2019 Expo Graficacion
11/31
Pero este es el modo de visualizacinpredeterminado, por lo que habitualmente sloinvocamos glPolygonMode cuando queremosestablecer como atributos para los polgonos las
aristas o los vrtices.Otra opcin consiste en visualizar un polgonotanto con un relleno interior como un color opatrn para sus aristas (o para sus vrtices)diferentes.Esto se realiza especificando el polgono dosveces: una con el argumento displayModeestablecido en GL_FILL y luego de nuevo condisplayMode definido como GL_LINE(GL_POINT).
25/11/2010 11
8/8/2019 Expo Graficacion
12/31
Por ejemplo, el siguiente fragmento de cdigo rellena el interiorde un polgono con un color verde, y despus se asigna a lasaristas un color rojo.
Ejemplo 2
Este es el Cdigo del Ejemplo anterior.glColor3f( 0.0, 1.0,0.0);cuadrado();/* Invocar la subrutina de generacin del polgono*/glColor3f( 1.0 , 0.0, 0.0);glPolygonMode(GL_FRONT, GL_LINE) ;cuadrado();/* Invocar la subrutina de generacin del polgono nuevo*/glEnd();glFlush();
25/11/2010 12
8/8/2019 Expo Graficacion
13/31
Estilos de rellenadode polgonos
25/11/2010 1
8/8/2019 Expo Graficacion
14/31
La apariencia de los caracteres mostrados se controla conatributos tales como la fuente, el tamao, el color y laorientacin. En muchos paquetes, los atributos se puedencambiar en cadenas de caracteres completas, que se puedenutilizar para propsitos especiales tales como dibujar ungrfico de datos.
La mayora de los dispositivos de salida tienen dos formas
distintas de mostrar un texto: Modo texto Modo grfico
En el modo texto se usa un generador de caracteresincorporado y se dibujan caracteres alfabticos, numricos,signos de puntuacin y algunos smbolos especiales (editores).
En el modo grfico se puede tener un conjunto ms rico deformas y los caracteres pueden ubicarse arbitrariamente en lapantalla.
25/11/2010 1
8/8/2019 Expo Graficacion
15/31
Hay disponible una gran cantidad de opciones posibles para lavisualizacin de texto. En primer lugar, se puede elegir:
La apariencia de los caracteres se controla mediante atributostales como font, tamao, color y orientacin.
El font es el estilo de diseo particular tal como Lucida Casual,
Courier, Monotype Corsiva, Impact...
Los caracteres de un font seleccionado pueden mostrarse condistintos estilos de subrayado (continuo, punteado, doble ), ennegrita, en itlica y tambin sombreados.
Tambin puede variarse el color de los distintos caracteres y
escribirse en distintos colores tales como rojo, verde, naranja,mostaza, azul, ...
Cuando se ha de visualizar una cadena de caracteres, se utiliza elcolor actual para cambiar los valores de los pxeles del bfer deimagen, que se corresponden con las formas de los caracteres ysus posiciones.
25/11/2010 15
8/8/2019 Expo Graficacion
16/31
Podramos ajustar el tamao del texto cambiando de escala lasdimensiones de conjunto (altura y anchura) de los caracteres o slo laaltura o la anchura. El tamao de los caracteres (altura) se especifica enlas impresoras y por los compositores en puntos
La distancia entre la linea inferior y la linea superior del cuerpo de uncarcter es la misma para lodos los caracteres de un tamao y una fuenteconcretas, pero el ancho del cuerpo puede variar. Las fuentes
proporcionalmente espaciadas asignan un ancho de cuerpo ms pequeo alos caracteres estrechos tales como /,/, / y / en comparacin concaracteres anchos como IV o M.
25/11/2010 16
8/8/2019 Expo Graficacion
17/31
Distintas direcciones para el texto
Valores de los atributos dealineamiento para cadenasverticales y horizontales.
25/11/2010 17
8/8/2019 Expo Graficacion
18/31
Para las fuentes de mapa de bits o de contorno, elestado de color actual determina el color devisualizacin.
Por lo general, la designacin de la fuente determina elespaciado y el tamao de los caracteres, tal como
GLUT_BiTMAT_9__BY_I5 yGLUT_STROKB:_MONO_ROMAN.
Pero tambin podemos establecer el ancho de lalnea y el tipo de lnea de las fuentes de contorno.Especificamos el ancho de una lnea con la funcinglLineWidch, y seleccionamos un tipo de lnea con la
funcin glLineStipple . Las fuentes de impacto de GLUT se visualizarn
entonces utilizando los valores actuales que hayamosespecificado para los atributos de ancho de lnea y tipode lnea.
25/11/2010 18
8/8/2019 Expo Graficacion
19/31
25/11/2010 19
Las primitivas construidas con los
algoritmos raster tienen una
apariencia de escalera, debido a la
discretizacin en pixeles
8/8/2019 Expo Graficacion
20/31
25/11/2010 20
Mayor resolucin de las pantallas existe un
lmite para que el Frame Buffer mantenga su
refresco a 30 Hz
Pixeles ms pequeos: existe un lmite en laprecisin del haz de electrones
8/8/2019 Expo Graficacion
21/31
25/11/2010 21
8/8/2019 Expo Graficacion
22/31
Consiste en incrementar virtualmente la malla de pixeles, engaando aBresenham.
Una vez calculada la recta para los subpixeles, determinamos el color delpixel real.
Cada pixel representa entonces un rea finita de la pantalla, y no un
punto infinitesimal. Para dibujar una recta, contamos el nmero de subpixeles que estn
sobre la lnea.
La intensidad del pixel final ser proporcional al contador anterior Para mscaras 3x3 tendremos 3 posibles intensidades.
25/11/2010 22
8/8/2019 Expo Graficacion
23/31
Otra versin de super-sampling diferente consiste enconsiderar que las lneas tienen un grosor de 1 pixel(son en realidad un rectngulo).
Lo que hacemos entonces es contar los subpixeles que
caen dentro del rectngulo Para mscaras 3x3 tendramos intensidades diferentes Se requiere ms clculo que la versin anterior, pero el
resultado es ms exacto
25/11/2010 23
8/8/2019 Expo Graficacion
24/31
La intensidad del pixel viene dada por el rea deinterseccin entre cada pixel y el objeto que se va adibujar
Para estimar el rea sera muy costoso evaluar laintegral
Lo que hacemos es testear una malla de puntosinteriores al pixel y calcular cuntos caen dentro delrectngulo (mtodo de integracin de Montecarlo)
Si el fondo tambin tiene color, promediamos entreambos como antes
25/11/2010 2
8/8/2019 Expo Graficacion
25/31
25/11/2010 25
Las lneas dentadas (a), dibujadas en un sistema Mcrln
2(10, se suavizan (b) con una tcnica desuavizado llamada ajuste de fase de los pxeles. Esta tcnica incrementa el nmero de puntosque puede tratar el sistema de
por 5
a 30
2 por 2304. [Cortesa de Peritek Corp.)
8/8/2019 Expo Graficacion
26/31
Cuando el aliasing se produce en un contorno que separa dos zonas decolor diferente (aristas de un polgono relleno), aliasing de contornos
La solucin consiste en incorporar las tcnicas anteriores a losalgoritmos de scan-line
Area-sampling: Segn el rea de polgono que caiga
dentro de cada pixel de la frontera, determinamos el colorfinal
Super-sampling: Aadimos ms scan-lines en la imagen virtualque le pasamos al algoritmo de relleno decidimos el color de lospixeles frontera en funcin de dnde acabe cada scan-line
25/11/2010 26
8/8/2019 Expo Graficacion
27/31
25/11/2010 27
8/8/2019 Expo Graficacion
28/31
25/11/2010 28
8/8/2019 Expo Graficacion
29/31
25/11/2010 29
8/8/2019 Expo Graficacion
30/31
25/11/2010 0
8/8/2019 Expo Graficacion
31/31
Graficacin por Computadora con OpenGLDONALD HEARN M. PAULINE BAKER
25/11/2010 1