Computación Gráfica

Download Report

Transcript Computación Gráfica

Computación Gráfica
Describiendo
formas
Construyendo objetos en
computación gráfica
Semestre 201321
CRN
Septiembre 2012 – Febrero 2013
Ciro Durán
Ingeniero en Computación
[email protected]
http://www.ciroduran.com
@chiguire
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Definición de objetos 3D (1/3)
• Líneas y líneas poligonales:
– Líneas poligonales: líneas dibujadas entre puntos
ordenadas
– Una línea poligonal cerrada es un polígono, un polígono
simple no tiene intersecciones consigo mismo
not closed,
simple polyline
Polígono simple,
línea poligonal cerrada
Polígono no-simple,
línea poligonal cerrada
• Polígonos convexos y cóncavos:
– Convexo: línea entre cualesquiera dos puntos está dentro
del polígono
– Cóncavo: al menos una línea entre dos puntos se sale del
polígono
convexo
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
cóncavo
Definición de objetos 3D (2/3)
• Polígonos especiales
– Triángulo
– Cuadrado
– Rectángulo
Triángulo
Cuadrado
Rectángulo
• Círculos
– Conjunto de todos los puntos
equidistantes a un punto llamado
centro.
– La distancia del centro es el radio r
– La ecuación para un círculo
centrado en (0,0) es r2 = x2 + y2
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
(x, y)
(0, y)
r
(0, 0)
(0, x)
Definición de objetos 3D (3/3)
•
Un círculo se puede aproximar con un polígono de muchos lados.
•
Elipse alineada a un eje: un círculo escalado en la dirección x y/o y.
6
6
5
5
4
4
3
3
2
2
1
1
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9
10
Escalado 2 veces en el eje x y no escalada en el eje y. El ancho cambia de 3.5 a 7.
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Representando formas
• Tablas de vértices y aristas
– Propósito general, mínima sobrecarga, razonablemente
eficiente
– Cada vértice se lista una sola vez
– Cada arista es un par ordenado de índices de la lista de
vértices
Vértices
Aristas
E3
E
0
(0, 0)
0
(0, 1)
1
(2, 0)
1
(1, 3)
2
(0, 1)
2
(3, 4)
3
(2, 1)
3
(4, 2)
4
(1, 1.5)
4
(2, 0)
V4
V2
V3
E4
V0
2
E1
E0
V1
– Suficiente para dibujar formas y ejecutar operaciones
simples (transformaciones, puntos fuera/adentro)
– Las aristas se declaran en sentido contrario a las agujas
del reloj por convención
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Splines (1/5) - representando
curvas generales
• Podemos representar cualquier línea poligonal con vértices y
aristas. ¿Qué hay de las curvas?
– No queremos almacenar curvas como gráficos raster (por
aliasing, no es escalable, consume memoria). Necesitamos una
representación matemática más eficiente.
– Almacenar punto de control en una lista, encontrar una forma de
interpolar suavemente entre ellos.
• Aproximación lineal por partes
– No es liso, se ve feo sin muchos puntos de control
• Funciones trigonométricas
– Difíciles de manipular y controlar, computacionalmente caro de
computar
• Polígonos de orden alto
– Relativamente barato de computar, tan solo un poco más difícil
de operar que las líneas poligonales
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Splines (2/5) – tipos de splines y
usos
•
•
Interpolación polinomial se usa típicamente. Los splines son curvas
paramétricas de segundo o tercer orden, manejado por puntos de control o
vectores de control.
Usado por primeras veces en la industria automotriz y aérea para alcanzar
suavidad - incluso pequeñas diferencias pueden hacer una gran diferencia
en eficiencia y calidad
V0
V2
Spline
aproximante
V1
•
Spline interpolante
V5
V3
Aproximación
por polilínea
V4
Usado para:
Los splines existen aún fuera de las
computadoras. Ahora se llaman
curvas flexibles.
– Representando formas lisas en 2D como delineados o en 3D usando "parches"
parametrizados con dos variables: s y t (ver lámina XX)
– Caminos de animación para hacer "tweening" entre fotogramas
•
Aproximar funciones "caras" (los polinomios son más baratos que log, sen,
cos,...)
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Splines (3/5) – curvas de
Hermite
• Líneas poligonales son interpolaciones lineales (polinomios de
primer orden) entre puntos
– Dados los puntos P y Q, la línea entre los dos está dada por la
ecuación paramétrica:
𝑥 𝑡 = 1 − t P + tQ,
0≤t≤1
– (1-t) y t son llamadas funciones de ponderación para P y Q
• Los splines son interpolaciones polinomiales de orden alto entre
puntos
– Como las interpolaciones lineales pero con funciones de poderación de
orden más alto, permitiendo mejores aproximaciones / curvas más lisas
• Una representación - curvas de Hermite (spline interpolante):
– Determinado por dos puntos de control P y Q, un vector tangente inicial
v y un vector final tangente w.
𝛾 𝑡 = 2𝑡 3 − 3𝑡 2 + 1 𝑃 + −2𝑡 3 + 3𝑡 2 𝑄
– Satisface:
+ 𝑡 3 − 2𝑡 2 + 𝑡 𝑣 + 𝑡 3 − 𝑡 2 𝑤
• 𝛾 0 =𝑃
• 𝛾 1 =𝑄
• 𝛾′ 0 = 𝑣
• 𝛾′ 1 = 𝑤
𝑄: 𝑡 = 1
𝑃: 𝑡 = 0
v
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
w
𝛾
Splines (4/5) – Ponderación de
Hermite explicada
• Splines polinomiales tienen
funciones de ponderación más
complejas que las líneas
Funciones polinomiales de
ponderación en la ecuación de
curva de Hermite
– Coeficientes de P y Q ahora
son polinomios de tercer grado.
• En t = 0:
– Coeficiente de P es 1, todos los
demás 0
– Derivada del coeficiente de v es
1, derivada de todas las demás
es 0
1
coeficiente de 𝑃
coeficiente de 𝑣
coeficiente de 𝑄
Coeficiente de 𝑤
• En t = 1:
– Coeficiente de Q es 1, todos los
demás 0
– Derivada del coeficiente de w
es 1, derivada de todas las
demás es 0
(0, 0)
• Se puede secuenciar para
hacer curvas más complejas
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
1
𝑡
Splines (5/5) – Curvas de
Bezier
• La representación de Bezier es
similar a la de Hermite
– 4 puntos en vez de 2 puntos y 2
vectores (P1 … P4)
– Posición inicial P1, vector tangente es
P2 - P1
– Posición final P4, vector tangente es P4
- P3
– Esta representación permite que el
spline sea almacenado como una lista
de vértices junto con un parámetro
global que describa la suavidad y
continuidad
• Los splines de Bezier son
ampliamente utilizadas para la
definición de fuentes (Adobe,
Microsoft)
• www.cs.brown.edu/exploratories/freeSoftware/repository/edu/brown/cs/exploratories/applets/bezierSplines/bezier_splines_guide.html
Ver el siguiente applet para más
sobre splines.
Crédito de la imagen: http://miphol.com/muse/2008/04/25/Bezier-courbes-anim.gif
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
"Vértices en movimiento" Definición de objetos
• Una línea se dibuja trazando un punto mientras se
mueve (una dimensión agregada)
• Un rectángulo se dibuja trazando los vértices de una
línea a medida que se nueve perpendicularmente a sí
misma (2da dimensión agregada)
• Un prisma rectangular se dibuja trazando los vértices
de un rectángulo a medida que se mueve
perpendicularmente a sí mismo (3ra dimensión)
• Un círculo se dibuja trazando un punto rotando
alrededor de una distancia fija a un punto central.
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Construyendo primitivas 3D
•
Hechos de primitivas 2D y 1D
•
Los triángulos son los que más se
utilizan
Muchos triángulos usados para un solo
objeto es una malla triangular.
•
Los splines se utilizan para describir
bordes de los "parches" - se pueden
"coser" para representar superficies
curvas
𝑥 𝑠, 𝑡 = 1 − 𝑠
+ 1 −𝑠
3
3
∗ 1 − 𝑡 3 ∗ 𝑃1,1
∗ 3𝑡 1 − 𝑡
2
∗ 𝑃1,2 + …
Crédito de la imagen (Stanford Bunny):
http://mech.fsv.cvut.cz/~dr/papers/Habil/img1007.gif
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Mallas de triángulos
• La representación más común de las formas en tres
dimensiones
• Todos los vértices de un triángulo se garantizan que están en
un solo plano (no es cierto para cuadriláteros u otros
polígonos)
• Su uniformidad hace que sea simple ejecutar operaciones de
mallas, tales como subdivisión, simplificación, transformación,
etc.
• Muchas formas diferentes de representar mallas triangulares
• Más información:
http://en.wikipedia.org/wiki/polygon_mesh
– Transformación y deformación de
mallas
– Técnicas de generación procedimental
Crédito de la imagen:
http://upload.wikimedia.org/wikipedia/en/f/fb/Dolphin_triangle_mesh.png
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Representación de mallas
triangulares
• Tablas de vértices y caras,
análogo a las tablas de
vértices y aristas 3D
• Cada vértice se lista una sola
vez, los triángulos se listan
como tripletes ordenados de
índices a la tabla de vértices
Lista de vértices
– Aristas inferidas de los
triángulos
– A menudo es útil almacenar las
caras asociadas a los vértices
(ej. para computar normales:
promedio de normales de los
vértices de las normales de las
caras que les rodean)
• Los vértices se lista en orden
contrario a las agujas del reloj
en la tabla de caras.
v0
0, 0, 0
f0 f1 f12 f15 f7
v1
1, 0, 0
f2 f3 f13 f12 f1
v2
1, 1, 0
f4 f5 f14 f13 f3
v3
v4
v5
v6
0, 1, 0
0, 0, 1
1, 0, 1
1, 1, 1
f6
f6
f0
f2
v7
v8
v9
0, 1, 1
.5, .5, 0
.5, .5, 1
f4 f5 f6 f11 f10
f8 f9 f10 f11
f12 f13 f14 f15
v4
f8
v5
f0
f11
v8
f9
f7
f7
f1
f3
Lista de caras
f0
f1
f2
f3
f4
f5
f6
f7
f8
f9
f10
f11
f12
f13
f14
f15
f15 f14 f5
f0 f8 f11
f2 f9 f8
f4 f10 f9
v7
v0
v0
v1
v1
v2
v2
v3
v3
v8
v8
v8
v8
v9
v9
v9
v9
v4
v5
v5
v6
v6
v7
v7
v4
v5
v6
v7
v4
v5
v6
v7
v4
v5
v1
v6
v2
v7
v3
v4
v0
v4
v5
v6
v7
v4
v5
v6
v7
f10
v6
f2
f1
f3
v0
v1
v2
– Ahora no es sólo por
convención. Este orden
Diagrama usado bajo licencia Creative Commons Attribution license. Created by Ben Herila based on
http://upload.wikimedia.org/wikipedia/en/thumb/2/2d/Mesh_fv.jpg/500px-Mesh_fv.jpg
diferencia el frente y el trasero
de una cara.
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán