Tema 1: Modelado poligonal

Introducci´ on Or´ıgenes de informaci´ on poligonal Representaci´ on La Normal Consolidaci´ on Pol´ıgonos y OpenGL Tema 1: Modelado poligonal Jo

1 downloads 167 Views 2MB Size

Recommend Stories


TUTORIAL 03: MODELADO DE VIVIENDA (PARTE 1)
TUTORIAL 03: MODELADO DE VIVIENDA (PARTE 1) Cuando dibujamos un plano, un corte, una elevación o cualquier objeto en 2 Dimensiones, por defecto AutoCA

Tema 3: Lenguajes de modelado de problemas de optimización
Tema 3: Lenguajes de modelado de problemas de optimización. Objetivos del tema:  Conocer las diferentes alternativas que existen en la actualidad pa

TEMA 9 PROCESOS EXTERNOS Y MODELADO DEL RELIEVE
Colegio “La Inmaculada” Misioneras Seculares de Jesús Obrero Biología y geología 3º E.S.O. TEMA 9 PROCESOS EXTERNOS Y MODELADO DEL RELIEVE La energí

Story Transcript

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Tema 1: Modelado poligonal Jos´e Ribelles

SIU020 Inform´ atica Gr´ afica y Animaci´ on Departamento de Lenguajes y Sistemas Inform´ aticos, Universitat Jaume I

Tema 1: Modelado poligonal

1

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Hoy veremos...

1

Introducci´ on

2

Or´ıgenes de informaci´ on poligonal

3

Representaci´ on

4

La Normal

5

Consolidaci´ on

6

Pol´ıgonos y OpenGL

Introducci´ on

Tema 1: Modelado poligonal

2

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Introducci´on Modelado poligonal Se denomina modelo al conjunto de datos que describe a un objeto y que puede ser utilizado por un sistema gr´afico para ser visualizado. Modelado poligonal es cuando se utilizan pol´ıgonos para describir la geometr´ıa. El tri´angulo es la primitiva m´as utilizada.

Introducci´ on

Tema 1: Modelado poligonal

3

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Introducci´on Ventajas Exactitud visual. Velocidad.

Introducci´ on

Tema 1: Modelado poligonal

4

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Introducci´on

Conceptos Teselado: proceso de divisi´ on de un pol´ıgono en pol´ıgonos m´as peque˜ nos. Triangulaci´ on: proceso de divisi´ on de un pol´ıgono de n lados en tri´angulos (caso particular de teselado). Consolidaci´ on: conjunto de operaciones u ´tiles para almacenamiento y dibujado del modelo. Optimizaci´ on: proceso por el que se agrupan u ordenan los datos con el fin de dibujarse de manera m´as r´apida. Simplificaci´ on: proceso por el que se elimina informaci´on que bajo alg´ un criterio resulte innecesaria o insignificante.

Introducci´ on

Tema 1: Modelado poligonal

5

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Hoy veremos...

1

Introducci´ on

2

Or´ıgenes de informaci´ on poligonal

3

Representaci´ on

4

La Normal

5

Consolidaci´ on

6

Pol´ıgonos y OpenGL

Or´ıgenes de informaci´ on poligonal

Tema 1: Modelado poligonal

6

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Or´ıgenes de informaci´on 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´etricos. Programas de modelado. Muestreo de un modelo real, digitalizador 3D. Fotogrametr´ıa: reconstrucci´ on 3D a partir de im´agenes. Escaner 3D.

Or´ıgenes de informaci´ on poligonal

Tema 1: Modelado poligonal

7

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Hoy veremos... 1

Introducci´ on

2

Or´ıgenes de informaci´ on poligonal

3

Representaci´ on Caras independientes V´ertices compartidos Tiras y abanicos de tri´angulos

4

La Normal

5

Consolidaci´ on

6

Pol´ıgonos y OpenGL

Representaci´ on

Tema 1: Modelado poligonal

8

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Mallas de tri´angulos Una malla representa una superficie donde v´ertices y aristas se comparten. La mayor parte de los modelos lo forman mallas de tri´angulos.

Representaci´ on

Tema 1: Modelado poligonal

9

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Mallas de tri´angulos

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´ on: Caras independientes. V´ertices compartidos. Tiras y abanicos de tri´ angulos. Representaci´ on

Tema 1: Modelado poligonal

10

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Caras independientes

(x3, y3, z3)

Cada cara almacena sus v´ertices.

{

F3

F1 F0

struct triangulo

(x0, y0, z0)

(x5, y5, z5)

(x4, y4, z4)

F2

(x1, y1, z1)

(x2, y2, z2)

vector3 coordenadas [ 3 ] ; } Triangulos [ nTriangulos ] ;

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

Tema 1: Modelado poligonal

11

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

V´ertices compartidos

Cada cara almacena ´ındices a una lista de v´ertices.

(x3, y3, z3)

F3

F1 F0 struct vertice

(x5, y5, z5)

(x4, y4, z4)

F2

{

f l o a t coordenadas [ 3 ] ;

(x0, y0, z0)

(x1, y1, z1)

(x2, y2, z2)

} Vertices [ nVertices ] ; struct triangulo

{

unsigned i n t i n d i c e s [ 3 ] ; } Triangulos [ nTriangulos ] ;

Representaci´ on

Vertices[] = { {x0, y0, z0}, {x1, y1, z1}, {x2, y2, z2}, {x3, y3, z3}, {x4, y4, z4}, {x5, y5, z5} }

Tema 1: Modelado poligonal

Triangulos[] = { { 0, 1, 3 }, { 1, 4, 3 }, { 1, 2, 4 }, { 2, 5, 4 } }

12

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Tiras y abanicos de tri´angulos Incremento de prestaciones al enviar grupos de tri´angulos que comparten v´ertices, ¿por qu´e se produce?, ¿se produce siempre?, ¿qu´e podemos concluir? v3

v3

v0

v0

v4 v1

v4 v1

v5 v2 TiraTriangulos[] = { 0, 3, 1, 4, 2, 5 } v5 v2 AbanicoTriangulos[] = { 1, 0, 3, 4, 5, 2 } Representaci´ on

Tema 1: Modelado poligonal

13

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Hoy veremos...

1

Introducci´ on

2

Or´ıgenes de informaci´ on poligonal

3

Representaci´ on

4

La Normal

5

Consolidaci´ on

6

Pol´ıgonos y OpenGL

La Normal

Tema 1: Modelado poligonal

14

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

La Normal Es habitual que para cada v´ertice se almacenen atributos como el color, la normal o las coordenadas de textura. Estos atributos se interpolan a trav´es de cada tri´angulo para definir una funci´ on 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

15

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

La Normal Uno de los atributos m´as importantes es la Normal. La normal es un vector perpendicular a la superficie en un punto, ¿c´ omo 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

16

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Hoy veremos...

1

Introducci´ on

2

Or´ıgenes de informaci´ on poligonal

3

Representaci´ on

4

La Normal

5

Consolidaci´ on

6

Pol´ıgonos y OpenGL

Consolidaci´ on

Tema 1: Modelado poligonal

17

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Consolidaci´on

Operaciones habituales Merging: transformar pol´ıgonos que est´an almacenados como separados en una malla poligonal, ¿por qu´e? ¿c´ omo? Orientaci´ on: hacer que las caras est´en todas definidas en el mismo sentido, ¿por qu´e? ¿c´ omo? Solidez: averiguar si solo un lado de la malla es visible, ¿por qu´e? ¿c´ omo? Normales: calcular las normales en cada v´ertice, ¿por qu´e? ¿c´omo? ¿y qu´e ocurre en los pliegues?

Consolidaci´ on

Tema 1: Modelado poligonal

18

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Ejercicio

Describe un modelo poligonal de un Cubo de lado 1 centrado en el origen de coordenadas. Dib´ ujalo en papel. Obten la lista de v´ertices y la de tri´angulos. Ten cuidado y define todas sus caras en el mismo orden. ¿Cu´antos v´ertices te salen? A˜ nade ahora las normales para cada v´ertice. ¿Tienes el mismo n´ umero de v´ertices?

Consolidaci´ on

Tema 1: Modelado poligonal

19

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Hoy veremos... 1

Introducci´ on

2

Or´ıgenes de informaci´ on poligonal

3

Representaci´ on

4

La Normal

5

Consolidaci´ on

6

Pol´ıgonos y OpenGL Primitivas geom´etricas Modelado Visualizaci´ on

Pol´ıgonos y OpenGL

Tema 1: Modelado poligonal

20

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Primitivas geom´etricas OpenGL no proporciona mecanismos para describir o modelar objetos geom´etricos complejos, sino que proporciona mecanismos para especificar c´ omo dichos objetos deben ser dibujados. El punto, el segmento de l´ınea y el tri´angulo. Cada primitiva se define especificando sus respectivos v´ertices. Dibujo de puntos: gl.POINTS

Dibujo de l´ıneas: Segmentos sueltos: gl.LINES Secuencia o tira de segmentos: gl.LINE STRIP Secuencia cerrada de segmentos: gl.LINE LOOP

Tri´ angulos Tri´ angulos sueltos: gl.TRIANGLES Tira de tri´ angulos: gl.TRIANGLE STRIP Abanico de tri´ angulos: gl.TRIANGLE FAN

Las primitivas geom´etricas se forman agrupando v´ertices, y estas se agrupan a su vez para definir objetos de mayor complejidad. Pol´ıgonos y OpenGL

Tema 1: Modelado poligonal

21

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Modelado Solemos asociar el concepto de v´ertice con las coordenadas. El concepto de v´ertice es m´as general entendi´endose como una agrupaci´ on de datos llamados atributos. Los atributos m´as utilizados son la posici´ on, la normal y el color. El programador puede incluir como atributo cualquier informaci´on. Como OpenGL requiere que la informaci´ on que vaya a visualizarse se disponga en vectores...

struct vertice { GLfloat coordenadas [ 3 ] ; GLfloat color [ 3 ] ; } Vertices [ nVertices ] ; struct triangulo { GLuint i n d i c e s [ 3 ] ; } Triangulos [ nTriangulos ] ;

Pol´ıgonos y OpenGL

Tema 1: Modelado poligonal

22

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Visualizaci´on

Tres pasos previos: 1 2

3

Almacenar el modelo poligonal en buffer objects. Obtener los ´ındices de las variables del Shader que representan los atributos de los v´ertices. Especificar para cada atributo d´ onde y c´ omo se encuentran almacenados as´ı como habilitar los vectores correspondientes.

Dibujar indicando tipo de primitiva y n´ umero de elementos. Listado 1: Paso 1 idVerticesBuffer = gl . createBuffer () ; g l . b i n d B u f f e r ( g l . ARRAY BUFFER , i d V e r t i c e s B u f f e r ) ; 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) ; idIndicesBuffer = gl . createBuffer () ; g l . b i n d B u f f e r ( g l . ELEMENT ARRAY BUFFER , i d I n d i c e s B u f f e r ) ; g l . b u f f e r D a t a ( g l . ELEMENT ARRAY BUFFER , new U i n t 1 6 A r r a y ( T r i a n g u l o s ) , g l . STATIC DRAW) ;

Pol´ıgonos y OpenGL

Tema 1: Modelado poligonal

23

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Visualizaci´on Listado 2: Paso 2 attribute attribute

vec3 p o s i c i o n ; vec3 c o l o r ;

varying

vec4 n ue v o Co l o r ;

v o i d main ( ) { nuevoC ol o r = vec4 ( c o l o r , 1 . 0 ) ; g l P o s i t i o n = vec4 ( p o s i c i o n , 1 . 0 ) ; } p r e c i s i o n mediump f l o a t ; varying vec4 nuevoColor ; v o i d main ( v o i d ) { gl FragColor = nuevoColor ; } . . . // c o m p i l a y e n l a z a e l S h a d e r 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 . g e t A t t r i b L o c a t i o n ( program , ” p o s i c i o n ” ) ; vertexColorAttribute = g l . g e t A t t r i b L o c a t i o n ( program , ” c o l o r ” ) ;

Pol´ıgonos y OpenGL

Tema 1: Modelado poligonal

24

Introducci´ on

Or´ıgenes de informaci´ on poligonal

Representaci´ on

La Normal

Consolidaci´ on

Pol´ıgonos y OpenGL

Visualizaci´on

Listado 3: Paso 3 y dibujado g l . b i n d B u f f e r ( g l . ARRAY BUFFER , i d V e r t i c e s B u f f e r ) ; g l . v e r t e x A t t r i b P o i n t e r ( v e r t e x P o s i t i o n A t t r i b u t e , 3 , g l . FLOAT , f a l s e , 2∗3∗4 , 0 ) ; gl . vertexAttribPointer ( vertexColorAttribute , 3 , g l . FLOAT , f a l s e , 2∗3∗4 , 3∗4) ; gl . enableVertexAttribArray ( vertexPositionAttribute ) ; gl . enableVertexAttribArray ( vertexColorAttribute ) ; g l . b i n d B u f f e r ( g l . ELEMENT ARRAY BUFFER , i d I n d i c e s B u f f e r ) ; g l . d r a w E l e m e n t s ( g l . TRIANGLES , n T r i a n g u l o s ∗3 , g l . UNSIGNED SHORT , 0 ) ;

Pol´ıgonos y OpenGL

Tema 1: Modelado poligonal

25

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.