Jump to content
Sign in to follow this  
Mimic

Animacion con shaders, como editar los canales RGBA ?

Recommended Posts

hola, pues estoy tratando de entender como funciona los shaders y así poder hacer los míos propios, continuando con animación en shader me encuentra con algo que no entiendo muy bien de todo.

https://nordeus.com/blog/art/50-shaders-of-forge-prototyping-with-shader-forge/

usando los ejemplos anteriores en la parte donde el hace el shader de la animación de las palmeras, el menciona que usa los canales alfa y rojo para controlar la animación de la palmera.

50shaders_10_tree_vertex_colors.png

 

Esto es lo que no logro entender, como el edita esos canales ? el canal R en mi modelo aparece totalmente rojo y el A aparece en transparencia y no encuentro la manera de poder editarlos, en blender hay una herramienta para pintar los vértices pero parece que esto no funciona en unity o no son lo mismo ya que sigue sin cambios, alguno podría explicarme como modificar esos canales ?

y también seria un poco de ayuda que me explicaran que son los vertex color, acá con lo poco que he conseguido en internet creo que son un tipo de información que serviría para hacer animaciones, similar como funciona el heigth Paint de blender o es otra cosa ? agradezco cualquier aporte C:

Share this post


Link to post
Share on other sites

Saludos Mimic.

No he visto el shader que mencionas, pero creo que eso del rojo y el alpha, se refiere a los canales en la textura.

Si abres la textura en Photoshop, verás que hay una ventana con capas y canales, en esos canales están el rojo, verde y azul (RGB) y si creas uno más, este será el alpha que también se puede usar para las transparencias, aunque en este caso, sospecho que será lo que usan para saber qué parte de la palmera se mueve de una forma y que partes se mueven de otra.

Share this post


Link to post
Share on other sites
2 hours ago, Antonio said:

Saludos Mimic.

No he visto el shader que mencionas, pero creo que eso del rojo y el alpha, se refiere a los canales en la textura.

Si abres la textura en Photoshop, verás que hay una ventana con capas y canales, en esos canales están el rojo, verde y azul (RGB) y si creas uno más, este será el alpha que también se puede usar para las transparencias, aunque en este caso, sospecho que será lo que usan para saber qué parte de la palmera se mueve de una forma y que partes se mueven de otra.

entiendo, pero de alguna forma el usa esto como una mascara de intensidad para la animación, como puedo modificar esos canales para lograr eso sin alterar el color de la textura, es posible ? 

Share this post


Link to post
Share on other sites

A lo mejor se puede usar una segunda textura? Si miras el código, verás que an propiedades, esta incluyendo unas variables, y con mucha segurida alguna de ellas será un textura, úsala de refencia para crear otra textura de máscara y luego, en las operaciones que busquen el rojo o el alpha, haz que use esa 2' textura en vez de la original.

Share this post


Link to post
Share on other sites

Lo único que yo conozco para colorear vértices es mediante la técnica "Vertex painting" que no es más que asignar un color (de la forma que sea) a determinado vértice y pasarle ese color como input al shader (una forma linda de hacer esto es teniendo algun "vertex painter" que seguro debe de haber alguno gratis o tutoriales de como hacerlo). Fijate que los colores se interpolan en el vertex shader, seguro el resultado ese es el de la imagen.

Lo que posteriormente podés hacer (y seguro lo haga el autor) es determinar la amplitud de la oscilación (o fuerza del viento o como lo llame) que afectará a determinado vértice mediante su color, que dependerá del "rojo" del canal rojo ( esto <0,0,0> vs esto <1,0,0> ) pesado por el alpha del color del vértice (no el alpha del color de la textura que ves en la escena), por esto está negro abajo y blanco arriba. osea que tenés 4 grados de libertad R,G,B y A, dentro del shader podés manipular y afectar a cada uno como se te de la gana, también es muy usado esto para hacer blends o dar detalles a terrenos.

Share this post


Link to post
Share on other sites

Atentos, que doy una Master Class:

La imagen de ejemplo que has puesto hace suponer que no está trabajando con la textura, sinó con los canales RGB del Vertex Color, que es una propiedad de la mesh (modelo 3D).

Los programas tipo Blender/3dsmax/Maya/etc, traen herramientas para que puedas "pintar" o asignar colores a los vértices que componen los triángulos y polígonos de una malla(No, no tiene nada que ver con aplicar un material de un color sólido). Cuando pintas todos los vértices de un polígono concreto, es cómo si pintaras con un color un polígono de la malla.

Básicamente lo que haría un shader de hierba de esos de mover las hojas con el viento sería leer cada uno de los vértices de la malla, y en función de "cuánto rojo o cuán alto es el valor de este color concreto", asociarlo a una magnitud de desplazar la posición de dicho vértice en X/Y/Z, siendo cada uno de estos tres ejes el correspondiente canal de color R/G/B. Cuando hablo de valor del color, me refiero a que en un modo de color de 8bit, tenemos 2^8 = 256 valores distintos para el R, G y B (256 tonos de rojo, verde, y azul)... Pintando ciertos vértices de más o menos rojo, esos vértices aparecerán movidos en X más o menos, dependiendo de su valor. Por cierto, hay programas que soportan incluso RGBA, un canal Alpha adicional para el Vertex Color. Generalmente este canal Alpha se usa más para filtrar el nivel de transparencia de los vértices al renderizarse. 

Sí, con texturas también se puede hacer este tipo de cosas, y de hecho la base del Normal Map para los relieves hace precisamente eso. El que se use Vertex Color en lugar de una textura es precisamente para ahorrarte cargar en memoria esa textura. Es más empaquetado, más optimizado, más rápido, etc. Pero también más limitado, ya que sólo podemos guardar información en los vértices de la malla. Es como si trabjarámos con una textura muy pequeña (por tanto, menos definición...).

La versión "PRO" de estos truquitos que van mediante texturas hacen uso de una 2ª textura a modo de "máscara", que excluye a sólo una parte de la malla para que se mueva o distorsione.

 

Share this post


Link to post
Share on other sites

Gracias totales y si, definitivamente el no trabajaba con la textura si no con el vertex color por eso su palmera se podía ver de colores solidos y sin detalles, yo pinte los vértices de mi palmera en blender y los resultados fueron los esperados, pero entonces los, colores fuertes serian movimiento y los colores oscuros escases de movimiento ? lo digo porque no usa rojo y negro, si no verde y marrón al menos que haya usado la mascara de textura que menciona pioj, aunque no lo entiendo del todo, es una característica del unity pro o es algún formato extraño para imágenes ?

Igual lo mejor seria hacer lo que dijo el primer compañero y crear 2 entradas de texturas mas para el Red y el Alpha, gracias :3

Share this post


Link to post
Share on other sites
On 4/19/2019 at 1:27 AM, Mimic said:

pero entonces los, colores fuertes serian movimiento y los colores oscuros escases de movimiento ?

color fuerte = 1 normalizado (o 255 depende de la forma de interpretar los valores), color negro = 0 :

  • Desplazamiento * 0 = 0
  • Desplazamiento * 1 = Desplazamiento
On 4/19/2019 at 1:27 AM, Mimic said:

lo digo porque no usa rojo y negro, si no verde y marrón

La mezcla te va a dar características mixtas, por ej si el desplazamiento tipo A es afectado por el valor del canal R y el desplazamiento tipo B por el valor del canal G un marrón te dará un porcentaje de cada uno, fijate en la siguiente imagen ( dos canales R y G típico de textura 2D ... rojo en horizontal = x , verde en vertical = y ), tratá de ubicar el marrón.

Yo veo un R = 0.5 y G = 0.2  ... ( normalizado [0,1] )

ShaderWindowsCoordinates.png

 

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...