Tema 1: Modelado poligonal

Documentos relacionados
Tema 1: Modelado poligonal

Tema 2: Modelado. J.Ribelles. SIE020: Síntesis de Imagen y Animación Institute of New Imaging Technologies, Universitat Jaume I

MODELADO DE OBJETOS 3D. Computación Gráfica

Modelación de objetos 3D Parte I: Mallas de polígonos y triangulaciones

Arreglos de vértices

Tema 6: Aplicación de Texturas 2D

Tema 4: Viendo en 3D

Tema 3: Transformaciones Geométricas

Tema 6. Tema 6. Tema 6. Modelado 3D 6.1 Introducción 6.2 Modelado plano de superficies 6.3 modelado de sólidos. 6.1 Introducción

Tema 4: Modelos de Iluminación y Sombreado 1

Tema 9: Texturas Avanzadas

Mallas poligonales y curvas cuádricas en OpenGL

1 Representación por superficies de polígonos

3 Eficiencia con polígonos

Tema 4: Modelos de Iluminación y Sombreado 1

Las librerías gráficas antiguas permiten trabajar con puntos 2D (pixels)

Taller 6 La fórmula de Euler y los Sólidos Platónicos Profesor: Maximiliano Leyton

Triangulación de polígonos

Introducción a OpenGL Shading Language (GLSL)

El pipeline de visualización es el conjunto de

Tema 6: Realismo Visual

Lenguaje de Programación: C++ GLUT

Monroy Torres Josué Joel

El API de WebGL JUAN CARLOS CONDE RAMÍREZ COMPUTER ANIMATION

Vertex Arrays (VAs) Vertex Buffer Objects (VBOs), Vertex Array Objects (VAOs) C. Andujar, A. Vinacua Nov 2015

GUÍA CUERPOS GEOMÉTRICOS Nº1 POLIEDROS. NOMBRE. FECHA: 03/10/2018. Tercero básico

ArchiCAD 7.0 (Extensión). Construcción de superficies (Uso de la herramienta Malla)

UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA CARRERA INGENIERÍA DE SISTEMAS MODELO DE RESPUESTA

ESQUEMA GENERAL DE LA CLASIFICACIÓN DE LOS CUERPOS GEOMÉTRICOS REGULARES ESFERA

MATHEMATICA. Geometría - Triángulos. Ricardo Villafaña Figueroa. Ricardo Villafaña Figueroa. Material realizado con Mathematica y Geometry Expressions

Computación Geométrica Tema 1: Introducción a la GC. Índice. Introducción a la Geometría Computacional. Definición. Intro Geometría Computacional

Curso de AutoCAD 2010 Apunte Parte II

Sistema de Coordenadas Personales

MATEMÁTICA 5 BÁSICO GUÍAS DEL ESTUDIANTE LOCALIZACIONES, CARACTERIZACIONES Y TRANSFORMACIONES GEOMÉTRICAS

Visualización y Realismo: Problemas Capítulo 2

Una recta es una línea (de puntos) que no tiene ni principio ni final. Un segmento es la parte de una recta que se encuentra entre 2 puntos.

Modelado de Objetos 3D II

III: Geometría para maestros. Capitulo 1: Figuras geométricas

TEMA 2.3 ETAPA DE GEOMETRÍA E IMPLEMENTACIÓN HARDWARE

Estructuras de datos en SIG

Contenido Semana 2 (Apropiándonos de AutoCAD 3D)

POLIEDROS. ÁREAS Y VOLÚMENES.

Modelos 3D? De dónde vienen los datos?

Departament d Enginyeria Mecànica i Construcció P. Company Técnicas de modelado geométrico 1

GRAFICACIÓN Unidad III

Modelado de Objetos 3D I

Tema 1 Introducción. David Vallejo Fernández. Curso 2007/2008. Escuela Superior de Informática

Las diagonales de un polígono convexo son segmentos de línea que conectan los vértices (no son lados)

APLICACIÓN DE DESARROLLOS

CUERPOS. Poliedros: Aquellos cuerpos geométricos totalmente limitados por polígonos, como por ejemplo, el prisma, la pirámide; etc.

Práctico #4 - Transformaciones y Mallas Poligonales

Estructuras de datos geométricas

ALGEBRA Y GEOMETRIA ANALITICA

Laboratorio de Graficación. Garibaldi Pineda García

TEMA 11: ÁREA Y FIGURAS GEOMÉTRICAS.

GEOMETRÍA - GRADO 9.

Plano de Conjunto Habitacional (Vivienda Multifamiliar)

Grupo de Informática Gráfica Avanzada Universidad de Zaragoza. Polígonos. Diego Gutiérrez

Capítulo II Sistemas de Modelado Geométrico

Espacios vectoriales. Vectores del espacio.

REGULARES.

ÍNDICE TEMÁTICO 2. VECTORES

Tema 2. Dibujando en el espacio

unidad 10 Cuerpos geométricos

3. Calcula la longitud del lado desconocido de cada triángulo rectángulo:

11 CONOCER LOS POLIEDROS Y DIFERENCIAR

Métodos para detección de superficies visibles (Hearn-Baker)

Introducción a la programación en OpenGL

RESUMEN DE VARIOS CONCEPTOS BÁSICOS DE GEOMETRÍA

CUERPOS GEOMÉTRICOS. POLIEDROS

Superficies de subdivisión

Cuerpos Geométricos Son aquellos elementos que ocupan un volumen en el espacio se componen de tres partes: alto, ancho y largo.

VECTORES EN EL ESPACIO

SERIE ÁLGEBRA VECTORIAL

Lenguaje de Programación: C++ GLUTIluminación

POLIEDROS. Ejercicio nº 1.- a De los siguientes cuerpos geométricos, di cuáles son poliedros y cuáles no. Razona tu respuesta.

CÁLCULO SIMBÓLICO Y GEOMETRÍA CON MAPLE. Triángulos. Ricardo Villafaña Figueroa

A RG = = Tetraedro y cubo Especial BT 2.43

Movimientos en el plano y mosaicos

Triangulación de Polígonos: Problema de la Galería de Arte. Geometría Computacional, MAT-125

Transcripción:

Tema 1: Modelado poligonal José Ribelles VJ1221 Informática Gráfica Departamento de Lenguajes y Sistemas Informáticos, Universitat Jaume I Tema 1: Modelado poligonal 1

Contenido 1 Introducción 2 Orígenes de información poligonal 3 Representación Caras independientes Vértices compartidos Tiras y abanicos de triángulos Tiras de triángulos generalizadas 4 La Normal 5 Consolidación 6 Poĺıgonos y OpenGL Primitivas geométricas Modelado Visualización Tema 1: Modelado poligonal 2

Hoy veremos... 1 Introducción 2 Orígenes de información poligonal 3 Representación 4 La Normal 5 Consolidación 6 Poĺıgonos y OpenGL Introducción Tema 1: Modelado poligonal 3

Introducción Modelado poligonal Se denomina modelo al conjunto de datos que describe a un objeto y que puede ser utilizado por un sistema gráfico para ser visualizado. Modelado poligonal es cuando se utilizan poĺıgonos para describir la geometría. El triángulo es la primitiva más utilizada. Introducción Tema 1: Modelado poligonal 4

Introducción Ventajas Exactitud visual. Velocidad. Introducción Tema 1: Modelado poligonal 5

Introducción Conceptos Teselado: proceso de división de un poĺıgono en poĺıgonos más pequeños. Triangulación: proceso de división de un poĺıgono de n lados en triángulos (caso particular de teselado). Consolidación: conjunto de operaciones útiles para almacenamiento y dibujado del modelo. Optimización: proceso por el que se agrupan u ordenan los datos con el fin de dibujarse de manera más rápida. Simplificación: proceso por el que se elimina información que bajo algún criterio resulte innecesaria o insignificante. Introducción Tema 1: Modelado poligonal 6

Hoy veremos... 1 Introducción 2 Orígenes de información poligonal 3 Representación 4 La Normal 5 Consolidación 6 Poĺıgonos y OpenGL Orígenes de información poligonal Tema 1: Modelado poligonal 7

Orígenes de información poligonal Posibles fuentes Describir la geometría a mano. Modelado procedural: programas que generan la geometría. Transformar datos de modelos de superficies o volumétricos. Programas de modelado. Muestreo de un modelo real, digitalizador 3D. Fotogrametría: reconstrucción 3D a partir de imágenes. Escaner 3D. Orígenes de información poligonal Tema 1: Modelado poligonal 8

Hoy veremos... 1 Introducción 2 Orígenes de información poligonal 3 Representación Caras independientes Vértices compartidos Tiras y abanicos de triángulos Tiras de triángulos generalizadas 4 La Normal 5 Consolidación 6 Poĺıgonos y OpenGL Representación Tema 1: Modelado poligonal 9

Mallas de triángulos Una malla representa una superficie donde vértices y aristas se comparten. La mayor parte de los modelos lo forman mallas de triángulos. Representación Tema 1: Modelado poligonal 10

Mallas de triángulos Es importante representarlos de manera eficiente para: Reducir el espacio de almacenamiento. Reducir el consumo de ancho de banda. Reducir el tiempo de dibujado. Tipos de representación: Caras independientes. Vértices compartidos. Tiras y abanicos de triángulos. Representación Tema 1: Modelado poligonal 11

Caras independientes Cada cara almacena sus vértices. (x3, y3, z3) F0 F1 (x4, y4, z4) F2 F3 (x5, y5, z5) s t r u c t t r i a n g u l o { vector3 coordenadas [ 3 ] ; } Triangulos [ ntriangulos ] ; (x0, y0, z0) (x1, y1, z1) (x2, y2, z2) Triangulos[] = { { x0, y0, z0, x1, y1, z1, x3, y3, z3 }, { x1, y1, z1, x4, y4, z4, x3, y3, z3 }, { x1, y1, z1, x2, y2, z2, x4, y4, z4 }, { x2, y2, z2, x5, y5, z5, x4, y4, z4 } } Representación Tema 1: Modelado poligonal 12

Vértices compartidos Cada cara almacena índices a una lista de vértices. (x3, y3, z3) F0 F1 (x4, y4, z4) F2 F3 (x5, y5, z5) s t r u c t v e r t i c e { f l o a t c o o r d e n a d a s [ 3 ] ; } V e r t i c e s [ nvertices ] ; s t r u c t t r i a n g u l o { unsigned i n t indices [ 3 ] ; } T r i a n g u l o s [ n T r i a n g u l o s ] ; (x0, y0, z0) Vertices[] = { {x0, y0, z0}, {x1, y1, z1}, {x2, y2, z2}, {x3, y3, z3}, {x4, y4, z4}, {x5, y5, z5} } (x1, y1, z1) (x2, y2, z2) Triangulos[] = { { 0, 1, 3 }, { 1, 4, 3 }, { 1, 2, 4 }, { 2, 5, 4 } } Representación Tema 1: Modelado poligonal 13

Tiras y abanicos de triángulos Incremento de prestaciones al enviar grupos de triángulos que comparten vértices, por qué se produce?, se produce siempre?, qué podemos concluir? v3 v0 v3 v0 v4 v1 v4 v1 v5 v5 v2 AbanicoTriangulos[] = { 1, 0, 3, 4, 5, 2 } v2 TiraTriangulos[] = { 0, 3, 1, 4, 2, 5 } Representación Tema 1: Modelado poligonal 14

Tiras de triángulos generalizadas v6 v3 v4 v5 v3 v4 v5 v0 v1 v2 v0 v1 v2 Representación Tema 1: Modelado poligonal 15

Hoy veremos... 1 Introducción 2 Orígenes de información poligonal 3 Representación 4 La Normal 5 Consolidación 6 Poĺıgonos y OpenGL La Normal Tema 1: Modelado poligonal 16

La Normal Es habitual que para cada vértice se almacenen atributos como el color, la normal o las coordenadas de textura. Estos atributos se interpolan a través de cada triángulo para definir una función continua sobre el total de la superficie de la malla. Y son necesarios para mejorar significativamente la calidad visual. La Normal Tema 1: Modelado poligonal 17

La Normal Uno de los atributos más importantes es la Normal. La normal es un vector perpendicular a la superficie en un punto, cómo obtenerla? Ya que el producto vectorial no es commutativo, hay que establecer un orden y obtener todas las normales de manera consistente. La Normal Tema 1: Modelado poligonal 18

Hoy veremos... 1 Introducción 2 Orígenes de información poligonal 3 Representación 4 La Normal 5 Consolidación 6 Poĺıgonos y OpenGL Consolidación Tema 1: Modelado poligonal 19

Consolidación Operaciones habituales Merging: transformar poĺıgonos que están almacenados como separados en una malla poligonal, por qué? cómo? Orientación: hacer que las caras estén todas definidas en el mismo sentido, por qué? cómo? Solidez: averiguar si solo un lado de la malla es visible, por qué? cómo? Normales: calcular las normales en cada vértice, por qué? cómo? y qué ocurre en los pliegues? Consolidación Tema 1: Modelado poligonal 20

Ejercicio Describe un modelo poligonal de un Cubo de lado 1 centrado en el origen de coordenadas. Dibújalo en papel. Obten la lista de vértices y la de triángulos. Ten cuidado y define todas sus caras en el mismo orden. Cuántos vértices te salen? Añade ahora las normales para cada vértice. Tienes el mismo número de vértices? Consolidación Tema 1: Modelado poligonal 21

Hoy veremos... 1 Introducción 2 Orígenes de información poligonal 3 Representación 4 La Normal 5 Consolidación 6 Poĺıgonos y OpenGL Primitivas geométricas Modelado Visualización Poĺıgonos y OpenGL Tema 1: Modelado poligonal 22

Primitivas geométricas OpenGL no proporciona mecanismos para describir o modelar objetos geométricos complejos, sino que proporciona mecanismos para especificar cómo dichos objetos deben ser dibujados. El punto, el segmento de ĺınea y el triángulo. Cada primitiva se define especificando sus respectivos vértices. Dibujo de puntos: gl.points Dibujo de ĺıneas: Segmentos sueltos: gl.lines Secuencia o tira de segmentos: gl.line STRIP Secuencia cerrada de segmentos: gl.line LOOP Triángulos Triángulos sueltos: gl.triangles Tira de triángulos: gl.triangle STRIP Abanico de triángulos: gl.triangle FAN Las primitivas geométricas se forman agrupando vértices, y estas se agrupan a su vez para definir objetos de mayor complejidad. Poĺıgonos y OpenGL Tema 1: Modelado poligonal 23

Modelado Solemos asociar el concepto de vértice con las coordenadas. El concepto de vértice es más general entendiéndose como una agrupación de datos llamados atributos. Los atributos más utilizados son la posición, la normal y el color. El programador puede incluir como atributo cualquier información. Como OpenGL requiere que la información que vaya a visualizarse se disponga en vectores... s t r u c t v e r t i c e { G L f l o a t coordenadas [ 3 ] ; G L f l o a t c o l o r [ 3 ] ; } V e r t i c e s [ n V e r t i c e s ] ; s t r u c t t r i a n g u l o { GLuint i n d i c e s [ 3 ] ; } Triangulos [ ntriangulos ] ; Poĺıgonos y OpenGL Tema 1: Modelado poligonal 24

Visualización Tres pasos previos: 1 Almacenar el modelo poligonal en buffer objects. 2 Obtener los índices de las variables del Shader que representan los atributos de los vértices. 3 Especificar para cada atributo dónde y cómo se encuentran almacenados así como habilitar los vectores correspondientes. Dibujar indicando tipo de primitiva y número de elementos. Listado 1: Paso 1 i d B u f f e r V e r t i c e s = g l. c r e a t e B u f f e r ( ) ; g l. b i n d B u f f e r ( g l. ARRAY BUFFER, i d B u f f e r V e r t i c e s ) ; g l. b u f f e r D a t a ( g l. ARRAY BUFFER, new F l o a t 3 2 A r r a y ( V e r t i c e s ), g l. STATIC DRAW) ; i d B u f f e r I n d i c e s = g l. c r e a t e B u f f e r ( ) ; g l. b i n d B u f f e r ( g l. ELEMENT ARRAY BUFFER, i d B u f f e r I n d i c e s ) ; gl. bufferdata ( gl. ELEMENT ARRAY BUFFER, new Uint16Array ( Triangulos ), gl. STATIC DRAW) ; Poĺıgonos y OpenGL Tema 1: Modelado poligonal 25

Visualización Listado 2: Paso 2 <script id= vertexshadersource type= x shader /x vertex > a t t r i b u t e vec3 VertexPosition ; a t t r i b u t e vec3 VertexColor ; v a r y i n g vec4 colorout ; v o i d main ( ) { colorout = vec4 ( VertexColor, 1.0) ; gl Position = vec4 ( VertexPosition, 1. 0 ) ; } </s c r i p t > <s c r i p t i d= f r a g m e n t S h a d e r S o u r c e t y p e= x s h a d e r /x fragment > p r e c i s i o n mediump f l o a t ; v a r y i n g vec4 colorout ; v o i d main ( v o i d ) { g l F r a g C o l o r = colorout ; } </s c r i p t >... // c o m p i l a y e n l a z a e l Shader vertexpositionattribute = gl. getattriblocation ( program, VertexPosition ) ; v e r t e x C o l o r A t t r i b u t e = g l. g e t A t t r i b L o c a t i o n ( program, V e r t e x C o l o r ) ; Poĺıgonos y OpenGL Tema 1: Modelado poligonal 26

Visualización Listado 3: Paso 3 y dibujado g l. b i n d B u f f e r ( g l. ARRAY BUFFER, i d B u f f e r V e r t i c e s ) ; gl. vertexattribpointer ( vertexpositionattribute, 3, gl.float, false, 2 3 4, 0) ; gl. vertexattribpointer ( vertexcolorattribute, 3, gl.float, false, 2 3 4, 3 4) ; g l. e n a b l e V e r t e x A t t r i b A r r a y ( v e r t e x P o s i t i o n A t t r i b u t e ) ; g l. e n a b l e V e r t e x A t t r i b A r r a y ( v e r t e x C o l o r A t t r i b u t e ) ; g l. b i n d B u f f e r ( g l. ELEMENT ARRAY BUFFER, i d B u f f e r I n d i c e s ) ; gl. drawelements ( gl. TRIANGLES, ntriangulos 3, gl.unsigned SHORT, 0) ; Poĺıgonos y OpenGL Tema 1: Modelado poligonal 27