Está en la página 1de 60

El Mundo 3D

VyGLab – Lab. de Investigación y Desarrollo en Visualización


y Computación Gráfica
Dpto. de Ciencias e Ingeniería de la Computación
Universidad Nacional del Sur

Silvia Castro CG 2012

Introducción
Vimos que la generación de una escena 3D requiere 3 componentes
esenciales:

• El mundo 3D de los objetos


j
• La o las fuentes de luz
• La cámara o el ojo que observa la escena

Hasta el momento hemos modelado la cámara u ojo que observa la


escena.

Nos centraremos ahora en construir objetos tridimensionales para


poder avanzar un paso más en lo que respecta a definir los
elementos constituyentes de una escena.

Silvia Castro CG 2012

1
El mundo 3D de los objetos

Silvia Castro CG 2012

El Mundo 3D de los Objetos

Típicamente pensamos en un modelo como un objeto stand-alone,


por ejemplo, un árbol, un escritorio, etc y en la escena como el
ensamblado de estas partes en un ambiente 3D completo en el que
se incluyen las luces y la cámara.

Cada modelo está representado por:

• Su geometría
• Su topología
• Sus atributos

Silvia Castro CG 2012

2
El Mundo 3D de los Objetos

El modelado y la representación de objetos se aplica, en general, a


todos o a cualesquiera de los siguientes aspectos de los objetos:

• Creación de una representación gráfica computacional


3D.

• Método o estructura de datos usada para representar el


objeto.

• Manipulación de la representación,
representación en particular,
particular el
cambiar la forma de un modelo existente.

Silvia Castro CG 2012

El Mundo 3D de los Objetos


Las formas de crear un objeto gráfico computacional 3D son tantas y tan
variadas como los tipos de objetos.

Éstas pueden ser, por ejemplo,

• Construir un objeto mediante una interfaz 3D, como, por ejemplo,


con 3D Studio, Blender, … .
• Tomar datos de un dispositivo como un laser ranger o un
digitalizador 3D.
• ...

Hasta ahora los métodos de creación han sido manuales o semi-manuales


teniendo el diseñador que trabajar con una interfaz a tal efecto.

Actualmente hay gran demanda de gran cantidad de objetos, siendo estos


además muy complejos. Por esto se están investigando métodos automáticos
para la obtención de objetos tales como por ejemplo la obtención de los mismos
a partir de fotos o videos.

Silvia Castro CG 2012

3
El Mundo 3D de los Objetos
La representación de objetos es un problema sólo parcialmente resuelto.

Podemos distinguir entre la representación que requiere la máquina o el


renderizador y la que requiere el usuario o la interfaz. Además, al almacenar
un objeto se tiene otra representación del mismo.

La representación usando polígonos es la representación aproximada más


popular para la máquina. Sin embargo, es una representación inconveniente
para el usuario o creador de un objeto.

A pesar de esto, se usa a menudo tanto para la máquina como para el


usuario.
i Hay
H otros
t métodos
ét d que tienen
ti representaciones
t i di ti t
distintas para lla
máquina y el usuario.

Silvia Castro CG 2012

El Mundo 3D de los Objetos


La manipulación de objetos se refiere a la forma en que se permitirá
manipular la forma de un objeto existente.

Esto depende fuertemente de la representación.

Las formas poligonales, por ejemplo, no permiten


una manipulación simple de la forma.

Los distintos métodos de representación tienen sus ventajas y desventajas


pero no hay una solución universal.

¿Cómo elegir una representación?

Silvia Castro CG 2012

4
El Mundo 3D de los Objetos
Eligiendo una representación

• ¿Cuán bien representa los objetos de interés?


• ¿Cuán
C án fácil es renderi
renderizar
ar los objetos en esa representación(o
convertirlos a polígonos)?
• ¿Cuán compacta es (barata para almacenar y transmitir)?
• ¿Cuán fácil es de crear?
– A mano, proceduralmente, ajustándose a medidas, …

• ¿Cuán fácil es interactuar con ésta?


– Modificarla, animarla, ...

• ¿Cuán fácil es llevar a cabo operaciones sobre ésta?


– Distancia, intersección, vectores normales, curvatura, …

Silvia Castro CG 2012

Modelado de Objetos 3D

Silvia Castro CG 2012

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.

Silvia Castro CG 2012

Modelado de objetos 3D
• Raw data • Sólidos
– Nubes de Puntos – Voxels
– Range image – Octree
– Polígonos – Árbol BSP
– CSG

• Superficies • Estructuras de Alto Nivel


– Mesh – Grafos de escena
– Paramétricas – Skeleton
– Subdivisión – Sweep
– Implícitas – Específicas de la aplicación

Silvia Castro CG 2012

6
Modelado de objetos 3D
• Raw data
– Nubes de Puntos
– Range image
– Polígonos
• Superficies
• Sólidos
• Estructuras de Alto Nivel

Es un conjunto no estructurado de puntos 3D muestreados del volumen.


Pueden obtenerse a partir de los scánner, distintos algoritmos de visión, etc..

Silvia Castro CG 2012

Modelado de objetos 3D
• Raw data
– Nubes de Puntos
– Range image
– Polígonos
• Superficies
• Sólidos
• Estructuras de Alto Nivel

Es un conjunto de puntos 3D mapeados a pixels de una imagen de


profundidad. Pueden obtenerse a partir de los escáners 3D.

Silvia Castro CG 2012

7
Modelado de objetos 3D
• Raw data
– Nubes de Puntos
– Range image
– Polígonos
• Superficies
• Sólidos
• Estructuras de Alto Nivel

Es un conjunto no estructurado de polígonos. Pueden obtenerse mediante


sistemas de modelado interactivos.

Silvia Castro CG 2012

Modelado de objetos 3D
• Raw data
• Superficies
– Mesh
– Paramétricas
– Subdivisión
– Implícitas
• Sólidos
• Estructuras de Alto Nivel

Es un conjunto conectado de polígonos (triángulos). Pueden ser cerradas o


no.

Silvia Castro CG 2012

8
Modelado de objetos 3D
• Raw data
• Superficies
– Mesh
– Paramétricas
– Subdivisión
– Implícitas
• Sólidos
• Estructuras de Alto Nivel

El objeto 3D se construyen mediante la unión de parches. Estos parches se


especifican con una fórmula matemática que da la posición del parche en el espacio
3D y su forma. Esta fórmula nos permite generar cualquier punto sobre la superficie
del parche. Podemos cambiar la forma o curvatura del parche editando la
especificación matemática. Interactivamente, la forma de cada parche puede
controlarse mediante puntos de control.

Silvia Castro CG 2012

Modelado de objetos 3D
• Raw data
• Superficies
– Mesh
– Paramétricas
– Subdivisión
– Implícitas
• Sólidos
• Estructuras de Alto Nivel

Red poligonal gruesa más regla/s de subdivisión. Definen superficies suaves


como límite de una secuencia de refinamientos.

Silvia Castro CG 2012

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

Silvia Castro CG 2012

Modelado de objetos 3D
• Raw data
• Superficies
• Sólidos
– Voxels
– Octree
– Árbol BSP
– CSG
• Estructuras de Alto Nivel

Grilla uniforme de muestras volumétricas. Adquiridas de CAT, MRI, etc.

Silvia Castro CG 2012

10
Modelado de objetos 3D
• Raw data
• Superficies
• Sólidos
– Voxels
– Octree
– Árbol BSP
– CSG
• Estructuras de Alto Nivel

Un Octree es una estructura de datos que permite el almacenamiento


eficiente de datos 3D. La idea es representar grandes regiones uniformes
(llenas o vacías) por medio de una celda, usando un método de subdivisión
recursivo.
Silvia Castro CG 2012

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

Silvia Castro CG 2012

11
Modelado de objetos 3D
• Raw data
• Superficies
• Sólidos
– Voxels
– Octree
– Árbol BSP
– CSG
• Estructuras de Alto Nivel

Es una representación exacta para ciertos tipos de formas rígidas. Se


generan las formas mediante una jerarquía de operaciones booleanas de
conjunto (unión, intersección y diferencia) aplicadas sobre formas simples;
permite un control de forma intuitiva.

Silvia Castro CG 2012

Modelado de objetos 3D
• Raw data
• Superficies
• Sólidos
• Estructuras de Alto Nivel
– Grafos de escena
– Skeleton
– Sweep
– Específicas de la aplicación

Se describe la escena mediante un grafo. Hay


distintos tipos de nodos:
• Forma
• Propiedades
• Grupo

Silvia Castro CG 2012

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

Grafo de curvas con radio.

Silvia Castro CG 2012

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

Silvia Castro CG 2012

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

Hay diversas alternativas

Silvia Castro CG 2012

Modelado Poligonal

Silvia Castro CG 2012

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.

En el caso general, un objeto posee superficies curvas y las caras planas


son una aproximación a tal superficie.

Silvia Castro CG 2012

Introducción
¿Por qué es la técnica dominante?

• Cualquier objeto puede modelarse con polígonos (casi cualquier


objeto)
– Normalmente hay un error asociado con la conversión, pero
con tiempo y espacio disponibles puede ser posible reducir
este error
• Sabemos cómo renderizar polígonos rápidamente
• Muchas operaciones son sencillas de hacer con polígonos
• Espacios de memoria y de disco baratos
• Simplicidad

Pero, ¿cuáles son las desventajas de las representaciones poligonales?

Silvia Castro CG 2012

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?

Silvia Castro CG 2012

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

Silvia Castro CG 2012

16
Introducción
Usaremos redes (o meshes) para modelar tanto formas cerradas
como abiertas.

El objeto se considera cerrado si las caras poligonales unidas


encierran un espacio.

En el otro caso, las caras poligonales se unen pero no encierran


ningún espacio; representan una superficie extremadamente fina.

En ambos casos, a esta colección de polígonos la llamaremos red


poligonal.

Silvia Castro CG 2012

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)

Silvia Castro CG 2012

17
Redes Poligonales
Distintas librerías brindan algunas
formas básicas como:

- Cilindro
- Cono
- Esfera
- Cubo

Y otras formas más avanzadas como:

- La
L tetera
t t d Newell
de N ll (o
( de
d Utah)
Ut h)
- Dodecaedro
- Toroide
-…

Silvia Castro CG 2012

Redes Poligonales
Cada objeto estará representado por:

• Su geometría
• Su topología
• Sus atributos

La geometría y la topología están básicamente dadas por una red


poligonal. Al conjunto de la red poligonal y los atributos se lo llama
habitualmente red.
Más precisamente podemos decir entonces que una red poligonal es una
colección de vértices, lados y polígonos conectados de modo tal que cada
lado es compartido a lo sumo por dos polígonos. Un lado conecta dos
vértices y puede ser compartido por dos polígonos adyacentes.
Una red poligonal puede representarse de varias formas, cada una con sus
ventajas y desventajas.

Silvia Castro CG 2012

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:

• Encontrar todos los lados incidentes en un vértice


• Encontrar todos los polígonos que comparten un lado o un vértice
• Encontrar los vértices conectados por un lado
• Encontrar los lados de un polígono
• Mostrar la red
•…

En general, cuanto más explícita sea la representación de las relaciones entre


polígonos, vértices y lados más eficientes en tiempo serán las operaciones pero
se necesitará más espacio para la representación.

Silvia Castro CG 2012

Redes Poligonales : Estructuras de Datos Simples

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?

Silvia Castro CG 2012

19
Redes Poligonales: Estructuras de Datos Simples

En una red poligonal de triángulos

• Cada vértice se repite, en promedio, 6 veces, es decir que se


desperdicia memoria

• Es caro identificar un triángulo adyacente

• Hay dificultades para asegurar que los polígonos se unan


correctamente.

Silvia Castro CG 2012

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

• Almacenar los vértices directamente para cada polígono implica


– Desperdicio de memoria – cada vértice se repite muchas veces
– Muy engorroso encontrar polígonos vecinos
– Difícil asegurar que los polígonos se unan correctamente
• Solución: Indirección
– Poner todos los vértices en una lista
– Cada cara almacena la lista de índices de sus vértices
• ¿Ventajas? Desventajas?

Silvia Castro CG 2012

20
Redes Poligonales: Estructuras de Datos Simples

En la representación con referencias a una lista de vértices, cada vértice se


almacena sólo una vez, en una lista de vértices;

V  (( x1 , y1 , z1 ),
) ( x2 , y2 , z 2 ),...,
) ( xn , yn , z n ))

Cada polígono se define como una lista de índices a la lista de vértices.

Tabla de Vértices Tabla de Caras

Silvia Castro CG 2012

Redes Poligonales: Estructuras de Datos Simples

Esta representación:

• Elimina la repetición de vértices

• Permite economizar espacio de almacenamiento:


• El índice puede ser de sólo 2 bytes en tanto que un vértice puede
almacenarse probablemente en 12 bytes.
• Cada vértice se usa 3 veces como mínimo, y generalmente de 4 a 6
veces, pero se almacena sólo una vez.

• Las normales, los colores, las coordenadas de textura, etc. pueden


almacenarse de la misma forma.

• No soporta el acceso directo a los triángulos vecinos (adyacencia), es


decir que la información de conectividad no es explícita.

Silvia Castro CG 2012

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

Silvia Castro CG 2012

Redes Poligonales
Triángulos Indexados

Silvia Castro CG 2012

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.

Silvia Castro CG 2012

Redes Poligonales
Strips de triángulos

Silvia Castro CG 2012

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.

Silvia Castro CG 2012

Redes Poligonales
Además de los vértices y las caras
que utilicemos para modelar el
objeto, también necesitamos
guardar las normales.
normales

En la figura puede verse una


representación para un tetraedro.

Silvia Castro CG 2012

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

• Normales por vértice:


– Un vector normal especificado por cada vértice (sombreado suave)
– Puede mantenerse un arreglo de normales análogo al arreglo de
vértices
– Las caras almacenan separadamente los índices a los vértices y a las
normales
– Permite compartir las normales independientemente de los vértices

Silvia Castro CG 2012

Almacenando más información


• Colores, Cordenadas de textura, ... también pueden tratarse como los
vértices y las normales
• Los coeficientes para Iluminación/Sombreado pueden ser por cara o por
objeto; raramente son por vértice.

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)

Silvia Castro CG 2012

25
Problemas
No hemos guardado información de adyacencia
• Las búsquedas se realizan en tiempo lineal

La adyacencia está implícita para redes estructuradas, pero ¿qué ocurre en


redes no estructuradas?

Entonces, además de:


• Información g
geométrica (p
(posición))
• Información de atributos (color, textura, temperatura, densidad de
población, etc.)

• Debemos almacenar:
• Información topológica (adyacencia, conectividad)

Silvia Castro CG 2012

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 )

Silvia Castro CG 2012

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!

Silvia Castro CG 2012

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

Silvia Castro CG 2012

27
Redes Poligonales
Hay determinadas relaciones que son constantes

V F

VE EE FE

Vértices que Caras que


Lados que
concurren a un concurren a un
concurren a un
lado lado
lado.

Silvia Castro CG 2012

Redes Poligonales
Otras relaciones son variables

E
VVi Vértices que concurren a un vértice

EVi Lados que concurren a un vértice.


V F
Caras que concurren a una cara
FFi

Caras que concurren a un vértice


FVi
Lados que concurren a una cara
EFi
Vértices que concurren a una cara
VFi

Silvia Castro CG 2012

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.

¿Cómo encontramos TODOS los triángulos que concurren a un vértice?

Silvia Castro CG 2012

Redes Poligonales
Representación Winged Edge para triángulos

Es una representación basada en lados.


Cada lado (orientado) apunta a:
- Lados izquierdo y derecho hacia adelante
en el recorrido según la orientación
- Lados izquierdo y derechos hacia atrás en el
recorrido según la orientación
- Vértice de atrás y de adelante
- Cara izquierda y derecha

Cada cara o vértice apunta a un lado

Silvia Castro CG 2012

29
Redes Poligonales
Representación Winged Edge para triángulos

Silvia Castro CG 2012

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

Silvia Castro CG 2012

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.

Silvia Castro CG 2012

Redes Poligonales
Para algunos objetos asociamos una normal a cada vértice; para otros,
asociamos una normal a cada cara.

Los vértices V1, V2, V3 y V4 definen la p


Para la superficie cilíndrica,,
pared lateral de la casa y tienen la misma tanto el vértice V1 de la cara F1
normal n1 (vector normal a la pared como el V2 de la cara F2 usan
lateral). la misma normal n, que es el
Vértices de la pared frontal, tal como V5, vector perpendicular a la
usarán la normal n2. (V1 y V5 están superficie suave subyacente.
ubicados en el mismo punto en el
espacio, pero usan normales diferentes)

Silvia Castro CG 2012

31
Redes Poligonales

Generación de objetos poligonales

Definimos entonces la red poligonal de la casa.

La casa tiene paredes, piso y


techo planos (7 caras a
representar).

Además hay sólo 7 vectores


normales diferentes cada uno
d éstos
de é t asociado
i d con cada
d
una de las caras.

Silvia Castro CG 2012

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

Silvia Castro CG 2012

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

Silvia Castro CG 2012

Redes Poligonales
Cara Vértices Normales

0 (izq) 0, 5, 9, 4 0,0,0,0

1 (techo izq) 3, 4, 9, 8 1,1,1,1

2 (techo der) 2, 3, 8, 7 2, 2, 2,2

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

Silvia Castro CG 2012

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

Silvia Castro CG 2012

Redes Poligonales
Creación de Objetos Poligonales mediante escaneo

• Los escáners láser muestrean posiciones 3D


– Pueden triangularse directamente
– Pueden tomarse imágenes para usarse como texturas
– Ejemplo famoso: Escaneo del David
• El software toma entonces miles de puntos y construye una
red poligonal a partir de éstos
• Tópicos que se investigan:
– Reducir la cantidad de puntos en la red
– Reconstrucción y remuestreo

Silvia Castro CG 2012

34
Redes Poligonales
Creación de Objetos Poligonales

Ejemplo de uso de un dispositivo automático

Silvia Castro CG 2012

Redes Poligonales

http://www-graphics.stanford.edu/projects/mich/

Silvia Castro CG 2012

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

Silvia Castro CG 2012

Redes Poligonales
Creación de Objetos Poligonales por Sweeping

Ejemplo:

perfil camino objeto

escalado torsionado

Silvia Castro CG 2012

36
Redes Poligonales
Creación de Objetos Poligonales

Generar un objetos por sweeping utilizando, en


algunos
g casos,, descripciones
p matemáticas.

Extrusión perfil camino objeto

Revolución
Free-Form

Silvia Castro CG 2012

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

Silvia Castro CG 2012

37
Silvia Castro CG 2012

Silvia Castro CG 2012

38
Silvia Castro CG 2012

Silvia Castro CG 2012

39
Silvia Castro CG 2012

Silvia Castro CG 2012

40
Silvia Castro CG 2012

Silvia Castro CG 2012

41
Silvia Castro CG 2012

Silvia Castro CG 2012

42
Silvia Castro CG 2012

Silvia Castro CG 2012

43
Silvia Castro CG 2012

Silvia Castro CG 2012

44
Silvia Castro CG 2012

Modelado de Objetos 3D
Objeto Gráfico

Silvia Castro CG 2012

45
Modelado de Objetos 3D

Modelado del Objeto


Identificar las clases
Describir los atributos y
los métodos
(constructor/es,
comandos,consultas)
en cada clase
Establecer las
relaciones entre las
clases
Crear las clases

Silvia Castro CG 2012

Modelado de Objetos 3D

Silvia Castro CG 2012

46
Modelado de Objetos 3D

Silvia Castro CG 2012

Modelado de Objetos 3D

Silvia Castro CG 2012

47
Modelado de Objetos 3D
Objeto Gráfico

Geometría Formas Gráficas

Topología
Atributos
Primitivas Complejas

Mallas predefinidas Mallas definidas por el usuario

Primitivas Complejas

Esfera Cubo Toroide Red Poligonal Sup Paramétrica …

Silvia Castro CG 2012

Modelado de Objetos 3D

ObjetoGráfico

<<Atributos>>
private
partes: colección de FormaGráfica:

<<Constructores>>
<<Comandos>>
<<Consultas>>

Silvia Castro CG 2012

48
Modelado de Objetos 3D

FormaGráfica
<<Atributos>>
private
matTransf: Transformación
mat:Material

<<Constructores>>
<<Comandos>>
<<Consultas>>

Silvia Castro CG 2012

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

Silvia Castro CG 2012

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

Silvia Castro CG 2012

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

Silvia Castro CG 2012

50
Modelado de Objetos 3D

ObjetoGráfico * FormaGráfica

… * Pto3D
Cubo Esfera … … RedPolig
* Vec3D
*
Caras

*
IndVert
?
Silvia Castro CG 2012

Modelado de Objetos 3D

perfil camino objeto

Silvia Castro CG 2012

51
Modelado de Objetos 3D
Cómo generamos un objeto 3D mediante sweeping:

• Partir de un polígono inicial


– Dividir el camino en pequeños segmentos
– Crear una copia del polígono que se arrastra en cada
segmento
– Unir los vértices correspondiente entre polígonos
– Tener cuidado al cerrar. En las extrusiones debe verse si
se ponen tapas
• Las normales se derivan a medida que se hace el arrastrado
y se ve la orientación del camino
• El polígono de arrastre define un parámetro de textura y el
camino por el cual se arrastra define el otro

Silvia Castro CG 2012

Modelado de Objetos 3D

Red Sweep
<<Atributos>>
private
camino: Poligonal
perfil: Poligonal
tapas?

<<Constructores>>
<<Comandos>>
<<Consultas>>

Silvia Castro CG 2012

52
Modelado de Objetos 3D

Red Sweep Revolución


<<Atributos>>
private
camino: Poligonal ?
perfil: Poligonal
tapas?
Paso

<<Constructores>>
<<Comandos>>
<<Consultas>>

Silvia Castro CG 2012

Modelado de Objetos 3D

Red Sweep Arrastre


<<Atributos>>
private
camino: Poligonal o distancia
perfil: Poligonal

<<Constructores>>
<<Comandos>>
<<Consultas>>

Silvia Castro CG 2012

53
Redes Poligonales
Ejercicio: Generación de un cuerpo extrudado

Dado el polígono base que se muestra en la figura de la derecha y


p
suponiendo que realiza una extrusión en la dirección z,, ¿
q ¿cómo define el
modelo para el volumen generado? ¿Cuáles serían los datos
necesarios para generar el prisma? ¿Qué datos de salida deben
generarse?

Silvia Castro CG 2012

Redes Poligonales

Ejercicio: Generación de un cuerpo extrudado

Vemos que la base tiene vértices (xi, yi, 0) y la cara superior


tiene vértices (xi,
(xi yi,
yi 1).
1) Cada vértice (xi,
(xi yi,
yi 1) de la cara superior está
conectado con el correspondiente vértice (xi, yi, 0) de la base.

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.

Silvia Castro CG 2012

54
Redes Poligonales
Ejercicio: Generación de un cuerpo extrudado

Supongamos que la base del prisma es un polígono de n vértices (xi, yi).


Entonces numeramos los vértices de la base de 0, . . . , n-1 y los de la tapa
d n, . . ., 2n
de 2 -1,
1 de
d modo
d tal
t l que los
l lados
l d unan los
l vértices
é ti i y i + n.
La lista de vértices se construye entonces fácilmente conteniendo los puntos
(xi, yi, 0) y (xi, yi, 1), for i = 0, 1, ..., 5.

Cuidado! OpenGL puede dibujar de manera confiable sólo polígonos


convexos. ¿Cómo almacenamos entonces este prisma?

Silvia Castro CG 2012

Redes Poligonales
Ejercicio: Generación del domo del Taj Mahal

La generación de un sólido por revolución es equivalente a rotar una


polilínea alrededor de un eje, como se muestra en la figura.

Silvia Castro CG 2012

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

Silvia Castro CG 2012

Redes Poligonales
Ejercicio: Generación del domo del Taj Mahal

La curva perfil está en el plano xz y a la derecha de ésta se muestra la


superficie de revolución resultante. El perfil debe describirse mediante
una colección de puntos Pi = (xi, zi).

Silvia Castro CG 2012

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.

Silvia Castro CG 2012

Esfera genérica

• Centro (0, 0, 0), radio 1


• F(x, y, z) = x2 + y2 + z2 -1 = 0
• P(u,
( , v)) = (cos
( v cos u,, cos v sin u,, sin v),
), con 0 ≤v ≤ 2π,
-π/2 ≤ u ≤ π/2

Silvia Castro CG 2012

57
Cuádricas
Ejercicio: Cuádricas

En la figura se muestran distintas cuádricas y sus


ecuaciones implícitas y paramétricas. Elija una de
ellas y genere la red poligonal.

Silvia Castro CG 2012

Cuádricas
Ejercicio: Super Cuádricas

En la figura se muestran distintas Super


Cuádricas y sus ecuaciones implícitas
p y
paramétricas. Elija una de ellas y genere
la red poligonal.

Silvia Castro CG 2012

58
Almacenamiento de modelos 3D…

Hay muchos formatos que permiten guardar la información contenida en


un archivo 3D.

Muchos de los formatos existentes que contienen descripciones de la


geometría de los objetos son exclusivos de programas específicos y no
son portables.

Los formatos de archivos para transportar información geométrica entre


programas de modelado se denominan a menudo formatos de archivo
universales. Los más populares son los OBJ y DXF.

El OBJ (Object) fue popularizado por los productos de Alias/Wavefront


para la producción de animaciones y efectos visuales. El DXF (Drawing
Interchange Format) fue desarrollado por Autodesk para manejar
información geométrica 2D y 3D y es ampliamente utilizado en
aplicaciones CAD (Computer Aided Design).

Silvia Castro CG 2012

… Almacenamiento de modelos 3D…

Aún cuando se usen formatos universales para guardar información 3D,


hay pequeñas diferencias en cómo diferentes programas interpretan la
información.

Los archivos DXF, por ejemplo, contienen determinada información 2D


que a menudo es descartada cuando se importa en software 3D.

La mayoría de los programas 3D ofrecen algún grado de conversión de


archivos. Esto se brinda mayormente a través de la exportación y la
importación.

Los programas, cuando cargan el arhivo, lo convierten habitualmente a


formas nativas.

Ocurre habitualmente que, por ejemplo, no todos los aspectos de un


determinado formato son soportados por todos los programas que son
capaces de leer archivos de ese formato. Ej: transparencias.

Silvia Castro CG 2012

59
Silvia Castro CG 2012

60

También podría gustarte