expo graficacion

Upload: rulz88

Post on 10-Apr-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 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