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

Slides:



Advertisements
Presentaciones similares
EXPORTAR Convertir Archivos de Datos HYPACK® a DXF, DWG, DGN, Formatos definidos por el Usuario.
Advertisements

Igualdad por copia de ángulos
Curvas y Superficies Referencia – capítulo 11 del Libro Rojo.
Desarrollo de juegos de video Aprendiendo a programar en C# de manera divertida Sesión 5: Transformación y colisión de sprites
Descartes 2.0 Edición de de escenas Escena Acceso al editor Doble clic dentro de la escena.
Formatos gráficos Mapas de Bits y Gráficos Vectoriales Mapas de Bits
Sistemas de coordenadas de referencia
Geometría Analítica Plana
Cuerpos poliédricos. Prismas. Pirámides. Poliedros regulares
Java Binding for the OpenGL API Unidad III. ¿Qué es OpenGL? Open GL es un entorno de desarrollo portable de aplicaciones gráficas interactivas en 2D y.
TRANSFORMACIONES GEOMÉTRICAS
Transformaciones geométricas en 2D y 3D
Unidad 3 Gráfica de las funciones trigonométricas
Capitulo 5 «Fuerzas distribuidas: centroides y centros de gravedad»
¿Qué es SIG? El término SIG procede del acrónimo de Sistema de Información Geográfica (en inglés GIS, Geographic Information System). Se puede definir.
El rosetón de la iglesia Santa Maria la Mayor
INFORMATICA I Funciones CLASE 13.
Ing. David Durand Velásquez
Modelado en 3D y Composición de Objetos
LENGUAJE “C” Programación.
Transformaciones Isométricas
TRANSFORMACIONES GEOMÉTRICAS
Transformaciones isométricas
Sombras en OpenGL Informática Gráfica– Ingeniería Informática.
Juan José Cortés Orozco. Antonio Muñoz Torres.
PRIMITIVAS DE SALIDA Curso de graficación I.
TEMA 5 ACOTACION.
Ejemplo Supongamos que queremos realizar un sistema que trabaje con figuras geométricas planas. El sistema debe poder mostrar información de una figura.
Transformaciones en OpenGL
Programación Interactiva Eventos y Swing Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle.
Programación Avanzada
ELO3201 Vectores (Vector) Agustín J. González ELO320.
Valor X Valor Y Punto (0,0) Coordenadas.
Curso de OpenGL Verano de hrs. de adrenalina 3D M.C. Luis A. Zarza López.
Ricardo Ayala Rodríguez Javier Sánchez Romero PREOGRAMACION E INTERNET
Dibujo y diseño en ingeniería
OOP GUI Systems Parte 2 Info 033. Algunas cosas útiles Antes de continuar creen un nuevo proyecto con estructura similar a la anterior para seguir trabajando.
Universidad de Colima Facultad de Ciencia de la Educación Lic. en educación media especializado en Matemáticas Consuelo Sánchez González Asignatura: Informática.
CUERPOS GEOMÉTRICOS.
Clase 1 Creación y edición de imágenes digitales
Áreas de figuras planas
Carlos Carrasco de Pedro Daniel Sanz Sanfructuoso
Universidad Simón Bolívar Departamento de Computación CI5321 Computación Gráfica II Dinámica Jessica Fariñas Yessica De Ascencao.
Introducción a la Ingeniería de Sistemas
Introducción a los gráficos 3D
Transformaciones isométricas
CONCEPTOS BÁSICOS FOTOGRAFÍA DIGITAL. Imagen digital Una imagen digital, es una representación en código binario, de una imagen real. Es decir, la imagen.
Visualización Computacional 2
EXAMENES PAU JUNIO Fase General
Transformaciones Isométricas
colegio de bachilleres del estado de Oaxaca
AUTOCAD INTRODUCCIÓN Autodesk AutoCad Programa de diseño asistido por computadora (CAD, “Computer Aided Design) para dibujo en 2d y 3d. Actualmente es.
Luciano Reyes Itzel Elvira
DISEÑO Y DESARROLLO DEL WEB SITE PARA LA CÁTEDRA DE COMPUTACIÓN GRÁFICA INTEGRANTE: VILLEGAS V. OSCAR D. EDU 218.
Graficación 2D Alumna: Yasmin Rosales Cruz
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO Instituto de Ciencias Básicas e Ingenierías Asignatura: Cálculo Vectorial POSICIÓN, VELOCIDAD Y ACELERACIÓN.
Winisis Versión 1.5 UNESCO División de la Sociedad de la Información Sector de Comunicación e Información Dirección Ejecutiva de Bibliotecas Escolares.
Antonio J. Barbero García
Introducción a los gráficos 2D
TECNOLOGIA PARA 4º DEPARTAMENTO DE TECNOLOGIA I.E.S. “ANDALAN” ZARAGOZA _A.A.A._ ATENTOS Y SILENCIO.
COMPUTACION GRAFICA ING. JESSICA DELGADO FUENTES
Facultad de Ciencias de la Educación Licenciatura en Educación Media Especializado en Matemáticas Informática Actividad No. 1 Profesor:Luis Fernando Maciel.
ELEMENTOS DE DIBUJO TÉCNICO
METODOS GRAFICOS : Mediante los métodos gráficos se dibujan figuras sobre el formulario de acuerdo con unos valores especificados en el código del programa,
Clase Número 1 Introducción a la computación.. Componentes Externos.
INTRODUCCIÓN A LAS COMPUTADORAS Estudiante: Gabriela Rangel 10°AC
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
Transformación de objetos Para transformar un objeto primero hay que seleccionarlo. Es posible transformar todos los objetos gráficos y de texto de las.
Mapeo Ventana-Puerto de Visión
Transcripción de la presentación:

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 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

Introducción Informática gráfica Ingeniería Informática Facultad de Ciencias - Departamento de Informática y Automática

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) 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 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

Puntos Informática gráfica Ingeniería Informática Facultad de Ciencias - Departamento de Informática y Automática

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) Se puede modificar el tamaño del punto Ejemplo 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) 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) 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) Ejemplos – Puntos aleatorios en un plano Vista del plano que forman los puntos

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) 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) 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) 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: V1 V0 V2 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) 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: V1 V0 V2 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) 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) 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) 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 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 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++; }

Polígonos Informática gráfica Ingeniería Informática Facultad de Ciencias - Departamento de Informática y Automática

Índice Polígonos Aspectos teóricos Ejemplos prácticos 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 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 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 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 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) Funciones glBegin() y glEnd() Vértices múltiplo de 3. 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) Informática gráfica Ingeniería Informática Facultad de Ciencias - Departamento de Informática y Automática

Cuadriláteros (I) Similar a triángulos. Vértices múltiplo de 4. 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) Informática gráfica Ingeniería Informática Facultad de Ciencias - Departamento de Informática y Automática

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

¿Preguntas? Informática gráfica Ingeniería Informática Facultad de Ciencias - Departamento de Informática y Automática