Hasta ahora nos hemos centrado en definir las propiedades de las fuentes de luz de la escena. Como comentamos al inicio de la sesión, la representación final de un objeto vendrá determinada por el material y cómo éste refleja la luz. La manera de reflejarla determina el color y aspecto que un objeto tendrá en la imagen. En términos muy generales, un material absorbe ciertas frecuencias de luz y refleja otras. La parte que refleja, que es la complementaria de la que absorbe, se usa para calcular el color que correspondera a un determinado punto de la superficie tal y como es visto desde la cámara.

Las propiedades de los materiales en blender se especifican en los botones sombreado , en las subopciones de material . En este grupo de botones hay varias pestañas que estudiaremos a continuación. Las pestañas relacionadas con Texturas (Texture, Map Input y Map To) se estudiaran en las secciones 3.7 y 3.8.
Preview

La pestaña preview (ver Figura 1) ofrece una previsualización del aspecto del material. Es posible elegir entre varios objetos a los que se puede aplicar el material para previsualizarlo. El último botón de la columna sirve para aplicar el Antialiasing en la previsualización.



Figura 01. Preview.


Links and Pipeline

Este panel crea nuevos materiales y controla el modo en el que el motor de render trabajara con los materiales. Cuando se añade un nuevo objeto en la escena no tendrá ningún material asociado. En ese caso, podemos reutilizar alguno que ya exista en la escena, empleando la lista desplegable de la pestaña (ver Figura 2), o pinchar en Add New. El nombre del material se especifica en la entrada de texto MA: situada en su derecha. Al igual que ocurría con las mallas que podían estar compartidas por varios objetos (ver Figura 05 de la sección 2.1), si a la derecha del nombre del material aparece un botón con un número indicara que ese material esta compartido por varios objetos. Como ya vimos, pulsando sobre ese botón se crearían copias independientes (en este caso, del material). El siguiente botón marcado con una X permite eliminar la referencia de ese material con el objeto. El botón del coche hace que Blender elija un nombre automáticamente para el material. El último botón etiquetado con una F hace que Blender añada un usuario "fantasma" del material para que no se elimine totalmente, incluso si no hay ningún objeto que lo tenga aplicado.
A continuación hay una serie de botones agrupados en Render Pipeline (ver Figura 2), de los cuales comentaremos algunos de los más utilizados:




Figura 02. Links and Pipeline.



  • Halo: Define cada vértice del modelo como un Halo de luz. Veremos las opciones de halos en la siguiente subsección.
  • ZTransp: El objeto define la transparencia sin utilizar Raytracing (ver Figura 3). Este método es mucho más rápido, pero no es físicamente correcto, ya que no define las propiedades de refracción. Al igual que la transparencia mediante Raytracing requiere que se indique el nivel de transparencia en el parámetro Alpha A (situado debajo de los parámetros RGB) de la pestaña Material.
  • Full OSA: Fuerza a aplicar Oversampling completo en el material para obtener el resultado más suave (en términos de AntiAliasing) posible.
  • Wire: Genera el material con represesntación en alambre (ver Figura 3).
  • Radio: Si esta activo, el material se tiene en cuenta en el método de Radiosidad, que veremos en la sesión 5.
  • Only Cast: Si esta activo el material no muestra ningún color, únicamente arroja sombras sobre otros objetos (ver Figura 3). Es útil para definir máscaras de sombras (GoBos) y simular geometría inexistente en una escena.
  • Traceable: Si esta activo, el material se tiene en cuenta en el método de RayTracing, que estudiaremos en la sesión 5.
  • Shadbuf: Si esta activo, el material se tiene en cuenta en el calculo de sombras mediante mapas (ShadowBuffer), que estudiamos en la sección 3.2.



Figura 03. Pipeline.





Halos

Los halos sirven, entre otras cosas, para simular los destellos que se producen en las cámaras reales cuando la luz del sol incide sobre ellas. En Blender un material que tenga el botón Halo activo producira que en cada vértice del objeto que lo utilice se defina un Halo. Si activamos el botón Halo de la pestaña Links and Pipeline, aparecen nuevos controles y botones en la pestaña Material y en la pestaña Shaders (ver Figura 4). En Material básicamente podemos definir los colores del Halo Halo, de las líneas Line y de los anillos Ring.



Figura 04. Opciones Halo.

La pestaña Shaders cambia completamente el contenido que habitualmente presenta (ver Figura 4). La columna de botones de la derecha Flare, Rings, Lines... añaden componentes al Halo (líneas, estrellas, anillos...). Mediante el parámetro HaloSize controlamos el tamaño de render del Halo, Hard define cómo de afilado se dibujara el Halo, Add añade intensidad al color del Halo.

El siguiente grupo de controles Rings, Lines y Star definen el número de elementos de ese tipo que se dibujaran (siempre que estén activos los correspondientes botones de la columna de botones de la derecha). En la figura 5 se muestran algunos ejemplos de halos conseguidos tras aplicar a un cubo (8 vértices) un material que combina varios de estos elementos.



Figura 05.
Diferentes configuraciones de Halos.



Material

En la pestaña de material se establecen las propiedades de alto nivel del material, como el color, transparencia y propiedades básicas de render. A continuación veremos algunas de las más importantes.
Si recorremos la pestaña desde arriba, lo primero que nos encontramos son dos iconos con forma de flecha (ver Figura 6), que permiten copiar y pegar las propiedades del material. Pinchando sobre guardaremos en un buffer las propiedades del material anterior que podremos pegar posteriormente sobre cualquier otro. Esta operación sigue la misma semántica que el copy+paste sobre el portapapeles de cualquier editor de texto, pero obviamente, es únicamente interno de Blender.
A continuación hay un grupo de botones que definen propiedades básicas específicas del material (por ejemplo, el botón Shadeless si esta activo hace que el material no muestre ninguna sombra, consiguiendo en el render un color plano totalmente. Algunos de estos botones los utilizaremos para tareas concretas más adelante.


Figura 06. Material.

La zona más ampliamente utilizada de esta pestaña es la definición de colores. Blender define tres colores en esta pestaña:

  • Col: Color principal del material. En realidad se corresponde con la componente difusa que veremos en el siguiente apartado. Se puede definir de forma rápida pinchando con sobre la caja de color situada a la izquierda del botón (ver Figura 7).
  • Spe: Color especular (de los brillos especulares). En la siguiente subsección se comenta su significado. Normalmente funciona bien dejandolo en blanco.
  • Mir: Color de reflexión (espejo, Mirror). Normalmente funciona correctamente con el valor por defecto (blanco).

El color también puede elegirse mediante las barras deslizadoras para cada componente RGB, o si se pincha el botón HSV mediante las componentes de Tono (Hue), Saturación y Valor. Finalmente, el parámetro de opacidad Alpha se especifica en la última barra deslizadora, etiquetada con A.



Figura 07. Selector de color.


Shaders

Existen varias formas en las que un material puede reflejar la luz. En ocasiones puede depender de la dirección de la cámara, de la posición de la luz y de otros factores. El enfoque que daremos en esta sección será muy practico y enfocado a los programas de generación de imagen. A la hora de generar el color de un punto de la escena tal y como es visto desde la cámara, lo que nos interesa es la cantidad de energía que se refleja desde la luz en una dirección determinada (hacia la cámara). En informática gráfica se suele distinguir entre dos tipos de reflexión: difusa y especular. A pesar de que hay términos intermedios, se explicara cada una por separado. En realidad son dos casos particulares de un modelo general, físicamente más fiel, que no discutiremos ahora.
Reflexión difusa

La reflexión difusa total se da cuando un material refleja la luz en todas las direcciones posibles. Este efecto se debe a la rugosidad microscópica del material de la superficie. Ejemplos de materiales típicamente difusos son la tiza, el papel mate, la tela, etc. Los fotones, a una escala muy pequeña encuentran imperfecciones en la superficie que los hacen rebotar en múltiples direcciones. Este modo de reflexión de la luz tiene una propiedad muy importante, y es que se percibe con la misma intensidad independientemente del ángulo de visión. La intensidad de un punto por reflexión difusa no depende del punto de vista.
Para controlar la componente difusa en Blender emplearemos alguno de los múltiples Shaders que implementa, dentro de la pestaña Shaders. La primera lista desplegable de esa pestaña (ver Figura nos permite elegir entre alguno de los siguientes shaders:

  • Lambert: Requiere un parámetro Ref que indica la cantidad de luz que refleja el material. Un valor de 0.6 implica que refleja el 60% y absorbe el 40%.
  • Oren-Nayar: Es un shader más correcto desde el punto de vista físico. Requiere un parámetro adicional Rough que modela las pequeñas imperfecciones que tendría el material.
  • Toon: Produce un efecto de dibujo animado, diferenciando claramente las zonas entre luz y sombra. El parámetro Size mide la zona de luz y Smooth el suavizado al pasar de una zona de luz a una de sombra.
  • Minnaert: Si Dark vale 1, se comporta igual que el de tipo Lambert. Si Dark es menor que uno ilumina los bordes (aristas) del material. Si Dark es mayor que uno, oscurece las partes del objeto que están apuntando a la cámara.
  • Fresnel: La cantidad de luz difusa reflejada depende de la posición de la fuente de luz. Las zonas que apuntan directamente a la fuente de luz aparecen más oscuras, mientras que las zonas perpendiculares a las fuentes de luz se muestran más brillantes. Funciona muy bien con cristales y metales. El parámetro Fresnel mide la intensidad del shader, y Fac mide el factor de mezclado.


Figura 08. Modelos de reflexión difusa.


Reflexión especular

Algunos materiales (en cierta medida todos) reflejan la luz con un cierto sesgo en la dirección de reflejo según la normal de la superficie. Cuando en gráficos por computador se refiere el "brillo especular" se refiere a la luz reflejada mayoritariamente en una dirección dominante. Un claro matiz de este efecto frente a la reflexión difusa es que no es independiente de la dirección en la que mira el observador. Si por ejemplo cogemos un objeto de plástico con brillo y lo ponemos bajo una o más fuentes de luz luces, observaremos que según nos movemos, la posición de los brillos cambia. Esto es debido a que sólo se observa este fenómeno en un punto cuando lo miramos en una dirección determinada. La intensidad del reflejo varía suavemente según nos alejamos del rayo reflejado. De ahí que no observemos unos brillos como círculos nítidos, sino una mancha difuminada que va desvaneciéndose poco a poco según nos alejamos del centro.
Obviamente, la forma de estos brillos no es siempre circular. De hecho depende de la geometría del objeto. En una esfera el reflejo de una luz puntual será siempre un círculo difuminado. Pero en un objeto irregular, los brillos se deforman con la superficie.



Figura 09. Modelos de reflexión especular.

Es difícil calcular este efecto por un método físicamente correcto. Además la forma varía mucho con el material. Por ello existen varios métodos para apróximar el efecto y conseguir resultados aceptables. Blender incorpora varios Shaders para lograr diferentes efectos en brillo especular:

  • Phong: Es el más sencillo y popular método de reflexión especular. En el método Phong se calcula la intensidad de un punto en base al ángulo que forma el vector reflejado de vista con el vector que apunta hacia la luz. Este modelo tiene un parámetro adicional llamado "Hard" que regula la dureza del brillo especular. Un valor alto genera un brillo pequeño y afilado, mientras que uno bajo causa un brillo grande y suave.Las superficies más pulidas y de reflexión más perfecta como plásticos o metales tendrán brillos más definidos y por tanto valores de dureza más altos. Así, la elección de este parámetro determinara en gran medida el aspecto suave de una superficie.
  • CookTorr: Este shader es una versión optimizada del Phong, con un comportamiento prácticamente idéntico. Es el shader especular por defecto en Blender.
  • Blinn: Más correcto físicamente que los anteriores, añade un nuevo parámetro Refr que mide la suavidad del brillo.
  • Toon: Similar al shader Toon de reflexión difusa, pero aplicada a reflexión especular.
  • WardIso: El parámetro rms root-mean-square controla cómo de afilado es el borde del brillo. Valores menores de rms ofrecen brillos más afilados.

En la pestaña Shaders hay otros controles disponibles para modelar más propiedades del material. Comentaremos a continuación algunas de las más utilizadas:

  • Shadow: Si el botón esta activo, el material recibira sombras.
  • TraShadow: Si el botón esta activo, el material recibira sombras con información de transparencia (por ejemplo, sombras de objetos semitransparentes como cristales).
  • OnlyShadow: Si esta activo el material sólo mostrara la sombra. Esta funcionalidad es muy intersante para composición de imagen digital con imagen real, añadiendo planos y objetos que únicamente reciban sombra.
  • Emit: Si establecemos un valor mayor que cero, el material emitira luz (del color definido en Col (componente difusa). Veremos el uso de esta propiedad cuando estudiemos el render mediante Radiosidad en la sesión 5.


Mirror Transp

Aún hay un aspecto importante de los materiales que no hemos visto. Hemos comentado la capacidad de reflejar especularmente una fuente de luz, pero no hemos hablado de la reflexión de otros objetos Ray Mirror o de la transparencia Ray Transp (si están activos, y además esta activo el uso de RayTracing Ray en los botones de render , se podrán utilizar estas propiedades). Un material como un plástico pulido, una madera barnizada, un metal o simplemente un espejo pueden reflejar otros objetos en la escena. Podemos establecer un índice de reflexión RayMirr para un material. Cuanto más alto, más visibles serán los reflejos.


Figura 10. Mirror Transp.

Aunque hay otros métodos para calcular las reflexiones y transparencias, el más realista es el trazado de rayos.
De igual modo tendremos una componente de transparencia correspondiente a la luz que la superficie deja pasar. Elementos como el cristal carecen totalmente de componente difusa. Toda la luz que les llega es reflejada o transmitida. Una característica de la luz transmitida por materiales transparentes es que sufre una distorsión llamada refracción. Esto se debe a una diferencia entre la velocidad de la luz dentro del medio y fuera del medio. Cada material tiene un Índice de Refracción (IOR Index Of Refraction) directamente relacionado con la velocidad de la luz en su interior. Cuando se cruza de un medio a otro se calcula la distorsión en base a estos dos índices. Sin embargo, en los gráficos por ordenador no se recurre a tanta precisión física. En lugar de usar el índice absoluto se usa el índice relativo al del medio en el que se encuentra la escena, generalmente el aire.

Además de activar la transparencia por raytracing, hemos también de controlar el índice de refracción (IOR). Como explicabamos antes, éste controla la cantidad de distorsión debida al cambio de medio. Un valor de 1.0 significa que no habrá refracción y por tanto tampoco distorsión. El agua tiene un IOR de 1.33, el cristal de 1.5, etc. Con estas referencias del mundo real y otras que podamos consultar podemos escoger adecuadamente un índice para el material que estemos diseñando. Por supuesto, cuanto más nos alejamos del valor unitario mayor será la distorsión.

Como se ha comentado anteriormente, para elegir el color de la luz reflejada tenemos que ir a la pestaña de Material, en la caja de color Mir, aunque habitualmente es mejor dejar el color blanco por defecto. Igualmente hay que seleccionar la transparencia en el parámetro Alpha de la pestaña Material.

En el ejemplo de la Figura 11, las propiedades que se muestran se corresponden con la cabeza de mono transparente. Las otras dos tienen únicamente propiedades de Ray Mirror. Los motores de render externos basados en algoritmos físicamente correctos, que estudiaremos en la sesión 5, permiten un mayor grado de realismo.



Figura 11. Ejemplo de uso de RayTransp y RayMirror.

Es posible apreciar que tanto en los controles de reflexión como en los de transparencia hay un parámetro al que no hemos prestado atención llamado Depth (profundidad). Este parámetro es un número entero que establece el número máximo de rebotes tanto para reflexión como transparencia. Cuando tenemos por ejemplo dos espejos enfrentados, en cada uno se puede ver la reflexión del otro. Pero además, podemos ver la reflexión de un espejo en el otro y a su vez en si mismo y así sucesivamente. Es equivalente a una pelota de tenis rebotando varias veces entre dos paredes. El programa de render lo que hace es calcular sólo un número máximo de rebotes. En materiales de baja reflexión es difícil apreciar más allá del segundo o tercer rebote. Únicamente en materiales transparentes sobre objetos muy complejos es necesario usar límites más altos.

Geometría Sólida: Cuando modelamos objetos que van a ser de un material tipo cristal es muy importante que el objeto sea un sólido cerrado. La luz se distorsiona tanto al entrar en el medio como al salir. Si no cerramos los objetos la luz haría un efecto extraño como si todo lo que esta detrás de ella fuese cristal (así, no es buena idea usar planos para simular los cristales de una ventana; es mejor emplear cubos escalados apropiadamente).


Otros parámetros de la pestaña Mirror Transp:

  • Fresnel: Controla el nivel del parámetro aplicado (reflexión o transparencia) teniendo en cuenta el ángulo entre la normal de la superficie y la posición de la cámara. Cuanto mayor es el ángulo, mayor es el parámetro aplicado (reflexión o transparencia), por lo que el parámetro será más notable en los bordes del objeto.
  • Fac: Controla cómo de suave se produce el cambio entre zonas a las que se aplica el parámetro y a las que no (relacionado con Fresnel).
  • Gloss: Si vale menor que 1.0, la reflexión o transparencia no es perfecta, sino que estará difusa. Emplea el parámetro Samples para apróximar esta dispersión.
  • Samples: Número de muestras empleadas para calcular el color del píxel final. A mayor número de muestras, mayor será el tiempo de calculo.

SSS SubSurface Scattering

Esta propiedad fue añadida recientemente a Blender y permite simular el efecto de rebote de la luz dentro de los materiales. Muchos materiales (entre ellos, la piel) permiten que la luz rebote en su interior y salga posteriormente. La simulación físicamente correcta de este fenómeno es muy costosa, pero no es necesaria en muchos casos. Blender incorpora una emulación a esta propiedad que puede ser activada SubSurface Scattering en el panel SSS (ver Figura 12). A la derecha del botón de activación hay una lista desplegable que permite seleccionar una serie de configuraciones establecidas para facilitar la configuración de parámetros típicos en materiales como leche, piel, tomates, marmol... Las figuras 13 y 14 muestran la misma escena (en la 14 se ha utilizado el SSS con la configuración de marmol).



Figura 12. SSS.


Figura 13. Sin SubSurface Scat.


Figura 14. Con SubSurface Scat.

Para que se calcule el mapa de SubSurface Scattering, el botón SSS del grupo de botones de render debe estar activado. El método de SSS no necesita tener activo RayTracing, pero requiere un método de calculo preciso de las sombras para trabajar correctamente, por lo que se aconseja utilizarlo conjuntamente.