UNITY Materiales
Revisión del 18:12 2 nov 2018 de Wiki (discusión | contribuciones) (→Ejemplo de uso: Cristal no transparente)
Sumario
Introducción
- Mas información en este enlace.
- Los materiales van a estar asociados a figuras 3D.
- Los materiales van a:
- Guardar la textura asociada a el material creado, que después será aplicado a un Mesh (objecto 3D). Esta sería la textura sin ningún tipo de fuente de luz aplicada al material.
- Guardar la información necesaria para determinar como una fuente de luz va a reflejarse sobre el Mesh (son los Normal Vector, lo veremos después).
- Características del material que hacen que la luz se refleje de forma diferente (haciendo que el material adapte características como transparencia, metálico,...)
- Pensemos en el mundo real.
- Un objeto metálico refleja la luz de forma diferentes a un trozo de madera.
- Un cristal permite ver lo que está a través de él...
- Todas estas características físicas son modelizadas haciendo uso de materiales.
- Un aspecto importante a tener en cuenta cuando trabajamos con materiales es la luz que se va a aplicar sobre el material.
- El material debe 'reaccionar' a la iluminación de una forma adecuada. Por ejemplo, un material metálico debe de dar esa apariencia cuando la luz lo ilumine.
- La luz debe de estar configurada para mostrar los materiales de la forma mas fidedigna posible. La configuración de la luz sobre el material está determinada por una serie de parámetros que veremos a continuación.
Creando un material
- Vimos anteriormente en esta Wiki cómo podíamos asociar una textura a un modelo 3D.
- Comenté que para hacerlo solo teníamos que arrastrar la textura al modelo y que aparecía una propiedad denominada Shader en la que se guardaba la imagen de la textura.
- Realmente lo que hacemos con esa operación es crear un material en el que guardamos la textura que va a visualizar el modelo 3D.
Rendering Mode
- Más información en este enlace con ejemplos de cada uno de los modos de renderizado.
- Opciones posibles:
- Opaque: Cuando queramos que el material parezca sólido y tenga un color (o textura) que se refleje en toda la superficie. Será la opción escogida normalmente. No tiene transparencias.
- Cutout: Hace uso del canal Alfa, para que a partir de un determinado valor, todos los puntos con un valor alfa inferior al indicado serán invisibles. Este efecto se puede emplear para hacer que los bordes de los objetos están más definidos.
- Fade: En este modo, se emplea para hacer desaparecer/aparecer objetos como una animación.
- Transparent: Utilizado sobre materiales que queramos que parezcan plásticos o cristales. Se basa en el uso del canal Alfa de la textura.
Propiedad Albedo
- Más información en este enlace.
- Guarda la información de color del objeto 3D sin aplicar ningún efecto de luz al mismo.
- Traducido, guarda la textura que va a visualizar el modelo 3D sin aplicar ningún efecto que haga que el material se comporte de forma diferente al aplicar una luz sobre él.
- Nota:
- Recordar que estamos usando una luz de 'tipo ambiental' sobre nuestro proyecto.
- Ahora vamos a hacer uso de una textura previamente descargada en un ejemplo anterior de la Wiki.
- Vamos a cambiar la propiedad Albero y asociarle una de las texturas que disponemos:
- La propiedad Albedo también tiene una propiedad color que:
- Si tenemos una textura asociada, lo que va a hacer es 'tintarla' del color elegido.
- Si no tenemos una textura asociada, coloreará el Mesh del color elegido.
Propiedad Metallic
- Más información en este enlace.
- Sirve para darle un aspecto 'metálico' al material.
- Utiliza como fuente de datos el canal R (Red).
- Quiero esto decir que a la imagen le aplicará el efecto metal sobre los tonos 'Rojos' de la misma.
- Lo podemos ver si mantenemos el ratón sobre la propiedad 'Metallic' como se ve en la siguiente imagen:
- Desde Gimp podemos ver la información que tiene este canal:
- Un ejemplo de uso:
- Este modo trabaja junto al parámetro Smoothness para determinar el nivel de reflectividad de la luz, el cual tiene el efecto de hacer que las imágenes reflejadas aparezcan más o menos definidas:
Propiedades de los materiales aplicados a Standard Shader
- Más información en este enlace y en este enlace.
- Existen diferentes tipos de 'Mapas' que se aplican sobre los materiales que van a estar asociados a objetos para 'provocar' diferentes tipos de efectos.
- Van a modificar la forma en como la luz se va a reflejar en los materiales.
- Para nosotros un 'mapa' no es más que una imagen (en forma de textura, es decir, 2D) que en base a la información que guarda hará que los 'puntos' reflejen' la luz de diferente forma dando lugar a diferentes efectos (por ejemplo, no se refleja de la misma forma un objeto metálico que uno de madera).
- En este punto vamos a ver alguno de estos mapas.
- En este vídeo se explica como crear varios tipos de mapas haciendo uso del programa Gimp.
Normal Map
- Más información en este enlace.
- Alguna de las imágenes de esta sección han sido obtenidas del manual de Unity.
- Este mapa representa la forma en como los rayos de luz se reflejan sobre la superficie de un objeto.
- Si no disponemos de él, Unity hará uso del Mesh empleado para el diseño del objeto3D y hará que la luz se refleje siguiendo dicho modelo:
- Estaréis pensando: Vale, ¿ pero en qué me influye a mi el reflejo de la luz sobre una figura 3D ? ¿ Cual puede ser la aplicación práctica ?
- Imagináis que tenéis un muro hecho con piedras.
- La figura 3D que representa el muro es plana, como un cubo alargado o cualquier otra combinación de figuras 3D que podemos tener en un programa de diseño 3D.
- Si aplicamos sobre dicha figura una textura de piedras, tendremos algo parecido a esto:
- Como podemos apreciar, las piedras aparecen 'planas' sobre la superficie.
- Esto es así ya que el modelo 3D no 'incorpora' este tipo de detalle. Hacerlo supondría tener que dibujar muchos más triángulos con el consiguiente coste de CPU-Memoria.
- Gracias a los 'Normal Map' podemos 'simular' que las piedras realmente tienen un volumen 3D, como en la siguiente imagen:
- Otro efecto que podemos conseguir haciendo uso de los Normal Map es el de incluir formas sobre una superficie, sin necesidad de modelizarlas en el modelo 3D.
- Veamos un ejemplo:
- Debemos de tener claro que esas formas no existen realmente no existen en el modelo. Lo que hace Unity es aplicar una fuente de luz sobre el objeto 3D y los rayos reflejados sobre la superficie del Normal Map hacen que parezca que esas formas existen. Si nos acercáramos mucho al modelo veríamos que realmente no existen en el 3D.
- Nota:Lo que se hace normalmente es tener un modelo 3D con un nivel de detalle altísimo sobre el que se extrae el 'Normal Map'.
- Después se realiza otro modelo más sencillo (sin tanto nivel de detalle) y sobre dicho modelo se aplica el 'Normal Map' extraído del paso anterior.
- 'Normal Map' es un tipo de Bump Maps, el cual es una técnica de programación para dar un aspecto rugoso a superficies.
- Dentro de Bump Maps tenemos dos tipos de mapas:
- Normal Maps , el cual es el visto hasta ahora. Cada pixel de esta textura indica la dirección que tiene que seguir la luz cuando se refleja sobre su superficie.
- Height Maps, guarda la misma información que el anterior pero de forma diferente. En este tipo de mapa se usa una textura en blanco y negro, la cual indica la elevación que tiene que tener cada pixel en la textura.
- En las propiedades de Unity podéis comprobar que disponemos de un segundo Normal Map.
- Este mapa se utiliza como 'complemento' al mapa anterior para dar un nivel de detalle mucho más preciso cuando estemos muy cerca del objeto 3D.
- Podéis descargar ejemplos de texturas junto con su 'normal map' desde https://3dtextures.me/
Ejemplo de uso
- Descargar la textura y el normal map de este sitio web.
- Modelo realizado por João Paulo.
Creando un Normal Map
- Vamos a ver un ejemplo haciendo uso del programa GIMP.
- Existen en Internet multitud de páginas que muestran como crear un Normal Map en Gimp.
- Un ejemplo es este vídeo.
- Instrucciones concretas de cómo crear un Normal Map en este enlace.
- Para poder crear un Normal Map debemos descargarnos un 'plugin' para Gimp deste este enlace.
- Recursos a descargar:
- El archivo de textura de madera desde: https://3dtextures.me/2018/04/27/old-wood-001/.
- Solo descargar la textura. El enlace del mismo es https://meocloud.pt/link/985fb169-076e-4842-adc3-a30a32948ccd/Old_Wood_001_SD/.
- La imagen que vamos a emplear para crear el Normal Map. Es una imagen creada con GIMP, podéis crear una propia personalizada: Media:Unity3D_normalmap_ej_1.png
- Lo que vamos a obtener será lo siguiente:
Como se comenta en este enlace es necesario realizar un ajuste antes de guardar el Normal Map. Debemos ir a la sección de canales y desmarcar el canal azul (no aparece el texto).
Specular Map
- Más información en este enlace.
- Vídeo que explica como crear un 'Specular Map' con Gimp.
- Este tipo de mapa consigue que la superficie iluminada tenga más brillo y esté mas concentrado el lugar donde se refleja la luz, pasando a tener una franja de luz más estrecha.
- Para activarla tenemos que cambiar el tipo de shader a Standard Specular Setup, apareciendo una nueva sección.
- Este parámetro obtiene su información de los canales RGB (Red Green Blue). Podemos verlo si ponemos el ratón sobre dicha propiedad en la ventana Inspector:
- Este modo trabaja junto al parámetro Smoothness para determinar el nivel de reflectividad de la luz, el cual tiene el efecto de hacer que las imágenes reflejadas aparezcan más o menos nítidas. En caso de aplicarlo sobre un material que no refleje el efecto será el de que la luz esté mas concentrada en el punto donde refleje o que se distribuya por toda la superficie:
- Este parámetro obtiene su información del canal Alfa. Podemos verlo si ponemos el ratón sobre la propiedad Specular en la ventana Inspector:
- Nota: Este tipo de ajuste se realiza también manejando la opción 'Metallic-Smoothness' que vimos anteriormente.
- Unos artistas prefieren una forma y otros creen que tienen mayor control con la otra.
Ejemplo de uso: Cristal no transparente
- Lo que voy a hacer es aplicar un 'Specular Map' a un muro y el mapa inverso al mismo muro, con el parámetro Smoothness sin modificar su valor.
- Podemos comprobar como en el primer caso la luz 'se refleja' en la parte interna (la de color azul) mientras que la externa apenas refleja la luz.
- Recursos necesarios:
- Imagen que va a conformar la textura a aplicar al muro:Media:Ejemplo_Specular_textura.jpg
- Esta imagen fue realizada con Gimp.
- Imagen especular de la textura anterior:Media:Ejemplo_Specular.jpg
- Imagen especular inversa de la textura anterior:Media:Ejemplo_Specular_inversa.jpg
- Imágenes obtenidas siguiendo los pasos de este vídeo: https://www.youtube.com/watch?v=X0Zr_nHwj3Q
Occlusion Map
- Más información en este enlace.
- Establece como se refleja la luz indirecta
- Utiliza el Canal G (Green) para determinar como se refleja la luz indirecta (podemos verlo si ponemos el ratón sobre dicha propiedad en la ventana Inspector):
- La luz indirecta es la que proviene de la luz ambiente y de la luz reflejada por otros objetos.
-- Ángel D. Fernández González -- (2018).