Curvas y Superficies
Gráficos y Visualización 3D
Presentación
•
•
•
•
Carlos Garre del Olmo
[email protected]
Despacho 2011-C (Ampliación Rectorado)
GMRV (Grupo de Modelado y Realidad
Virtual)
Contenidos del tema
•
•
•
•
•
•
1. Introducción
2. Curvas de Bezier
3. Curvas de Bezier a Trozos
4. B-Splines
5. NURBS
6. Superficies
1. Introducción
• Cuerpos de seres vivos: más
curvas que rectas.
• Fabricamos objetos a nuestra
semejanza: coches, aviones…
(aerodinámica).
• Las
curvas
son
sencillas
matemáticamente, y en cambio
es muy complicado modelarlas
mediante polígonos (triángulos).
La tetera de Utah
•
•
•
•
GLUT (OpenGL): cubo, esfera, y… ¡tetera!
Martin Newell (1975): Parches de Bezier.
Icono del mundo de los gráficos.
Importante referencia para evaluar los
resultados de un nuevo algoritmo.
2. Curvas de Bezier
• En 1959, de Casteljau (Citroën), idea una
formulación matemática para diseñar las
formas curvas de los coches.
• Posteriormente (1966), Bezier (Renault)
llega a las mismas conclusiones, pero
partiendo de otro desarrollo matemático.
• Bezier fue el que publicó sus resultados.
2.1. Curvas de Bezier: Idea intuitiva
• Se definen por una serie de puntos
de control.
• La curva siempre empieza en el
primer punto, y termina en el último.
• Los puntos intermedios “atraen” hacia
si a la curva.
2.1. Curvas de Bezier: Lineales (Grado 1)
• Sólo dos puntos de control (P0 y P1).
• Son líneas rectas.
• Podemos recorrer la curva con un
parámetro t є [0,1] que recorre la
recta de P0 a P1.
Animación sacada de Wikipedia
2.1. Curvas de Bezier: Cuadráticas (Grado 2)
• Tres puntos de control (P0, P1 y P2).
• Se construyen dos curvas lineales de
Bezier entre P0-P1 y P1-P2.
• Se construye una tercera curva lineal de
Bezier entre las dos anteriores.
• El t que recorre esta tercera recta, forma
nuestra curva.
Animación sacada de Wikipedia
2.1. Curvas de Bezier: Cúbicas (Grado 3)
• Cuatro puntos de control (P0, P1, P2 y P3).
• Son las más utilizadas.
• Se aplica el mismo principio de inducción,
partiendo inicialmente de tres curvas de
Bezier lineales.
• Asi se pueden generar curvas de cualquier
grado.
Grado 3
Grado 4
Animación sacada de Wikipedia
2.2. Curvas de Bezier:
Formulación de De Casteljau
•Primera columna: puntos de control.
•Segunda columna: curvas lineales.
•Tercera columna: Curva de Bezier de grado 2.
•Es una forma recursiva de construir las curvas.
•Caso general: los tiempos t son diferentes en cada
columna: Teoría de Blossoms.
2.3. Curvas de Bezier:
Formulación con polinomios de Bernstein
•Una curva de Bezier de grado N responde a esta fórmula:
Donde Pi son los puntos de control, y Bi,n los llamados Polinomios
de Bernstein.
•Al evaluar cada polinomio de Bernstein en el tiempo t, el
resultado es un escalar, que se aplica como un peso a cada punto
de control.
•Expresión de los polinomios de Bernstein:
Ejercicio en la pizarra
2.4. Curvas de Bezier: Propiedades (I)
• Sólo interpolan en los puntos de control
inicial y final.
• La curva no escapa de la envolvente
convexa.
2.4. Curvas de Bezier: Propiedades (II)
• Invarianza afín: Puedo aplicar transformaciones
afines sin tener que recalcular todo.
• La curva de Bezier con N+1 puntos de control es
un polinomio de grado N.
• La modificación de un punto de control afecta a
toda la curva (la curva es una suma ponderada de
los puntos de control).
• Las curvas sólo pueden ser enteramente rectas o
enteramente curvas.
2.5. ¿Qué se puede hacer con Curvas de Bezier?
2.6. Subdivisión de Curvas de Bezier
•En la práctica, las curvas de Bezier no se pintan, sino que se
aproximan mediante segmentos (o triángulos, si estamos en 3D).
•Para ello necesitamos ir dividiendo la curva en curvas más pequeñas,
hasta que tengamos una composición de curvas muy pequeñas, cada una
de las cuales se puede aproximar por un segmento.
3. Curvas de Bezier a Trozos
• Normalmente no se usan curvas de Bezier de
grado > 3.
• Para generar figuras más complejas, se pueden
unir varias curvas de grado pequeño, obteniendo
una curva formada por trozos.
3.1. Bezier a Trozos: Continuidad
•Es fundamental controlar cómo queremos que se
unan nuestros trozos.
•
•
•
•
Continuidad C0: nos basta con que el último punto de control de una
curva Si sea igual al primer punto de control de la siguiente curva
Si+1.
Genera uniones bruscas y con picos.
Continuidad C1: en este caso no sólo deben coincidir los puntos de
los extremos, sino también sus derivadas laterales.
Genera uniones suaves.
Continuidad G1: en este caso no es estrictamente necesario que las
derivadas coincidan, sino sólo que sean proporcionales.
Menos restrictivo que C1, y en muchos casos suficiente.
Continuidad C2: deben coincidir también las derivadas segundas.
A veces es deseable en 3D.
Se verá más claro con ejemplos
3.1. Bezier a Trozos:
Continuidad C0
3.1. Bezier a Trozos:
Continuidad C1
•Gráficamente, además de coincidir el
extremo de ambas curvas (Pi), este extremo
y los dos puntos adyacentes (Pi-1 y Pi+1)
deben estar en la misma recta.
•Además, se cumple:
Distancia (Pi-1, Pi) = Distancia (Pi, Pi+1)
3.1. Bezier a Trozos:
Continuidad G1
•Además de coincidir el extremo de ambas
curvas (Pi), este extremo y los dos puntos
adyacentes (Pi-1 y Pi+1) deben estar en la
misma recta (igual que en C1).
•No es necesario que las distancias sean
iguales.
3.2. Curvas de Bezier a Trozos:
Propiedades
• Envolvente convexa fuerte: seguimos teniendo la
curva confinada.
• Control local: al mover un punto modificamos sólo
una curva (o a lo sumo dos, si se trata de un punto
de unión); esto no ocurría en Bezier simple.
• Se pueden combinar curvas y rectas en una única
figura contínua.
• Podemos modelar figuras muy complejas.
4. B-Splines
• Caso más general que Bezier.
Las curvas de Bezier son un tipo de B-Splines.
• Ventaja sobre Bezier: los puntos de control no se
alejan tanto de la forma que queremos modelar, por
lo que podemos asemejarnos más al modelo sin
necesidad de utilizar muchos puntos de control.
• Propiedades:
– Envolvente convexa.
– Invarianza afín.
– Control local.
4.1. B-Splines: Formulación
• Similar a Bezier:
• Aquí en lugar de polinomios de Bernstein tenemos
Funciones de Base.
• Diferentes configuraciones de nodos nos dan
diferentes propiedades (nodos uniformes, nodos
clamped, …).
• El grado (k) de las funciones de base define la
precisión y suavidad de la curva.
Grado 0
Grado 1
Grado 2
5. Curvas racionales (NURBS)
• NURBS = Non Uniform Rational B-Splines.
• Caso más general:
los B-Splines y las curvas de Bezier son casos
particulares de NURBS.
• No son simples polinomios, sino cocientes de
polinomios.
6. Superficies
• ¡Entramos en las 3 Dimensiones!
• Ejemplo:
generamos una curva en 2D en el plano XY, y la
desplazamos a lo largo de otra curva en el plano
YZ.
• Caso más general: curva
NURBS moviéndose a lo
largo de otra curva NURBS.
Conclusiones
• NURBS > B-Splines > Bezier.
• Todos estos métodos son ayudas para el modelado,
pero en el renderizado la GPU siempre va a utilizar
triángulos.
• El diseñador gráfico puede modelar formas curvas
con facilidad y de forma intuitiva, y a la hora de
renderizar se aplicará un algoritmo de subdivisión
para convertir todo en triángulos.
Descargar

GV3D_ Curvas _0708