Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Temas recientes

Animacion con shaders, como editar los canales RGBA ?

Iniciado por Mimic, Abril 16, 2019, 11:46:29 PM

Tema anterior - Siguiente tema
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.
 

 
 
 
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:

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.

Cita de: Antonio date=1555452535Saludos 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 ? 

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.

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 mani***r 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.

Abril 18, 2019, 06:37:20 AM #5 Ultima modificación: Abril 18, 2019, 06:39:10 AM por pioj
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.
 
 

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

Abril 19, 2019, 02:57:45 AM #7 Ultima modificación: Abril 23, 2019, 10:08:55 AM por pioj
Cita de: Mimic date=1555630041pero 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

Cita de: Mimic date=1555630041lo 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] )
 

 
 

Etiquetas: