KickAss FX (KAFX)

[Tutorial] Máscaras con KAFX.

,

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.

Índice general

Comments

David Pinedazheo23 Sunday, September 18, 2011 3:37:37 PM

*fixed (Fue JFS no Tenka)

POR FIN MASK!!!
esto da para mucha cosas, especialmente transiciones p

Abelkm Sunday, September 18, 2011 6:29:57 PM

Gracias por avisar Zheo, corregido xD.
Pienso igual, para las transiciones viene perfecto.

Barraco Mármol Jerónimojerobarraco Tuesday, September 20, 2011 2:08:19 PM

jaja gracias zheo mi memoria es pésima.
Las mascaras ya estaban pero no las usabamos jajaja bigsmile

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

estaba interesante, hasta los últimos párrafos (levante la mano el que los entendió XDDDD), me acordo del AE y bueno...no tengo buenas memorias de esas cosas...igual pal que tenga paciencia puede resultar muy util , venga, todos los efectos (plugins) de karaokes que hacen en AE se basan en el concepto de usar el texto como mascara sobre un render animado; en español, meten una animación (que generalmente incluye algún tipo de iluminación) dentro del texto

Y esa seria la explicación a lo que creo intento decir el abel XD

Abelkm Wednesday, September 28, 2011 4:09:17 AM

Más bien es de nande, me cambió casi todo lo del post original <.< (hasta el ejemplo es otro...). Ahora vuelvo a poner lo que había puesto antes, para no usar el feo csprite (que confunde a la gente nomás).

Barraco Mármol Jerónimojerobarraco Friday, September 30, 2011 3:42:56 AM

XD perdon abel, pense q era mas facil

@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.

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies