La semana pasada publiqué un video en el que mostré cómo mapear una Color Ramp a lo largo del eje Z de un objeto, tanto en modo local como global, para crear un degradado a lo largo de la altura del objeto.
Transcripción del video
¡Hola a todos! La semana pasada publiqué un video en el que mostré cómo mapear una Color Ramp a lo largo del eje Z de un objeto, tanto en modo local como global, para crear un degradado a lo largo de la altura del objeto.
En este tutorial, ampliaré el concepto de mapeo basado en ejes para crear tanto un degradado de color como una mezcla entre dos Shaders. El ejemplo concreto será una barra de progreso coloreada, pero los métodos mostrados pueden aplicarse en otros contextos también. Específicamente, al mover la Empty de control horizontalmente, veremos cómo avanza la barra, coloreada con un degradado que va del rojo al verde, pasando por el amarillo.

Primero, déjame mostrarte cómo está configurada la escena inicial. Tenemos un objeto Plane que ha sido escalado para estirarlo un poco a lo largo de su eje X. Para mayor comodidad, coloqué el Origin del objeto en su esquina superior izquierda. También apliqué las transformaciones de rotación y escala a este objeto. Este Plane no se modificará más.

El otro objeto en la escena es una Empty, posicionada en el Origin del Plane, y también tiene aplicadas sus transformaciones de rotación y escala. Esta Empty controlará el avance de la barra, que se implementará completamente a través del Material del Plane, sin modificar la geometría del Plane.

El Material del Plane necesita tener dos características. Primero, debemos definir el degradado a lo largo del eje X del Plane. Una vez hecho eso, nos aseguraremos de que todas las partes a la derecha de la Empty sean transparentes, mientras que todas las partes a la izquierda estén coloreadas con el degradado que definimos.
Comencemos con el degradado de color a través de todo el objeto. Como en el tutorial de la semana pasada, necesitamos un nodo Texture Coordinate, un nodo Separate XYZ y un nodo Color Ramp, conectados en secuencia.
Usamos la salida Generated del nodo Texture Coordinate, ya que nos interesan las dimensiones propias del Plane. Del nodo Separate XYZ, usamos la salida X, que representa el eje horizontal local del Plane.
Ahora debemos conectar la Color Ramp a un nodo Emission, porque queremos que el Material sea siempre visible y no se vea afectado por la iluminación. Así que reemplazamos el nodo Principled por defecto con un nodo Emission.

Ahora puedes personalizar la Color Ramp como prefieras. En mi caso, coloco un marcador rojo a la izquierda, uno amarillo en el centro y uno verde a la derecha, utilizando interpolación Ease para que el rojo y el verde no estén limitados solo a los extremos.


Para colorear solo la parte a la izquierda de la Empty y hacer que el lado derecho sea transparente, primero debemos agregar dos nodos Shader en el editor. Específicamente, un nodo Transparent y un nodo Mix Shader. ¡Ten cuidado de elegir el nodo Mix Shader, no el nodo Mix de Color!
Luego, conecta el nodo Emission a la primera entrada Shader del nodo Mix Shader. Conecta el nodo Transparent, que debe estar configurado en blanco puro, a la segunda entrada Shader del nodo Mix Shader.
Conecta la salida del nodo Mix Shader a la entrada Surface del nodo Material Output. En este punto, tenemos un Material semitransparente con un degradado de rojo a verde, pasando por amarillo.

En un nodo Mix, ya sea de Color o de Shader, la segunda entrada se utiliza por completo solo cuando el Factor es igual a 1. Así que necesitamos una forma de hacer que el Factor sea 1 en el lado derecho de la posición de la Empty.
Entonces, agregamos un nodo Texture Coordinate y un nodo Separate XYZ al editor, y conectamos la salida X del nodo Separate XYZ a la entrada Factor del nodo Mix Shader.
Esta vez, sin embargo, usamos la salida Object del nodo Texture Coordinate y especificamos la Empty en el campo Object del nodo.

Ahora, el Material resultante será transparente a la derecha de la Empty y coloreado a la izquierda, como se pretendía. Sin embargo, podemos ver que el Material sigue siendo semitransparente bastante más allá de la posición de la Empty.

Para que la transición al nodo Emission ocurra de forma brusca justo en la posición de la Empty, insertamos un nodo Math entre Separate X y el nodo Mix Shader, configurado en modo Greater Than con un valor de Threshold de 0.

De esta forma, el nodo Greater Than tomará la coordenada X de la Empty y devolverá 1 para todos los valores mayores que esa coordenada. El nodo Mix Shader cambiará entonces de forma abrupta al segundo Shader, es decir, al nodo Transparent.
Por último, podemos hacer que la Empty sea hijo del Plane. De esta manera, podremos mover el Plane a cualquier parte de la escena y la Empty lo seguirá, pero aún podremos mover y animar la Empty de forma independiente.
¡Eso es todo por este tutorial! A diferencia de la mayoría de mis otros videotutoriales, una versión en PDF de este no está disponible actualmente para su descarga. Sin embargo, en la descripción encontrarás un enlace a una página con versiones en PDF de muchos de mis otros videotutoriales. ¡En cualquier caso, este es un excelente momento para suscribirte al canal y activar las notificaciones! ¡Hasta pronto!