tema 1: modelado poligonal - computational photography...

27
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 VJ1221 Inform´ atica Gr´ afica Departamento de Lenguajes y Sistemas Inform´ aticos, Universitat Jaume I Tema 1: Modelado poligonal 1

Upload: hoangtram

Post on 11-Apr-2019

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Tema 1: Modelado poligonal

Jose Ribelles

VJ1221 Informatica GraficaDepartamento de Lenguajes y Sistemas Informaticos, Universitat Jaume I

Tema 1: Modelado poligonal 1

Page 2: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Contenido

1 Introduccion

2 Orıgenes de informacion poligonal

3 RepresentacionCaras independientesVertices compartidosTiras y abanicos de triangulosTiras de triangulos generalizadas

4 La Normal

5 Consolidacion

6 Polıgonos y OpenGLPrimitivas geometricasModeladoVisualizacion

Tema 1: Modelado poligonal 2

Page 3: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Hoy veremos...

1 Introduccion

2 Orıgenes de informacion poligonal

3 Representacion

4 La Normal

5 Consolidacion

6 Polıgonos y OpenGL

Introduccion Tema 1: Modelado poligonal 3

Page 4: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Introduccion

Modelado poligonal

Se denomina modelo al conjunto de datos que describe a un objetoy que puede ser utilizado por un sistema grafico para ser visualizado.

Modelado poligonal es cuando se utilizan polıgonos para describir lageometrıa.

El triangulo es la primitiva mas utilizada.

Introduccion Tema 1: Modelado poligonal 4

Page 5: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Introduccion

Ventajas

Exactitud visual.

Velocidad.

Introduccion Tema 1: Modelado poligonal 5

Page 6: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Introduccion

Conceptos

Teselado: proceso de division de un polıgono en polıgonos maspequenos.

Triangulacion: proceso de division de un polıgono de n lados entriangulos (caso particular de teselado).

Consolidacion: conjunto de operaciones utiles para almacenamientoy dibujado del modelo.

Optimizacion: proceso por el que se agrupan u ordenan los datoscon el fin de dibujarse de manera mas rapida.

Simplificacion: proceso por el que se elimina informacion que bajoalgun criterio resulte innecesaria o insignificante.

Introduccion Tema 1: Modelado poligonal 6

Page 7: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Hoy veremos...

1 Introduccion

2 Orıgenes de informacion poligonal

3 Representacion

4 La Normal

5 Consolidacion

6 Polıgonos y OpenGL

Orıgenes de informacion poligonal Tema 1: Modelado poligonal 7

Page 8: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Orıgenes de informacion poligonal

Posibles fuentes

Describir la geometrıa a mano.

Modelado procedural: programas que generanla geometrıa.

Transformar datos de modelos de superficies ovolumetricos.

Programas de modelado.

Muestreo de un modelo real, digitalizador 3D.

Fotogrametrıa: reconstruccion 3D a partir deimagenes.

Escaner 3D.

Orıgenes de informacion poligonal Tema 1: Modelado poligonal 8

Page 9: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Hoy veremos...

1 Introduccion

2 Orıgenes de informacion poligonal

3 RepresentacionCaras independientesVertices compartidosTiras y abanicos de triangulosTiras de triangulos generalizadas

4 La Normal

5 Consolidacion

6 Polıgonos y OpenGL

Representacion Tema 1: Modelado poligonal 9

Page 10: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Mallas de triangulos

Una malla representa una superficie donde vertices y aristas secomparten.

La mayor parte de los modelos lo forman mallas de triangulos.

Representacion Tema 1: Modelado poligonal 10

Page 11: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Mallas de triangulos

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

Caras independientes.Vertices compartidos.Tiras y abanicos de triangulos.

Representacion Tema 1: Modelado poligonal 11

Page 12: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Caras independientes

Cada cara almacenasus vertices.

s t r u c t t r i a n g u l o {

v e c t o r 3 c o o r d e n a d a s [ 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)(x1, y1, z1) (x2, y2, z2)

(x5, y5, z5)(x4, y4, z4)

(x3, y3, z3)

F0

F1

F2

F3

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

Representacion Tema 1: Modelado poligonal 12

Page 13: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Vertices compartidos

Cada cara almacenaındices a una lista devertices.

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 [ n V e r t i c e s ] ;

s t r u c t t r i a n g u l o {

uns igned i n t i n d i c e s [ 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)(x1, y1, z1) (x2, y2, z2)

(x5, y5, z5)(x4, y4, z4)

(x3, y3, z3)

F0

F1

F2

F3

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

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

Representacion Tema 1: Modelado poligonal 13

Page 14: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Tiras y abanicos de triangulos

Incremento de prestaciones al enviar gruposde triangulos que comparten vertices, ¿porque se produce?, ¿se produce siempre?,¿que podemos concluir?

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

v0v3

v1

v4

v2

v5

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

v0v3

v1

v4

v2

v5

Representacion Tema 1: Modelado poligonal 14

Page 15: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Tiras de triangulos generalizadas

v0v1 v2

v5v4

v3

v0v1 v2

v5v4

v3

v6

Representacion Tema 1: Modelado poligonal 15

Page 16: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Hoy veremos...

1 Introduccion

2 Orıgenes de informacion poligonal

3 Representacion

4 La Normal

5 Consolidacion

6 Polıgonos y OpenGL

La Normal Tema 1: Modelado poligonal 16

Page 17: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

La Normal

Es habitual que para cada vertice se almacenen atributos como elcolor, la normal o las coordenadas de textura.

Estos atributos se interpolan a traves de cada triangulo para definiruna funcion 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

Page 18: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

La Normal

Uno de los atributos mas importantes es la Normal.

La normal es un vector perpendicular a la superficie en un punto,¿como obtenerla?

Ya que el producto vectorial no es commutativo, hay que establecerun orden y obtener todas las normales de manera consistente.

La Normal Tema 1: Modelado poligonal 18

Page 19: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Hoy veremos...

1 Introduccion

2 Orıgenes de informacion poligonal

3 Representacion

4 La Normal

5 Consolidacion

6 Polıgonos y OpenGL

Consolidacion Tema 1: Modelado poligonal 19

Page 20: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Consolidacion

Operaciones habituales

Merging: transformar polıgonos que estan almacenados comoseparados en una malla poligonal, ¿por que? ¿como?

Orientacion: hacer que las caras esten todas definidas en el mismosentido, ¿por que? ¿como?

Solidez: averiguar si solo un lado de la malla es visible, ¿por que?¿como?

Normales: calcular las normales en cada vertice, ¿por que? ¿como?¿y que ocurre en los pliegues?

Consolidacion Tema 1: Modelado poligonal 20

Page 21: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Ejercicio

Describe un modelo poligonal de un Cubo de lado 1 centrado en el origende coordenadas.

Dibujalo en papel.

Obten la lista de vertices y la de triangulos.

Ten cuidado y define todas sus caras en el mismo orden.

¿Cuantos vertices te salen?

Anade ahora las normales para cada vertice.

¿Tienes el mismo numero de vertices?

Consolidacion Tema 1: Modelado poligonal 21

Page 22: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Hoy veremos...

1 Introduccion

2 Orıgenes de informacion poligonal

3 Representacion

4 La Normal

5 Consolidacion

6 Polıgonos y OpenGLPrimitivas geometricasModeladoVisualizacion

Polıgonos y OpenGL Tema 1: Modelado poligonal 22

Page 23: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Primitivas geometricas

OpenGL no proporciona mecanismos para describir o modelarobjetos geometricos complejos, sino que proporciona mecanismospara especificar como dichos objetos deben ser dibujados.

El punto, el segmento de lınea y el triangulo.

Cada primitiva se define especificando sus respectivos vertices.Dibujo de puntos:

gl.POINTS

Dibujo de lıneas:

Segmentos sueltos: gl.LINESSecuencia o tira de segmentos: gl.LINE STRIPSecuencia cerrada de segmentos: gl.LINE LOOP

Triangulos

Triangulos sueltos: gl.TRIANGLESTira de triangulos: gl.TRIANGLE STRIPAbanico de triangulos: gl.TRIANGLE FAN

Las primitivas geometricas se forman agrupando vertices, y estas seagrupan a su vez para definir objetos de mayor complejidad.

Polıgonos y OpenGL Tema 1: Modelado poligonal 23

Page 24: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Modelado

Solemos asociar el concepto de vertice con las coordenadas.

El concepto de vertice es mas general entendiendose como unaagrupacion de datos llamados atributos.

Los atributos mas utilizados son la posicion, la normal y el color.

El programador puede incluir como atributo cualquier informacion.

Como OpenGL requiere que la informacion que vaya a visualizarse sedisponga en vectores...

s t r u c t v e r t i c e{

G L f l o a t c o o r d e n a d a s [ 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 ] ;}T r i a n g u l o s [ n T r i a n g u l o s ] ;

Polıgonos y OpenGL Tema 1: Modelado poligonal 24

Page 25: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Visualizacion

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 vertices.3 Especificar para cada atributo donde y como se encuentran

almacenados ası como habilitar los vectores correspondientes.

Dibujar indicando tipo de primitiva y numero de elementos.

Listado 1: Paso 1i 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 ) ;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 25

Page 26: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Visualizacion

Listado 2: Paso 2<s c r i p t i d=” v e r t e x S h a d e r S o u r c e ” t y p e=”x−s h a d e r /x−v e r t e x ”>

a t t r i b u t e vec3 V e r t e x P o s i t i o n ;a t t r i b u t e vec3 V e r t e x C o l o r ;

v a r y i n g vec4 c o l o r O u t ;

v o i d main ( ){

c o l o r O u t = vec4 ( V e r t e x C o l o r , 1 . 0 ) ;g l P o s i t i o n = vec4 ( V e r t e x P o s i t i o n , 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−f ragment ”>

p r e c i s i o n mediump f l o a t ;v a r y i n g vec4 c o l o r O u t ;

v o i d main ( v o i d ){

g l F r a g C o l o r = c o l o r O u t ;}

</s c r i p t>

. . . // comp i l a y e n l a z a e l Shader

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 , ” V e r t e x P o s i t i o n ” ) ;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 ” ) ;

Polıgonos y OpenGL Tema 1: Modelado poligonal 26

Page 27: Tema 1: Modelado poligonal - Computational Photography ...cphoto.uji.es/vj1221/ewExternalFiles/Tema_01_Modelado_Poligonal.pdf · Abanico de tri angulos: gl.TRIANGLE FAN Las primitivas

Introduccion Orıgenes de informacion poligonal Representacion La Normal Consolidacion Polıgonos y OpenGL

Visualizacion

Listado 3: Paso 3 y dibujadog 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 . 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) ;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 C o l o r A t t r i b u t e , 3 , g l . FLOAT, f a l s e , 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 ) ;g l . drawElements ( 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 27