Saltar al contenido principal

Arte 3D - Librería: Shader Fantasma (Unity)

ÁreaArte 3D
Creado porLeo Espinoza
Fecha de Creación9 Agosto 2024
Fecha de Última Actualización19/08/24

Descripción de Módulo


Esta librería de shaders fantasma se puede ocupar en : Manos del avatar, manos posadas en secciones como guía para el usuario, en modelos de manos animadas mostrando procedimientos como guía del usuario y como material para objetos que indiquen una posición donde colocar el objeto interactivo. Cada shader tiene distintos atributos que dan diferentes resultados, estos son algunos en los que se exploró para mostrar sus capacidades.

Esta librería vive en el repositorio de Arte3D_Naves Industriales en Plastic.

image-20240815-215452.png

Esta escena la puedes encontrar en _Librerias → Shaders → Ghost Shader Overview

Scene Ghost Shader Overview-20240819-145511.JPG

En la carpeta de Librerias -> Shaders - > Materials se encuentran los distintos tipos de shader y materiales divididos en sus respectivas carpetas

image-20240815-213552.png

Para su uso, puedes seleccionar el material del objeto y exportar el package a tu proyecto.

Nota: Recuerda asignarle el respectivo shader al material que estés usando para manos fantasma en la parte superior del inspector. (El material está nombrado de la misma manera que su shader)

image-20240809-202103.pngimage-20240815-162348.png

Algunos de los shaders admiten el uso de texturas en lugar de solo colores base, en estos casos puedes asignar las texturas (En su mayoría Albedo y Normales) y ajustar los valores que sean necesarios:

image-20240812-165654.png

Las opciones de Fresnel modifican el resplandor típico de los shader fantasma, encontrarás atributos para cambiar color, intensidad y en algunos casos incluso la opacidad. Hay veces que estos valores alteran demasiado el color base en caso de usar texturas. Si quieres que se vean más los colores originales disminuye la intensidad o tintes del shader para lograr un mejor resultado

Aparte de los shader fantasma podrás encontrar otros tipo de shaders. Algunos de estos son:

Dissolve

Este shader se puede usar para objetos que necesitan desaparecer o aparecer. Como puede ser en el caso de objetos que golpeas y se destrullen

image-20240812-151417.pngimage-20240812-151522.png

Podrás modificar los siguientes atributos para lograr distintos efectos:

image-20240812-152144.png

  1. Este shader admite mapas de normales, albedo y emission (Asigna el mapa de AL en el de emission para que se pueda visualizar). Los valores de Metallic y Smoothness pueden ser modificados con un valor.
  2. Color_main: Funciona como un tinte
  3. noise_scale: Puedes usar este valor para modificar el tamaño de los segmentos en los que se dividirá el asset al momento de que desaparezca ( Un valor más alto hace que se desaparezca en segmentos más pequeñitos)
  4. threshold: Este valor es el que se usa para la transición de dissolve (valor de 1 es el asset completamente visible). Este atributo es el que normalmente ajustará progra parra las interacciones requeridas.
  5. disslove_edge_wdth: Es el tamaño del outline que se forma al momento de desaparecer. Este sobrescribe el color del asset.
  6. Color_disslove_edge: Color del outline

De preferencia los assets a los que se les aplique el efecto de dissolve solo deben tener un material. Esto ya que tener más materiales puede afectar la velocidad a la que desaparecen o aparecen cuando progra los implementa

Shader - Floor Transparency:

image-20240812-170555.png

Este shader sirve para difuminar la intersección entre distintos tipos de material. Similar a usar un alpha en la textura, sin embargo una de las ventajas de usar shaders es la capacidad de poner texturas tileables

image-20240812-170852.png

Usa los valores de edge y edge smooth para ajustar la opacidad del material y lograr una buena transición entre los materiales. También puedes ajustar los distintos valores para lograr un efecto tipo shader fantasma:

Galería de shaders y sus variaciones

Para cada Shader se hizo 3-4 materiales explorando los atributos mostrando su aplicación en diferentes objetos. En algunos objetos no funciona tan bien el shader, (ya sea que el objeto tenga grosor o su reacción teniendo otro objeto fantasma detrás) esto también se dejo como ejemplo para su consideración al momento de la elección.

Object Alpha

Teniendo como base un shader de esta librería, el Shader Object Alpha nos permite modificar el alpha de los objetos de manera gradual aún siendo objetos opacos. Esto nos permite aparecer objetos a través de una animación en su transparencia, una alternativa a la aparición por escala o como la misma de los shaders dissolve.

Captura de pantalla 2026-01-26 171550.png

Este shader se modificó para asemejarse lo más posible a un Lit URP, por lo que podremos agregar mapas de albedo, normales, MAOS y Emission. Debemos tener en cuenta que el MAOS esta seteado para funcionar con la platilla de export de Substance Painter, ya que de otra forma puede que los canales asignados no funcionen correctamente. Tambien es importante tener en cuenta que, a comparación del Lit, este shader no reconoce automaticamente los mapas de normales, por lo que la conversión debe hacerse manualmente en las opciones de importación de la textura para que funcione correctamente.

Captura de pantalla 2026-01-26 171610.png

Flag Waves - Vertex

Este shader simula el movimiento del viento en telas a través del movimiento de los vértices del objeto. Hasta el momento se ha probado con banderas solamente, tendiendo algunas consideraciones para su correcto funcionamiento, teniendo un geometría plana, es decir, de un solo lado sin grosor, así como de una buena densidad de vértices para que el movimiento sea fluido. Junto con el shader se sube la geometría que podría funcionar como base.

Captura de pantalla 2026-01-26 222507.png

El material es muy básicos y nos pemite pocas modificaciones, teniendo solamente opción de agregar un mapa de albedo, modificar la fuerza, dirección y escala del movimiento del viento.

Al ser una shader hecho con shader graph, se puede modificar si es necesario el integrar más mapas.

Captura de pantalla 2026-01-26 222515.png

Easy Outline

No se ha probado en algun proyecto el shader, por lo que es recomendable realizar pruebas antes de implementarlo .

De momento ya no aparece disponible en la tienda, por lo que si se llega a necesitar se tiene que compartir al desarrollador mediante el assets management. La última actualización contiene compatibilidad con Unity 6.

Se adquirió este shader para generar outlines, su funcionamiento es similar a si creamos una geometría con las normales invertidas, ya que no solo crea la “línea” fuera del modelo, si no que crea la misma forma con el offset que le asignemos. Debido a esto el funcionamiento puede variar o no crear el resultado deseado, ya que genera el outline de acuerdo a las normales de los modelos. Por esto, un factor a considerar es que no funciona en geometrías que son planas.

En el Asset Manager se encuentran 2 materiales base. El Easy Outline lo generará asignandolo como segundo material al mesh, mientras que el Easy Outline - PBR nos permite asignar mapas de textura y modificar las opciones del outline, todo en el mismo material. Ambos cuentan con opciones que modifican la generación del outline, así como una opción para agregar un degradado en el color. El degradado cuenta con una generacion de noise, por lo que podemos ajustar la velocidad del movimiento,por otra parte, no se tiene tanto control sobre los colores del degradado en sí.

Captura de pantalla 2026-01-27 125212.png

En la misma carpeta donde podemos encontrar los materiales base se agregó un archivo readme por sí es necesario para la implementación, así como un package llamado EasyOutline - URP, dentro podemos encontrar algunos render settings en caso de que sea necesario para la correcta visualización de los outlines. En caso de aun presentar problemas, se podría optar por importar directamente el package original, ya que contiene algunos scripts que podrían solucionar problemas de visualización que surgan al exportar.

Nombre de la ActualizaciónResponsableDescripciónEstadoFechaImágenes
Iteración 1Leo EspinozaCreación de Ficha y LibreríaCOMPLETADO19/08/2024
Iteración 2Erick JuradoAdición Object Alpha, Flag Waves & Outline - Documentación y Asset ManagerCOMPLETADO19/01/2026
Iteración nPENDIENTE