Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
Vimos que la generación de una escena 3D requiere 3 componentes
esenciales:
1
El mundo 3D de los objetos
• Su geometría
• Su topología
• Sus atributos
2
El Mundo 3D de los Objetos
• Manipulación de la representación,
representación en particular,
particular el
cambiar la forma de un modelo existente.
3
El Mundo 3D de los Objetos
La representación de objetos es un problema sólo parcialmente resuelto.
4
El Mundo 3D de los Objetos
Eligiendo una representación
Modelado de Objetos 3D
5
Introducción
Veremos las técnicas básicas de modelado de objetos tridimensionales que son las
que están habitualmente disponibles en un programa de generación de objetos 3D.
Si bien hay distintas clasificaciones de las técnicas de modelado de objetos, los
objetos 3D pueden representarse por medio de su superficie o de su superficie y su
interior.
Las primeras se conocen como representación b-rep (boundary representation) en
tanto que las otras se conocen como representación volumétrica.
Modelado de objetos 3D
• Raw data • Sólidos
– Nubes de Puntos – Voxels
– Range image – Octree
– Polígonos – Árbol BSP
– CSG
6
Modelado de objetos 3D
• Raw data
– Nubes de Puntos
– Range image
– Polígonos
• Superficies
• Sólidos
• Estructuras de Alto Nivel
Modelado de objetos 3D
• Raw data
– Nubes de Puntos
– Range image
– Polígonos
• Superficies
• Sólidos
• Estructuras de Alto Nivel
7
Modelado de objetos 3D
• Raw data
– Nubes de Puntos
– Range image
– Polígonos
• Superficies
• Sólidos
• Estructuras de Alto Nivel
Modelado de objetos 3D
• Raw data
• Superficies
– Mesh
– Paramétricas
– Subdivisión
– Implícitas
• Sólidos
• Estructuras de Alto Nivel
8
Modelado de objetos 3D
• Raw data
• Superficies
– Mesh
– Paramétricas
– Subdivisión
– Implícitas
• Sólidos
• Estructuras de Alto Nivel
Modelado de objetos 3D
• Raw data
• Superficies
– Mesh
– Paramétricas
– Subdivisión
– Implícitas
• Sólidos
• Estructuras de Alto Nivel
9
Modelado de objetos 3D
• Raw data
• Superficies
– Mesh
– Paramétricas
– Subdivisión
– Implícitas
• Sólidos
• Estructuras de Alto Nivel
x2 y2 z 2 r 2
La forma del objeto se representa mediante una fórmula. Esta superficie la
constituyen los puntos que satisfacen F(x,y,z)=0
Modelado de objetos 3D
• Raw data
• Superficies
• Sólidos
– Voxels
– Octree
– Árbol BSP
– CSG
• Estructuras de Alto Nivel
10
Modelado de objetos 3D
• Raw data
• Superficies
• Sólidos
– Voxels
– Octree
– Árbol BSP
– CSG
• Estructuras de Alto Nivel
Modelado de objetos 3D
• Raw data
• Superficies d
c
• Sólidos b
i
– Voxels e g
h
– Octree
f k
– Árbol BSP j
a
– CSG
• Estructuras de Alto Nivel
a
b j
c e k out
d out f g in out
Particionamiento binario del espacio con
in out in out h out
etiquetado de celdas sólidas. Se
contruye a partir de representaciones in i
poligonales. in out
11
Modelado de objetos 3D
• Raw data
• Superficies
• Sólidos
– Voxels
– Octree
– Árbol BSP
– CSG
• Estructuras de Alto Nivel
Modelado de objetos 3D
• Raw data
• Superficies
• Sólidos
• Estructuras de Alto Nivel
– Grafos de escena
– Skeleton
– Sweep
– Específicas de la aplicación
12
Modelado de objetos 3D
• Raw data
• Superficies
• Sólidos
• Estructuras de Alto Nivel
– Grafos de escena
– Skeleton
– Sweep
– Específicas de la aplicación
Modelado de objetos 3D
Superficie generada mediante el
• Raw data
sweep de una curva a lo largo de una
• Superficies
trayectoria.
• Sólidos
• Estructuras de Alto Nivel
– Grafos de escena
– Skeleton
– Sweep
– Específicas de la aplicación
13
Modelado de objetos 3D
• Raw data
• Superficies
• Sólidos
• Estructuras de Alto Nivel
– Grafos de escena
– Skeleton
– Sweep
– Específicas de la aplicación
Modelado Poligonal
14
Introducción
La representación poligonal es la representación clásica básica en la
Computación Gráfica tridimensional y es el modelado dominante para la
generación de gráficos en 3D. Un objeto se representa mediante una red de
caras planas denominada red poligonal.
Introducción
¿Por qué es la técnica dominante?
15
Introducción
• Siempre son una aproximación en la representación de superficies
curvas
– Pero pueden hacerse tan buenas como se quiera, si queremos
pagar el precio del espacio
– Los vectores normales son aproximados
– La mayoría de las superficies del mundo real son curvas,
particularmente las naturales
• Pueden ser muy poco estructuradas
• Es difícil parametrizarlas globalmente (concepto complejo)
– ¿Cómo las parametrizamos para el mapeo de texturas?
Introducción
• Una mesh o red poligonal es un conjunto de polígonos
conectados para constituir un objeto
• Una red tiene varias componentes:
– Caras
– Lados (la frontera entre caras)
– Vértices (las fronteras entre lados o donde concurren 2 ó más
caras)
– Normales, coordenadas de textura, colores, coeficientes de
sombreado, etc
• Algunas
g componentes
p son implícitas
p dadas las otras
– Dadas las caras y los vértices, por ejemplo, se pueden
determinar los lados
– Fórmula de Euler: #Caras + #Vértices – #Lados = 2 –
2xGenus, para redes poligonales cerradas
16
Introducción
Usaremos redes (o meshes) para modelar tanto formas cerradas
como abiertas.
Introducción
• Las estructuras de datos para almacenar las redes poligonales son
dependientes de la aplicación
• Distintas aplicaciones requieren optimizar en velocidad, por
ejemplo distintas operaciones
ejemplo,
– Encontrar la cara vecina de una cara dada
– Encontrar las caras que concurren a un vértice
– Intersección de dos redes poligonales
• Básicamente debe elegirse:
– Qué características almacenar explícitamente (vértices, caras,
normales, etc))
– Qué relaciones se quiere que sean explícitas (los vértices que
pertenecen a las caras, los vecinos, las caras que concurren a
un vértice, etc)
17
Redes Poligonales
Distintas librerías brindan algunas
formas básicas como:
- Cilindro
- Cono
- Esfera
- Cubo
- La
L tetera
t t d Newell
de N ll (o
( de
d Utah)
Ut h)
- Dodecaedro
- Toroide
-…
Redes Poligonales
Cada objeto estará representado por:
• Su geometría
• Su topología
• Sus atributos
18
Redes Poligonales
Para una misma aplicación pueden utilizarse distintas representaciones: una
para uso interno, otra para uso externo o inclusive otra con la cual el usuario
crea interactivamente la red.
Los criterios básicos para evaluar las distintas representaciones son espacio y
tiempo. Operaciones típicas que se realizan sobre una red poligonal son:
La representación explícita:
P (( x1 , y1 , z1 ), ( x2 , y2 , z 2 ),..., ( xn , yn , z n ))
Los vértices se almacenan en el orden en que se
encuentran recorriendo el polígono en un determinada
sentido. Esta representación es eficiente para un solo
polígono tanto en tiempo como en espacio.
¿Qué ocurre para el caso de representación de la red
poligonal? ¿Y con el dibujado de la misma?
19
Redes Poligonales: Estructuras de Datos Simples
v0
v4
v1 vértices v0 v1 v2 v3 v4
caras 0 2 1 0 1 4 1 2 3 1 3 4
v2
v3
20
Redes Poligonales: Estructuras de Datos Simples
V (( x1 , y1 , z1 ),
) ( x2 , y2 , z 2 ),...,
) ( xn , yn , z n ))
Esta representación:
21
Redes Poligonales: Estructuras de Datos Simples
Vértices:
(-1, -1, -1)
(-1, -1, 1)
(-1, 1, -1)
(1 1
(-1, 1, 1)
(1, -1, -1)
(1, -1, 1)
(1, 1, -1)
(1, 1, 1)
Caras:
1243
5786
1562
3487
1375
2684
Redes Poligonales
Triángulos Indexados
22
Redes Poligonales
Strips de triángulos
Aprovechan las características de las redes:
- Cada triángulo es usualmente adyacente al previo
- Cada nuevo vértice (excepto los dos primeros) crea un triángulo reusando el
segundo y el tercer vértice del triángulo previo
- Cada secuencia de 3 vértices produce un triángulo (pero no en el mismo
orden). La secuencia de vértices 0,1,2,3,4,5,6,7,... conduce a generar los
triángulos:
(0,1,2),(2,1,3),(2,3,4),(4,3,5),(4,5,6),(6,5,7),...
- Cuando los strips son largos se tiende a requerir un solo vértice (índice) por
triángulo.
Redes Poligonales
Strips de triángulos
23
Redes Poligonales
Fans de triángulos
Es la misma idea que en los strips de triángulos:
- Cada secuencia de 3 vértices pproduce un triángulo.
g La secuencia de vértices
0,1,2,3,4,5,... conduce a generar los triángulos:
(0,1,2),(0,2,3),(0,3,4),(0,4,5), ...
- Cuando los fans son largos se tiende a requerir un solo vértice (índice) por
triángulo.
Redes Poligonales
Además de los vértices y las caras
que utilicemos para modelar el
objeto, también necesitamos
guardar las normales.
normales
24
Almacenando más información
• Los vectores normales dan información acerca de la forma real de la
superficie
• Normales por cara:
– Un vector normal vector p
por cada cara almacenado como p
parte de la
cara
– Sombreado plano
Cubo:
Vértices: Normales: Caras ((vert,norm), …):
(1,1,1) (1,0,0) ((0,4),(1,4),(2,4),(3,4))
(-1,1,1) (-1,0,0) ((0,0),(3,0),(7,0),(4,0))
(-1,-1,1) (0,1,0) ((0,2),(4,2),(5,2),(1,2))
(1 1 1)
(1,-1,1) (0 1 0)
(0,-1,0) ((2 1) (1 1) (5 1) (6 1))
((2,1),(1,1),(5,1),(6,1))
(1,1,-1) (0,0,1) ((3,3),(2,3),(6,3),(7,3))
(-1,1,-1) (0,0,-1) ((7,5),(6,5),(5,5),(4,5))
(-1,-1,-1)
(1,-1,-1)
25
Problemas
No hemos guardado información de adyacencia
• Las búsquedas se realizan en tiempo lineal
• Debemos almacenar:
• Información topológica (adyacencia, conectividad)
Redes Poligonales
Muchos algoritmos pueden necesitar, por ejemplo, información de los
vecinos; para ello puede hacerse que:
• Caras almacenen punteros a sus vecinos
• Lados pueden almacenarse explícitamente
•…
En muchos casos esta información puede almacenarse directamente o ser
extraída con distinta dificultad.
V2
V (V1 ,V2 ,V3 ,V4 ) (( x1 , y1 , z1 ),..., ( xn , yn , z n ))
E1 E2
E1 (V1 ,V2 , P1 , )
E2 (V2 ,V3 , P2 , )
V1 P1 P2 V3 E3 (V3 , V4 , P2 , )
E4 E4 (V4 ,V2 , P2 , P1 )
E5 E5 (V4 , V1 , P1 , )
E3
P1 ( E1 , E4 , E5 )
V4
P2 ( E2 , E3 , E4 )
26
Redes Poligonales
• Cada elemento (vértice, lado y cara) tiene una lista de punteros a todos los
elementos incidentes
• Las consultas dependen sólo de la complejidad local de la red
• Las estructuras de datos no tienen tamaño fijo
• ¡Lento! ¡Grande! ¡Demasiado trabajo para mantener!
Redes Poligonales
Se pueden obtener distintas representaciones que soportan la recuperación
eficiente de las distintas relaciones topológicas. En el siguiente diagrama se
presentan todas las posibles entidades y relaciones de un modelo que
permita representar una superficie.
V E
27
Redes Poligonales
Hay determinadas relaciones que son constantes
V F
VE EE FE
Redes Poligonales
Otras relaciones son variables
E
VVi Vértices que concurren a un vértice
28
Redes Poligonales
Ejemplo de una red triangular construida mediante un conjunto indexado de
triángulos. Cada triángulo apunta a sus 3 triángulos vecinos y cada vértice a
un solo triángulo vecino (relación parcial VTi*). Así podemos enumerar los
triángulos que concurren a un vértice.
Redes Poligonales
Representación Winged Edge para triángulos
29
Redes Poligonales
Representación Winged Edge para triángulos
Redes Poligonales
Creación de Objetos Poligonales
Aunque una red poligonal es la forma de representación más común en CG,
el modelado, aunque directo, algunas veces es muy tedioso. La popularidad
de esta representación se basa en la facilidad del modelado,
modelado la existencia de
estrategias de rendering para procesar objetos poligonales y el hecho de
que no hay restricciones en la forma o la complejidad del objeto que se
modela.
Hay distintos métodos para obtener una representación poligonal de un
objeto. Entre ellos podemos mencionar:
• Usar digitalizador 3D o estrategia manual equivalente
• Usar un dispositivo automático como el láser ranger
• Generar un objeto a partir de su descripción matemática
• Generar objetos por sweeping
• ...
30
Redes Poligonales
Además de los vértices y las caras
que utilicemos para modelar el
objeto, también necesitamos
guardar las normales.
normales
Éstas se tendrán en cuenta cuando
se calcule la iluminación de los
objetos.
Redes Poligonales
Para algunos objetos asociamos una normal a cada vértice; para otros,
asociamos una normal a cada cara.
31
Redes Poligonales
Redes Poligonales
Vértices x y z
0 0 0 0
1 1 0 0
2 1 1 0
3 0.5 1.5 0
4 0 1 0
5 0 0 1
6 1 0 1
7 1 1 1
8 0.5 1.5 10
9 0 1 1
32
Redes Poligonales
Normales nx ny nz
0 -1 0 0
1 -0.707 0.707 0
2 0.707 0.707 0
3 1 0 0
4 0 -1 0
5 0 0 1
6 0 0 -1
Redes Poligonales
Cara Vértices Normales
0 (izq) 0, 5, 9, 4 0,0,0,0
3 (der) 1, 2, 7, 6 3, 3, 3, 3
4 (abajo) 0, 1, 6, 5 4, 4, 4, 4
5 (frente) 5, 6, 7, 8, 9 5, 5, 5, 5, 5
6 (atrás) 0, 4, 3, 2, 1 6, 6, 6, 6, 6
33
Problemas con Polígonos
• Son inherentemente una aproximación
– Las siluetas de los objetos, por ejemplo, nunca serán
perfectas sin una gran cantidad de polígonos y el gasto
correpondiente
– Vectores normales no se especifican en todos lados
• La interacción es un problema
– Arrastrar puntos consume mucho tiempo
– Mantener características como la suavidad es dificultoso
• Representación de bajo nivel
– Ej: Difícil de aumentar o disminuir la resolución
– Difícil extraer información como por ejemplo, la curvatura
Redes Poligonales
Creación de Objetos Poligonales mediante escaneo
34
Redes Poligonales
Creación de Objetos Poligonales
Redes Poligonales
http://www-graphics.stanford.edu/projects/mich/
35
Redes Poligonales
Creación de Objetos Poligonales por Sweeping
• Definir un polígono por medio de sus lados
• Arrastrar éste a lo largo de un camino
• El camino recorrido por los lados permite generar la superficie.
• Casos especiales
– Superficie de revolución: Rotar lados alrededor de un eje
– Extrusión: Arrastrar a lo largo de una línea recta
Redes Poligonales
Creación de Objetos Poligonales por Sweeping
Ejemplo:
escalado torsionado
36
Redes Poligonales
Creación de Objetos Poligonales
Revolución
Free-Form
Redes Poligonales
Sweep más general:
• El camino puede ser cualquier curva
• El polígono que es arrastrado puede transformarse a medida
que se mueve a lo largo del camino
– Escalado, rotado con respecto a la orientación del camino,
…
• Una manera habitual de especificación es:
– Dar una polilínea como el camino
– Dar una polilínea como la forma que se arrastrará
– Dar una transformación para aplicar en cada uno de los
vértices del segmento del camino
• Es muy dificultoso evitar la auto-intersección
37
Silvia Castro CG 2012
38
Silvia Castro CG 2012
39
Silvia Castro CG 2012
40
Silvia Castro CG 2012
41
Silvia Castro CG 2012
42
Silvia Castro CG 2012
43
Silvia Castro CG 2012
44
Silvia Castro CG 2012
Modelado de Objetos 3D
Objeto Gráfico
45
Modelado de Objetos 3D
Modelado de Objetos 3D
46
Modelado de Objetos 3D
Modelado de Objetos 3D
47
Modelado de Objetos 3D
Objeto Gráfico
Topología
Atributos
Primitivas Complejas
Primitivas Complejas
Modelado de Objetos 3D
ObjetoGráfico
<<Atributos>>
private
partes: colección de FormaGráfica:
<<Constructores>>
<<Comandos>>
<<Consultas>>
48
Modelado de Objetos 3D
FormaGráfica
<<Atributos>>
private
matTransf: Transformación
mat:Material
<<Constructores>>
<<Comandos>>
<<Consultas>>
Modelado de Objetos 3D
Esfera
<<Atributos>>
private
radio: real
resH, resV: entero
<<Constructores>>
Esfera()
Esfera(r:real)
Esfera(r:real, resH, resV:entero)
<<Comandos>>
setRadio(r: real)
...
j ()
dibujarEsfera()
<<Consultas>>
getRadio(): real
…
49
Modelado de Objetos 3D
Red Poligonal
<<Atributos>>
private
vertices: Secuencia (acceso directo) de Pto3D
Las secuencias normales: Secuencia (acceso directo) de Vectores3D;
deben ser de caras: secuencia de Cara
acceso directo
<<Constructores>>
Cara <<Comandos>>
Secuencia de leerRedPoligonal(nombre:cad): RedPoligonal
indVertice
indNormal guardarRedPoligonal(nombre:cad)
dibujarRedPoligonal()
<<Consultas>>
Modelado de Objetos 3D
Red Poligonal
<<Atributos>>
private
vertices: Secuencia (acceso directo) de Pto3D
Las secuencias normales: Secuencia (acceso directo) de Vectores3D;
deben ser de caras: secuencia de Cara
acceso directo
<<Constructores>>
Cara <<Comandos>>
Secuencia de leerRedPoligonal(nombre:cad): RedPoligonal
indVertice importarRedPoligonal(nombre:cad): RedPoligonal
indNormal guardarRedPoligonal(nombre:cad)
dibujarRedPoligonal()
<<Consultas>>
50
Modelado de Objetos 3D
ObjetoGráfico * FormaGráfica
… * Pto3D
Cubo Esfera … … RedPolig
* Vec3D
*
Caras
*
IndVert
?
Silvia Castro CG 2012
Modelado de Objetos 3D
51
Modelado de Objetos 3D
Cómo generamos un objeto 3D mediante sweeping:
Modelado de Objetos 3D
Red Sweep
<<Atributos>>
private
camino: Poligonal
perfil: Poligonal
tapas?
<<Constructores>>
<<Comandos>>
<<Consultas>>
52
Modelado de Objetos 3D
<<Constructores>>
<<Comandos>>
<<Consultas>>
Modelado de Objetos 3D
<<Constructores>>
<<Comandos>>
<<Consultas>>
53
Redes Poligonales
Ejercicio: Generación de un cuerpo extrudado
Redes Poligonales
Como el polígono tiene 6 lados, hay 6 caras verticales del prisma más la
cara de arriba (cap) y la de abajo (base), es decir, 8 caras en total. Las
normales al prisma son las normales a las caras.
54
Redes Poligonales
Ejercicio: Generación de un cuerpo extrudado
Redes Poligonales
Ejercicio: Generación del domo del Taj Mahal
55
Redes Poligonales
• Dibujar la copa a partir de la polilínea
(a) Pj = (xj, yj, 0).
• Para rotar la polilínea a k ángulos
equiespaciados
i i d alrededor
l d d deld l eje
j y
debemos variar: θi = 2πi/k, i = 0, 1, 2,
…, k y obtener los vértices a partir de
aplicar la transformación M.
cos(i ) 0 sin(i ) 0
0 1 0 0
M
sin(i ) 0 cos(i ) 0
1
0 0 0
Redes Poligonales
Ejercicio: Generación del domo del Taj Mahal
56
Redes Poligonales
Ejercicio: Generación de unToroide
Las variables requeridas para darle forma son dos radios: el interior y el
exterior y además la cantidad de divisiones latitudinales y
longitudinales. Dados ambos radios y la cantidad de divisiones
latitudinales y longitudinales, generar un toroide.
Esfera genérica
57
Cuádricas
Ejercicio: Cuádricas
Cuádricas
Ejercicio: Super Cuádricas
58
Almacenamiento de modelos 3D…
59
Silvia Castro CG 2012
60