Computación Geométrica – 2010/2011
Jorge Calvo Zaragoza
Fundamentos de POV-Ray
Índice
1. Introducción
2. Fundamentos del trazado de rayos
3. Construcción de escenas con POV-Ray
4. Geometría sólida constructiva
5. Conclusiones
6. Referencias
Introducción
Introducción
POV-Ray, Persistence of Vision Raytracer
Software para el desarrollo de escenas foto-realistas
Licencia POV-Ray
Multiplataforma
Lenguaje de definición parecido a C
Metodología del trazado de rayos
Soporte para animación
4
¿Qué se puede hacer con POV-Ray?
5
POV-RayTeam
¿Qué se puede hacer con POV-Ray?
6GillesTran
¿Qué se puede hacer con POV-Ray?
7
Tom Aust
Fundamentos del trazado de rayos
Trazado de rayos
Es una técnica de rendering
Basado en el funcionamiento real de la visión
Tres elementos fundamentales en el trazado de rayos:
Cámara
Objeto
Luces
9
Trazado de rayos
Un rayo se define como la semirecta
r + td
r: punto inicial
d: dirección
t: valor paramétrico[0,+inf]
10
Trazado de rayos
Funcionamiento natural
La luces envían rayos en todas direcciones
Al intersectar con un objeto, la luz se refleja en una dirección
La luz reflejada en la dirección de la cámara es lo que se ve
Problema: muy ineficiente
11
Trazado de rayos
Funcionamiento inverso
Los rayos se lanzan desde la cámara en cada posición posible
Desde el objeto se envía un rayo hacia cada fuente de luz
Por tanto, dos tipos de rayos:
Rayo de visión (cámara-objeto)
Rayos de sombra (objeto-luz)
12
Trazado de rayos
Funcionamiento inverso
Rayos de visión
Para cada píxel de la ventana de emisión se envía un rayo
Se calcula la intersección del rayo con cada objeto de la escena
De esta intersección se obtiene un conjunto de valores
13
Trazado de rayos
Funcionamiento inverso
Rayos de visión
El trazador de rayos debe resolver todas las intersecciones
Al final se queda con el menor valor (más cercano)
Desde el punto final obtenido se envían los rayos de sombra
14
Trazado de rayos
Funcionamiento inverso
Rayos de visión
Problema: Se calculan demasiadas intersecciones nulas
POV-Ray divide la escena en diferentes zonas y agrupa los objetos
en primitivas geométricas sencillas (bounding)
Se pueden hacer agrupaciones recursivamente
Sólo se calculan las intersecciones con un objeto si el bounding
que lo contiene intersecta con el rayo
15
Trazado de rayos
Funcionamiento inverso
Rayos de sombra
Un rayo hacia cada fuente de luz
La luz se emite en todas direcciones
Hay que comprobar si el rayo de sombra intersecta con un objeto
Se repiten las mejoras aplicadas a los rayos de visión
Si el rayo llega a luz, se tiene en cuenta para el cálculo final
Al final la iluminación del punto depende del modelo de
iluminación y las fuentes de luces que intervienen
16
Trazado de rayos
Funcionamiento inverso
Otro tipo de rayos
Rayos de reflexión
Para superficies reflectantes
Se calcula el ángulo de reflexión y se envía un nuevo rayo
Rayos de transmisión
Para objetos parcial o totalmente transparentes
Se calcula el desvío que se produce y se envía un nuevo rayo
17
Trazado de rayos
Limitaciones
Aliasing
Objetos lejanos o pequeños
Sombras
Composición de la luz
Reflexión especular de la luz
Reflexión difusa de la luz
18
Construcción de escenas en POV-Ray
Escenas en POV-Ray
Nociones básicas
Sistema de coordenadas
Regla de la mano izquierda
Elementos básicos
Cámara
Luces
Objetos
20
Escenas en POV-Ray
Definición de la cámara
Lugar (location)
Dirección (look_at)
21
camera
{
location <x,y,z>
look_at <x,y,z>
}
Escenas en POV-Ray
Definición de luces
Posición
Color
22
light_source
{
<x,y,z>
color <r,g,b>
}
Escenas en POV-Ray
Primitivas básicas: esfera
Punto central
Radio
23
sphere
{
<x,y,z> // Centro
radio
}
Escenas en POV-Ray
Primitivas básicas: cubo
Vértice inferior izquierdo cercano (V1)
Borde superior derecho lejano (V2)
24
box
{
<x,y,z> // V1
<x,y,z> // V2
}
Escenas en POV-Ray
Primitivas básicas: cilindro
Centro de la base
Centro de la tapa
Radio
25
cylinder
{
<x,y,z> // Base
<x,y,z> // Tapa
radio
}
Escenas en POV-Ray
Primitivas básicas: plano
Normal
Desplazamiento
26
plane
{
<x,y,z> // Normal
desplazamiento
}
Escenas en POV-Ray
Transformaciones
Rotación
Traslación
Escalado
27
objeto
{
…
tranlate valor*<x,y,z>
rotate valor*<x,y,z>
scale valor*<x,y,z>
}
Escenas en POV-Ray
Color
Fondo
28
objeto
{
…
pigment { colour <r,g,b> }
}
background
{
colour <r,g,b>
}
Escenas en POV-Ray
Escena de ejemplo
29
camera
{
location <0,5,-10>
look_at <0,0,10>
}
light_source { <0,5,-3> colour <1,1,1> }
background { colour <0.2,0.2,0.88> }
sphere { <0,2,0> 1 pigment { colour <1,0,0> } }
plane { <0,1,0> 0 pigment { colour <0,1,0> } }
Escenas en POV-Ray
Escena de ejemplo
30
Escenas en POV-Ray
Otras primitivas
Triángulos
Cuádricas
Toroides
Conos
Isosuperficies
Superficies libres
31
Geometría Sólida Constructiva
Geometría Sólida Constructiva
CSG, Constructive Solid Geometry
Técnica de modelado de sólidos
Puntos interiores y exteriores
Crea objetos a partir de la combinación de otros
La combinación se produce mediante el uso de operadores del
algebra de conjuntos (unión, intersección y diferencia)
33
Operadores CSG
Unión
El conjunto resultante contiene todos los objetos
Sólo sirve para tratar varios objetos como si fuera uno
Produce el mismo resultado que dibujarlos por separado
34
Operadores CSG
Unión
Sintaxis:
35
union
{
OBJETO1
OBJETO2
...
OBJETO N
[MODIFICADORES]
}
Operadores CSG
Unión
Ejemplo
36
Operadores CSG
Fusión
Une objetos de forma homogénea
Elimina las aristas interiores
Mismo resultado que la unión salvo para objetos transparentes
37
Operadores CSG
Fusión
Sintaxis:
38
merge
{
OBJETO1
OBJETO2
...
OBJETO N
[MODIFICADORES]
}
Operadores CSG
Fusión
Ejemplo
39
Operadores CSG
Intersección
Da como resultado los puntos que tienen los objetos en común
40
Operadores CSG
Intersección
Sintaxis:
41
intersection
{
OBJETO1
OBJETO2
...
OBJETO N
[MODIFICADORES]
}
Operadores CSG
Intersección
Ejemplo
42
Operadores CSG
Diferencia
Extrae los puntos que tiene en común un objeto con otro
Equivalente a la intersección del objeto con el inverso del otro
Operación no conmutativa (importa el orden)
Si se usa con varios objetos se sustraen todos al primero
43
Operadores CSG
Diferencia
Sintaxis:
44
difference
{
OBJETO1
OBJETO2
...
OBJETO N
[MODIFICADORES]
}
Operadores CSG
Diferencia
Ejemplo
45
Geometría Sólida Constructiva
Ejemplo complejo
46
Trazado de rayos en CSG
El trazado de rayos se basa en el cálculo de intersecciones
¿Cómo se representa un objeto CSG?
Estructura que almacena operaciones y primitivas
Árbol binario
Hojas: primitivas
Nodos interiores: operaciones
47
Trazado de rayos en CSG
48
Trazado de rayos en CSG
El trazado de rayos se basa en el cálculo de intersecciones
¿Cómo se obtienen los valores de las intersecciones?
La intersección entre un objeto y un rayo produce un conjunto
de valores paramétricos
Se obtienen estos conjuntos en las primitivas
Se aplican las operaciones del CSG sobre estos conjuntos
Recorrido ascendente desde las hojas hasta la raíz
49
Trazado de rayos en CSG
Posibles casos
No solapamiento
Solapamiento parcial
Solapamiento total
50
Trazado de rayos en CSG
Eficiencia
Calcular la intersección de un CSG tiene una gran complejidad
Puede que se calculen muchas intersecciones nulas
Mejora
Bounding-box que contenga todas las primitivas (hojas)
Sólo se recorre el árbol si el bounding-box intersecta con el rayo
51
Conclusiones
Conclusiones
Trazado de rayos
Mediante el trazado de rayos se pueden conseguir imágenes foto-realistas.
Esta técnica se basa en las intersecciones de semirectas (rayos) con modelos matemáticos (objetos).
Construcción de escenas
POV-Ray permite definir escenas de forma sencilla.
Geometría sólida constructiva
Se pueden construir objetos complejos a partir de la combinación de primitivas sencillas y operadores del álgebra booleana.
53
Referencias
Referencias
• An introduction to ray tracing. Glassner, Andrew S.
• Ray tracing II. Young, Chris
• http://www.povray.org/documentation/
• http://www.cs.auckland.ac.nz/~jli023/opengl/pov-ray.htm
• http://library.thinkquest.org/3285/tutorial/intro.html
55