[Tutorial] Máscaras con KAFX.
By Abelkm. Sunday, September 18, 2011 4:10:00 AM
Pequeña introducción al mundo de las máscaras (semejantes a las que usa photoshop o gimp). Las imágenes y gran parte de la explicación son cortesía de Nande!. Las imágenes están en la sección de fotos, en un grupo separado, por si las quieren ver con más detalle.
Así se ve el video normalmente (ignoren el texto que ya está escrito)
Cuando pintamos un efecto normalmente podemos hacer que se comporte como una capa, utilizando grupos.
avanzado.GrupoInicio() d.Pintar() texto = avanzado.GrupoFin(0) #Al poner GrupoFin(0) evitamos que se pinte lo que hicimos dentro del grupo automáticamente #al poner texto = GrupoFin lo que hacemos es guardar todo lo que pintamos en el grupo dentro de texto #EN FORMA DE TEXTURA! #(nota, "texto = " y el 0 en grupoFin no tienen relacion entre si)
Creamos un grupo que usaremos como máscara. es tan sencillo como crear otro grupo.
TODO lo que pintemos ahi será usado como mascara.
Lo transparente en la máscara será transparente en el texto, lo sólido sólido, se entiende?
(En caso de usar una imagen en escala de grises, lo negro es transparente, lo blanco sólido, y lo intermedio intermedio)
patron = avanzado.cSprite(text = extra.CargarTextura('texturas/alpha-test.png'))
#creamos un cSprite para usar un png
avanzado.GrupoInicio()
patron.Pintar()
mascara = avanzado.GrupoFin(0)
#Guardamos el resultado en una mascara
Por ultimo aplicamos la máscara
video.cf.ctx.set_source(texto) video.cf.ctx.mask(mascara)
Ahora algo de código para ayudar a que pasen del Gimp al KAFX:
En resumen, quedaría algo así
patron = avanzado.cSprite(text = extra.CargarTextura('texturas/alpha-test.png'))
avanzado.GrupoInicio()
d.Pintar()
texto = avanzado.GrupoFin(0)
avanzado.GrupoInicio()
patron.Pintar()
mascara = avanzado.GrupoFin(0)
video.cf.ctx.set_source(texto)
video.cf.ctx.mask(mascara)
Básicamente es como las imágenes de arriba muestran. Con este código no van a ver nada, pero si juegan con el grupo de la máscara van a poder cambiar el alpha del otro grupo (el del texto), dependiendo si lo que pintan en el grupo de la máscara es blanco (sólido) o negro (transparente). Pueden usar todo lo que quieran: una textura, un degradado, un modo de pintado, etc.
Una aclaración, o sea, si es algo en escala de grises entonces toma esos valores como alpha y si es una imagen, y no es una escala de grises, toma el alpha de esa imagen.
Otra forma de hacerlo (más fácil):
avanzado.GrupoInicio()
d.Pintar()
texto = avanzado.GrupoFin(0)
avanzado.GrupoInicio()
d.Pintar()
mascara = avanzado.GrupoFin(0)
video.cf.ctx.set_source(texto)
video.cf.ctx.mask(mascara)
Ejemplo simple (de Abelkm, con KAFX):
Ejemplo avanzado (de JFS, con Overlua):
Y para terminar, un tutorial de photoshop, el cual me ayudó a entender bastante la teoría:
Nota:
recuerden importar los modulos necesarios (avanzado, extra y demás)
recuerden que lo que pueden pintar en el grupo de la máscara puede ser cualquier cosa.
Esto es bastante avanzado, pueden usar todo lo que ya usan.
Pueden usar cSprites, Particulas, incluso el mismo diálogo con otro borde o con una textura de relleno.
Hasta pueden utilizar los básicos de cairo, como surfaces, patterns, degradados, lineas, formas, vectores.
También combinarlos con funciones que ya estaban como Blur, Glow, Wave, etcétera.
Y no olviden que al usar grupos pueden encapsular dibujos muuuuuuuuuuuy complicados, y aplicar fácilmente una máscara a todo eso. (Incluso si son inteligentes pueden hacer chroma key con el video) O pueden usar los grupos en CuadroInicia y CuadroFin y asi encapsular TODOS los textos, y aplicar una mascara sobre eso.













David Pinedazheo23 # Sunday, September 18, 2011 3:37:37 PM
POR FIN MASK!!!
esto da para mucha cosas, especialmente transiciones
Abelkm # Sunday, September 18, 2011 6:29:57 PM
Pienso igual, para las transiciones viene perfecto.
Barraco Mármol Jerónimojerobarraco # Tuesday, September 20, 2011 2:08:19 PM
Las mascaras ya estaban pero no las usabamos jajaja
espero que les sirva!!
muchas gracias abelkm por el tutorial!! te re zarpaste!!
espero que entiendan las posibiliades de esto!
Alexnicklechama # Wednesday, September 28, 2011 2:15:32 AM
Y esa seria la explicación a lo que creo intento decir el abel XD
Abelkm # Wednesday, September 28, 2011 4:09:17 AM
Barraco Mármol Jerónimojerobarraco # Friday, September 30, 2011 3:42:56 AM
@alex, EXACTO!
bueno en kafx hay muuuuuchas formas de hacer cosas interesantes, multiples surfaces/patterns, blending modes, clip regions/paths, mascaras.
en principio se ve algo complicado, pero la idea es ir construyendo kafx de a poco, para que luego, de querer usar un "plugin" sea tan facil como usar uno en AE.