lunes, 10 de septiembre de 2012

Animación 3D, Shading: Materiales transparentes [Blogs experimentales] [Blender]


En cualquier programa de modelado y edición 3D disponemos de unos parámetros que definen las propiedades de cada material.

La transparencia o grado de opacidad del objeto es una de las características más complejas a simular.

Para manipular objetos transparentes usaremos un valor que mide la opacidad (contrario de la transparencia) . Un valor nulo representará un objeto completamente transparente, mientras que el máximo valor se asignará para objetos totalmente opacos.



La transparencia tiene asociado otro parámetro que gobierna el cambio de dirección de los rayos de luz que atraviesan dicho material, es el coeficiente de refracción; los cálculos que efectúa el software para simular estos efectos están basados en la "Ley de Snell".

La refracción es el cambio de dirección que experimenta una onda al pasar de un medio material a otro. Sólo se produce si la onda incide oblicuamente sobre la superficie de separación de los dos medios y si éstos tienen índices de refracción distintos. La refracción se origina en el cambio de velocidad de propagación de la onda. (Wikipedia)

Ley de refracción (Ley de Snell) (Fuente wikipedia)

Esta ley nos indica cómo cambia de dirección un rayo de luz al pasar de un medio a otro, por ejemplo del agua al aire, al incidir bajo un ángulo determinado respecto de la normal a la superficie de separación de ambos medios, y se modeliza según la siguiente expresión:

n_1\sin\theta_1 = n_2\sin\theta_2\
Donde: 
  • n1 = índice de refracción del primer medio, 
  • θ1= Ángulo de Incidencia, 
  • n2 = índice de refracción del segundo medio
  • θ2 = ángulo de refracción.


Efecto de Refracción y Reflexión

La aplicación de transparencias a los objetos debe contemplarse desde tres puntos de vista diferentes:

  • Distorsión de la imagen
  • Mezcla de Luz y Color
  • Sombras arrojadas
Veamos con más detalle a qué nos referimos.


Distorsión de la imagen


El efecto visible de la refracción es una distorsión de la imagen.

Un sencillo ejemplo lo vemos cuando metemos un lápiz en un vaso y parece estar partido.

En las siguientes secuencias, se ha calculado la misma imagen en primer lugar usando un cierto valor para la refracción y a continuación sin efecto de refracción.





En realidad cada vez nos cuesta más ver este ejemplo en la vida real, ya que las "leyes de la Gestalt", en particular las relativas a la experiencia, nos dicen que el lápiz es contínuo y nuestra percepción anula parcialmente este efecto visual. Con una foto podremos observarlo sin interferencias cognitivas.


Mezcla de Luz y Color

El color utilizado para la superficie transparente modifica los colores de los objetos que deja ver. Añade o sustrae iluminación en cada uno de los canales, dependiendo de si contiene esas componentes o no.

En las siguientes imágenes podemos observar el efecto de superponer una lámina semitransparente coloreada sobre cada uno de los cubos con los colores básicos;

La composición o mezcla de colores dependerá del modo de cálculo en cada caso, lo importante es anticipar el resultado basándonos en un modelo de análisis sencillo.


Sombras arrojadas

Las sombras arrojadas pueden difuminarse eliminando su "dureza". Este efecto de difuminación se produce cuando hay fuentes de luz múltiples, pero también puede asociarse a efectos atmosféricos, al colisionar los rayos de luz con partículas en suspensión o debido a los rebotes aleatorios que se producen en las superficies rugosas.

Un primer caso interesante se produce en las escenas con ventanas. La sombra de las zonas transparentes se convierte en iluminación, invirtiendo su efecto.



Cuando hay varias formas transparentes que se superponen se crean fenómenos de refracción de la luz, ya que las sombras pueden alterar su trayectoria. 

La sombra adquiere parte del color del objeto, y se funde con los colores de la escena;  si se suaviza mediante un supermuestreo en raytracing (se calculan varios rayos para cada punto, muy próximos) se produce un difuminado similar a un spray de pintura.


Al igual que el trazado de sombras y la refracción, la reflexión especular se realiza con raytracing. Permite "reflejar" unas superficies sobre otras, añadiendo color (iluminación).



Aplicación con Blender

Blender permite dispone de dos "modos"  de render para simular el efecto de transparencia:

  • ScanLine: Un buffer de sombras con la proyección desde el punto de luz.
  • Raytracing: Trazado de rayos desde la posición del observador.

Desde el punto de vista plástico, el modelo de Raytracing produce imágenes más brillantes, y es el único capaz de simular con realismo efectos de refracción y reflexión.

Al ver "Luces y Sombras" hemos realizado una aproximación a la transparencia modificando el canal "Alpha" del material, que determina el grado de opacidad.

Sus valores extremos son cero para un cristal translúcido y uno para un cuerpo opaco. Nos manejamos por tanto en el rango de valores reales [0,1]

El cálculo de transparencias se debe activar en una de las dos modalidades de cálculo que incorpora blender.

El más simple en resultados, aunque también el más rápido en su cálculo, es el modo "scanline" en el que se proyecta la escena desde el punto para determinar qué puntos son iluminados; la técnica consiste en realizar esta proyección desde los diferentes puntos de luz y  almacenar en un buffer (memoria) la distancia a cada punto visto desde ellos,  posteriormente al renderizar la escena se analizará si el punto a representar es "visto" por la luz o no, en cuyo caso es una sombra.

Para activar el modo "scanline" seleccionaremos el botón "ZTransp" que se encuentra en las pestañas que determinan las propiedades del material.


Para cada material deberemos indicar su particular forma de cálculo.


El modo más realista y más "caro" de renderizar se basa en los modelos de Raytracing. Podemos activarlo en la pestaña "Mirror Trans" seleccionando en el botón "Ray Transp". En esta misma pestaña se puede activar la reflexión (Ray Mirror) y los parámetros que gobiernan ambos efectos.

En particular la variable "IDR" determinará el "Índice de Refracción", que permitirá obtener los efectos de deformación antes citados.


Para ajustar el cálculo de sombras deberemos seleccionar la lámpara que deseemos modificar y activar la edición de sus propiedades con el icono que representa una bombilla.

Si se quieren obtener resultados más realistas deberemos activar el cálculo en modo raytracing, seleccionando el botón "Ray Shadow" que nos desplegará nuevas opciones. 

El número de "samples" o muestreos es uno de los parámetros que encarecen el cálculo y que deberemos usar con prudencia.

Gracias a esta variable se puede definir el número de rayos que se calcularan por cada elemento o pixel a representar, para determinar el grado de difusión de la sombra.

Vemos pues que los tiempos de cálculo variaran sustancialmente, ya que si el valor se duplica también lo hará el número de rayos a determinar y en consecuencia el tiempo empleado en su obtención.

Se recomienda "jugar" con escenas simples para determinar con detalle el resultado de la modificación de sus parámetros, analizando el "grano" de la sombra al modificar el valor de "Soft size".

Otro de los parámetros que incide especialmente en el resultado final es el tipo de "Shaders" o "Sombreador" (algoritmo de cálculo) que apliquemos a cada material. 
Para trabajar con transparencias el modo "Fresnel" es el más recomendado, aunque según el tipo de efecto o atmósfera que queramos obtener podremos usar uno u otro.



Refracción (Wikipedia)
Ley de Snell (Wikipedia)

No hay comentarios:

Salvo indicación expresa, todos los contenidos de esta página están sindicados bajo una licencia Creative Commons. Puedes usarlos y modificarlos, siempre que no se haga con fines comerciales y se cite al autor.

Los enlaces que completan las ilustraciones son informaciones y opiniones de sus autores, muchas veces diferentes e incluso manifiestamente opuestas, buscando un contraste de visiones.

Etiquetas

#manifiesto (2) 2010 (1) 3D (41) Actividad sísmica (3) Actualidad (22) Aeronáutica (1) Agua (3) Águila (1) Alan Wake (1) Aminatou Haidar (1) Amor (3) Animación (24) Animales (1) Antialiasing (1) Aplicaciones (1) Aprendizaje activo (1) Aprendizaje cooperativo (1) árbol (1) Arquitectura (1) Arte (4) AstroRobonaut (1) Australia (1) avatar (1) Bicicleta (2) Biología (2) Bitacoras.com (4) Blackout (1) Blender (42) Blog (71) Blogs (3) Blue Brain (1) Bump Mapping (2) Capas (1) Carrillo (1) Censura (2) Chile (2) Ciencia (34) Cine (2) Citas (2) Civismo (1) Color (3) Comentarios (1) Comic (1) Composición (1) Conferencia Montreal (1) Consolas (1) Creatividad (2) Crítica (2) Cultura (3) Curiosidades (1) D (1) Daniel Bensaïd (1) Desastres naturales (1) Dibujo (4) Diseño (9) Documental (2) Edición (9) Educación (23) Esfera (1) Esferas (1) España (1) Estadisticas (1) Estructura (1) Evolución (1) Exposición (1) Fallas (2) Festividad (2) Ficheros (1) Filosofía (1) Flores (1) Follow friday (2) Fondo Figura (1) fondos (1) Fotoblog (2) Fotos (4) Fractales (1) Frases (1) Fuego (1) fútbol (1) Galaxias (1) Gallo (1) Geometría (17) Gomarta (1) Google (1) Gráficos (13) Greenpeace (1) Guatemala (1) Haiti (10) Hipopótamo (1) Historia (1) homenaje (1) Huellas (1) Humano (1) Humor (36) Iluminación (5) Ilusiones ópticas (2) Imagen (7) Imagen sintética (76) in memoriam (1) Ingeniería (2) Innovación (5) Innovación educativa (16) inocente (1) Internet (6) Investigación (2) ISS (2) Jardín (1) Java (1) Juegos (1) Jugabilidad (1) Key Frame (1) Layers (1) Lectura (1) Letras (1) Leyes Gestalt (3) Libertad expresión (1) Libro (1) Madrid (6) Mapeado (1) Mar (1) Matemáticas (1) Material (6) Maya (2) Mesh (2) Metaballs (1) Microsoft (4) Morphing (35) mosaico (1) Movie Maker (2) Mujer (1) Mundial (1) Música (2) Nasa (1) Navidad (3) NEURONA (1) niño (2) Objetos (2) OCW (1) Óleo (9) Óleos (1) Olimpiadas (1) open source (3) Optimula (1) Organización (1) Pacman (1) palante (1) palillos (2) Paloma (1) Pelo (2) Pensamientos (2) Periodismo (9) Perlin Noise (1) Personajes (5) Personal (8) Pi (1) Pintores (1) Pintura (6) Pixel (1) PIZ (23) PIZiadas (48) Política (3) Post (1) premios (1) Primavera (1) programación (9) Proteina (2) Publicidad (3) puentes (2) Puntillismo (1) R2 (1) Raytracing (27) Real time (1) Realidad aumentada (1) Realidad virtual (1) Recursos educativos (2) Reflejos (5) reflexión especular (4) Refracción (4) Rendering (22) René Descartes (1) Representación (1) Retos (1) Salinger (1) Saludo Blog (3) San Valentin (1) Saramago (1) segregadores (3) Selección (1) SGAE (2) Shaders (1) Sillón (1) Simulación (1) Sismico (1) Software (14) Sombreado (1) Sonido (1) Sudáfrica (1) Tecnología (35) Televisión (2) Tendencias (2) Terremoto (15) Texto (1) Texturas (8) Tinta (1) Transparencia (5) Turquía (1) Tutorial (5) Tutoriales (2) Twitter (9) Universo (1) UPM (1) usuarios (2) Vetas (1) VGG (4) videojuegos (1) Vídeos (13) Wikipedia (1)
Powered By Blogger