dibujar en 3d puntos l neas y pol gonos n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Dibujar en 3D: puntos, líneas y polígonos. PowerPoint Presentation
Download Presentation
Dibujar en 3D: puntos, líneas y polígonos.

Loading in 2 Seconds...

play fullscreen
1 / 34

Dibujar en 3D: puntos, líneas y polígonos. - PowerPoint PPT Presentation


  • 200 Views
  • Uploaded on

Dibujar en 3D: puntos, líneas y polígonos. Informática gráfica Ingeniería Informática Antonio Lillo Sanz Carlos Muñoz Martín Javier Holguera Blanco. Facultad de Ciencias - Departamento de Informática y Automática Universidad de Salamanca. 2 de Mayo de 2007. Índice general. Introducción

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Dibujar en 3D: puntos, líneas y polígonos.' - jihan


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
dibujar en 3d puntos l neas y pol gonos

Dibujar en 3D: puntos, líneas y polígonos.

Informática gráfica

Ingeniería Informática

Antonio Lillo Sanz

Carlos Muñoz Martín

Javier Holguera Blanco

Facultad de Ciencias - Departamento de Informática y Automática

Universidad de Salamanca

2 de Mayo de 2007

ndice general
Índice general

Introducción

Puntos

Dibujando líneas en 3D

Polígonos

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

slide3

Introducción

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

introducci n
Introducción
  • OpenGL provee de acceso al hardware gráfico
  • Librería de renderizado a bajo nivel con amplio soporte hardware
  • Basada en el uso de primitivas
    • Se construyen figuras complejas a partir de ellas
  • Puntos, líneas y polígonos, elementos básicos

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

sistema de coordenadas i
Sistema de coordenadas (I)
  • Se debe especificar la relación coordenadas / pixels físicos de la pantalla
    • Definición de la clipping area

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

sistema de coordenadas ii
Sistema de coordenadas (II)
  • Sistema de coordenadas 3D necesita una tercera componente
    • Eje Z perpendicular a los ejes X e Y
  • glLoadIdentity para reiniciar los sistemas de coordenadas a la unidad
  • GLOrtho para establecer límites de los ejes de coordenadas
  • glViewPort para definir la vista

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

slide7

Puntos

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

puntos i
Puntos (I)
  • Elementos de dibujado esenciales
  • Se componen de varias coordenadas
    • 3 definidas por el usuario
    • una cuarta interna (w)
  • Se especifican con glVertex3f(x,y,z)
    • Un punto en 3D es un vertex
  • Se dibujan entre las sentencias glBegin(GL_POINTS) y glEnd()
    • Indica que los vértices son puntos

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

puntos ii
Puntos (II)
  • Se puede modificar el tamaño del punto
    • glPointSize(GLfloat tamaño)
    • Se obtiene un punto en forma de cuadrado con cara igual al argumento
  • Ejemplo
    • // Recuperar el tamaño actual del punto
    • GLfloat antiguoTamaño;
    • glGetFloatv(GL_POINT_SIZE, &antiguoTamaño); 
    • // Si el tamaño del punto es pequeño, se agranda (6.0), de lo contrario se mantiene
    • If(antiguoTamaño < 1.0) glPointSize(6.0);
    • else glPointSize(1.0);

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

puntos iii
Puntos (III)
  • Ejemplo: Círculo compuesto por puntos
    • glBegin(GL_POINTS);
    • for(ANG = 0.0f; ANG < 2 * GL_PI; ANG += paso)
    • {
    • x = radio * fsin(ANG);
    • y = radio * fcos(ANG);
    • glVertex2f(x,y);
    • }
    • glEnd();
puntos iv
Puntos (IV)
  • Ejemplos – Puntos aleatorios en un plano
    • void CALLBACK RenderScene(void)
    • {
    • // Limpiamos la ventana con un color de fondo.
    • glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    • // Guardamos el estado de la matriz y hacemos la rotación.
    • glPushMatrix();
    • glRotatef(xRot, 1.0f, 0.0f, 0.0f);
    • glRotatef(yRot, 0.0f, 1.0f, 0.0f);
    • /**********ZONA DE DIBUJO************/
    • //Dibujamos 50 puntos aleatorios en la pantalla.
    • //Los puntos están todos en el mismo plano (z=0)
    • glBegin(GL_POINTS);
    • for(int i=0;i<50;i++)
    • glVertex2f(puntos[i][0],puntos[i][1]);
    • glEnd();
    • // Recuperar transformaciones
    • glPopMatrix();
    • // Eliminar comandos de dibujado
    • glFlush();
    • }
puntos v
Puntos (V)
  • Ejemplos – Puntos aleatorios en un plano
    • Vista del plano que forman los puntos
slide13

Dibujando líneas en 3D

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

l neas en 3d i
Líneas en 3D (I)
  • Primitiva: GL_LINES
    • Línea definida como trazo entre dos vértices
    • Puede agrupar tantos pares de vértices como se desee
    • Si el número de vértices es impar
      • Desestimación del último vértice
    • Ejemplo:

glBegin(GL_LINES);

glVertex3f(0.0f, 0.0f, 0.0f);

glVertex3f(20.0f, 20.0f, 20.0f);

glEnd();

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

l neas en 3d ii
Líneas en 3D (II)
  • Series de líneas y trazos (I)
    • Primitivas:
      • GL_LINE_STRIP
      • GL_LINE_LOOP
    • Permiten especificar una lista de vértices a través de los cuales dibujar una línea continua
    • Basadas en GL_LINES

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

l neas en 3d iii

V2

V1

V0

Líneas en 3D (III)
  • Series de líneas y trazos (II)
    • GL_LINE_STRIP
      • Dibuja una línea de un vértice al siguiente en la lista
      • Un vértice se convierte en inicio y fin de una línea
        • Excepto el primer vértice (sólo inicio) y el último vértice (sólo fin)
      • Ejemplo:

glBegin(GL_LINE_STRIP);

glVertex3f(0.0f, 0.0f, 0.0f); // V0

glVertex3f(40.0f, 40.0f, 0.0f); // V1

glVertex3f(40.0f, 90.0f, 0.0f); // V2

glEnd();

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

l neas en 3d iv

V2

V1

V0

Líneas en 3D (IV)
  • Series de líneas y trazos (III)
    • GL_LINE_LOOP
      • Dibuja una línea de un vértice al siguiente en la lista
      • Un vértice se convierte en inicio y fin de una línea
        • Incluidos el primero y el último
      • Figura de líneas cerrada
      • Ejemplo:

glBegin(GL_LINE_LOOP);

glVertex3f(0.0f, 0.0f, 0.0f); // V0

glVertex3f(40.0f, 40.0f, 0.0f); // V1

glVertex3f(40.0f, 90.0f, 0.0f); // V2

glEnd();

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

l neas en 3d v
Líneas en 3D (V)
  • Aproximación de curvas con líneas rectas (I)
    • Alternativa a la construcción de curvas con puntos
      • Menos tedioso
      • Más sencillo e intuitivo
    • Utilización de la primitiva GL_LINE_STRIP
      • Puntos más próximos  Curva mejor definida
      • No es necesario especificar todos los puntos

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

l neas en 3d vi
Líneas en 3D (VI)
  • Aproximación de curvas con líneas rectas (II)
    • Ejemplo:

//Llamar una única vez para todos los puntos

glBegin(GL_LINE_STRIP);

z = -50.0f;

for(angulo=0.0f; angulo<=(2.0f*GL_PI)*3.0f; angulo+=0.1f)

{

x=50.0f*sin(angulo);

y=50.0f*cos(angulo);

//Especificar el punto y mover el valor de z

//ligeramente hacia arriba

glVertex3f(x, y, z);

z+=0.5f;

}

glEnd();

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

l neas en 3d vii
Líneas en 3D (VII)
  • Ancho de líneas
    • Método para cambiar el ancho o grosor de dibujo de líneas
      • void glLineWidth(GLfloat width);
    • No todos los anchos son válidos
    • Ejemplo:

// Llamada para redibujar una escena

void RenderScene(void)

{

GLfloat y;

GLfloat fTam[2];

GLfloat fTamAct;

//Almacenar el valor menor y mayor para ancho

glGetFloatv(GL_LINE_WIDTH_RANGE,fTam);

fTamAct=fTam[0];

// Subir 20 unidades en el eje Y cada línea

for(y=-90.0f; y<90.0f; y+=20.0f)

{

// Establecer el ancho de línea

glLineWidth(fTamAct);

// Dibujar la línea

glBegin(GL_LINES);

glVertex2f(-80.0f, y);

glVertex2f(80.0f, y);

glEnd();

// Se incrementa el ancho

fTamAct += 1.0f;

}

}

l neas en 3d viii
Líneas en 3D (VIII)
  • Líneas punteadas (I)
    • Dibujado de líneas basadas en un patrón punteado o rayado
      • Activación con glEnable(GL_LINE_STIPPLE);
      • Establecer el patrón
        • void glLineStipple(GLint factor, GLushort patron);
        • El patrón no es más que un valor de 16 bits
          • 1  Dibujado; 0  Blanco
l neas en 3d ix
Líneas en 3D (IX)
  • Líneas punteadas (II)
    • Ejemplo

// Llamada para redibujar una escena

void RenderScene(void)

{

GLfloat y;

GLint factor=1;

GLushort patron = 0x5555;

// Activar el punteado

glEnable(GL_LINE_STIPPLE);

// Subir en el eje y 20 unidades cada vez

for(y=-90.0f; y<90.0f; y+=20.0f)

{

// Establecer el patrón

glLineSipple(factor, patron);

// Dibujar la línea

glBegin(GL_LINES);

glVertex2f(-80.0f, y);

glVertex2f(80.0f, y);

glEnd();

factor++;

}

}

slide23

Polígonos

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

ndice pol gonos
Índice Polígonos
  • Aspectos teóricos
    • Polígonos válidos
    • Encaramiento
    • Ajustes de color
    • Modos poligonales
  • Ejemplos prácticos
    • Triángulos
    • Cuadriláteros
    • Polígonos (más de 4 lados)

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

pol gonos v lidos
Polígonos válidos
  • Características:
    • Las aristas no se pueden cortar
    • Polígonos convexos
  • Polígonos complejos como unión de polígonos simples.
  • Vértices en OpenGL son tridimensionales
    • Los puntos que forman los limites de un polígono no tienen por que estar en el mismo plano
    • Cambia el punto de vista, rotaciones -> dejar de ser polígono convexo simple
    • Utilización de triángulos sus vértices están siempre en el mismo plano

Polígonos válidos

Polígonos no válidos

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

encaramiento
Encaramiento
  • Determina la cara frontal y trasera del polígono
  • Se especifica en el orden en que

se definen los vértices

    • Sentido contrario a las agujas del reloj (V0, V1, V2). Polígono encarado frontalmente.
    • Sentido de las agujas del reloj (V0, V2, V1). Polígono con encare posterior.
  • Función glFrontFace()

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

ajustes de color
Ajustes de color
  • Los colores se especifican para cada vértice no para el polígono.
    • Efecto de degradado
  • Función glShadeModel(). Argumentos:
    • GL_SMOOTH: por defecto.
    • GL_FLAT: color sólido del último vértice

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

modos poligonales
Modos poligonales
  • Representación de 3 formas distintas.
  • Función glPoligonMode(). 2 argumentos:
    • Primero: qué caras se verán afectadas.
      • GL_FRONT
      • GL_BACK
      • GL_FRONT_AND_BACK
    • Segundo: representación
      • GL_POINT: muestra sólo los vértices.
      • GL_LINE: muestra las aristas.
      • GL_FILL: muestra el polígono entero y relleno.

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

tri ngulos i
Triángulos (I)
  • Funciones glBegin() y glEnd()
    • Macro GL_TRIANGLES
  • Vértices múltiplo de 3.
  • Ejemplo:
    • Especifican vértices: V1, V2, V3, V4, V5, V6 y V7
  • Triángulos conectados: primitiva GL_TRIANGLE_STRIP.
tri ngulos ii
Triángulos (II)

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

cuadril teros i
Cuadriláteros (I)
  • Similar a triángulos.
    • Macro GL_QUADS.
  • Vértices múltiplo de 4.
  • Ejemplo:
    • Especifican vértices: V1, V2, V3, V4, V5, V6, V7, V8 y V9.
  • Cuadriláteros conectados: 4 vértices más pares de puntos. Macro GL_QUAD_STRIP.
cuadril teros ii
Cuadriláteros (II)

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

pol gonos
Polígonos
  • Funciones glBegin() y glEnd()
  • Aprovechan todos los vértices que se especifiquen.

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática

slide34

¿Preguntas?

Informática gráfica

Ingeniería Informática

Facultad de Ciencias - Departamento de Informática y Automática