Este es un contenido que me han pedido bastante: cómo colocar tu rostro dentro de un video o mejor dicho como hacer que tu rostro siga el movimiento del rostro de las personas en videos. Trabajaré con blender para lograr este efecto y quiero que sepas que esto es aún un experimento. Requiere de mucho trabajo y precisión. Este contenido lo llamo: Spark AR Face Extraction en secuencia de imágenes.
Primero necesitamos un video. Por fines educativos utilizaré este video que me encanta, la canción es buena pero las bailarinas hacen que la canción sea aún mejor. Es Maliya con su canción Breakfast in bed. Si estás pensando en hacer un filtro parecido debes ser consciente del uso de copyright y la propiedad de terceros. Instagram es riguroso en estos aspectos, así que usa tu propio video.
Blender Motion Tracking
Necesitamos abrir Blender y usaremos la opción de video editing. En la parte superior izquierda debes buscar el archivo mp4, luego lo arrastramos hacia la secuencia. La barra verde es el audio, vamos a eliminarlo.
Ahora tendremos que elegir los fotogramas adecuados. Esto es un proceso preciso y debes ser cuidadoso al respecto. En la sección de la derecha existe una opción llamada output. Aquí elegiremos una carpeta donde se alojarán las próximas imágenes, el formato será JPG. Una vez que tengamos los fotogramas deseados, hacemos clic a render y luego render animation, vamos a revisar la carpeta donde están las imágenes, claro no es necesario que todo estos elementos se vayan a utilizar.
Nuevamente en blender vamos a acceder al modo VFX. Trabajaremos bajo la pantalla de “motion tracking”. Ya en este modo vamos a hacerle clic a “open”, seleccionaremos las imágenes previamente trabajadas. Si le damos play veremos los frames, si se dan cuenta son muchos segundos para Spark AR; y esto puede ser muy pesado por el uso de imágenes que vamos a cargar, así que ajustamos nuevamente los Frames que usaremos.
Podemos modificar el color space por ejemplo con “non-color” y el frame offset lo podemos dejar a 24. En estos momentos crearemos un marcador de seguimiento. Para modificar este marcador puedes utilizar la tecla G para mover el cuadro, S para escalar y R para Rotar.
En “motion model” usaremos Loc de location. En la opción “track” podemos marcar estas opciones. Este botón permite trackear fotograma por fotograma. Si te das cuenta lo hace casi automático, si en caso no se mueve ya el marcador. Puedes tu realizarlo manualmente de esta manera y presionar nuevamente el botón para terminar el proceso. Se vería el trabajo de esta manera, un dato que debes tener en cuenta es la cantidad de frames que has usado.
Hacemos clic a “reconstruction” y seleccionamos link empty to track. Aparece un elemento llamado track en el layout. Si le damos play veremos que el track se mueve en simultáneo… vamos a importar un archivo 3D para guiarnos…
Usaremos un rostro 3D y alineamos al track. Si te das cuenta el track se mueve solo, lo que queremos es que el rostro se una a ese movimiento. Selecciono primero track y luego facemesh con shift, luego le doy Control + P para hacer el proceso de “parent”, el parent será a través de object.
Ahora necesitamos habilitar un timeline de animación para que Spark AR pueda leer dicho movimiento. Para replicar el movimiento debemos centrarnos en el objeto Track y presionamos I para insertar el keyframe y seleccionamos Location. Ese proceso lo haremos en cada frame, cuando tengas todo hecho vamos a exportar el trabajo. Lo exportamos en formato FBX. Al exportarlo debes darte cuenta que copiamos los elementos 3D y la animación.
Spark AR – Sequence
Buscaremos el frame desde el número 54 hasta 104 y lo conectaremos a Spark AR. Recuerda que posiblemente pese demasiado el filtro por el exceso de imágenes. Lo recomendable es que sean pocos frames.
Seleccionamos cada textura y las convertiremos en “texture sequence”. Luego crearemos un rectángulo, este rectángulo debe cubrir toda la pantalla. Luego habilitamos un material, en dicho material usaremos flat y crearemos un animation sequence. En ese animation sequence uniremos el “texture sequence”. Moveremos el rectángulo para que se vea mejor la escena. Ahora importaremos el archivo FBX que trabajamos en blender.
Ese archivo lo subimos en la escena y vamos habilitar la animación, en ese animation playback controller elegiremos el clip trabajado. El que hicimos en blender se llama “track action”. Ahora necesitamos trabajar la precisión de la animación, la imagen del fondo, la escala del objeto 3D y cómo centrar la experiencia. Esto tomará tiempo, ya nos vamos acercando. Sigamos trabajando.
Ahora creamos un face tracker, para luego sacar su face extraction. El objeto face mesh tiene un material. Su textura ahora será el “face tracker texture”. Seleccionaremos el face replace video y creamos un “face mesh”. Ese face debe estar dentro del elemento “track”. Mejoramos su distribución dentro de la escena, también usaremos el mismo material que del objeto 3D. Como punto final ocultaremos el objeto 3D trabajado en blender y seguimos haciendo más pruebas. Cuando crees que ya tienes el filtro hecho, vamos a probarlo!
Patreon
Si desear apoyarme para mantener mi sitio web y descargar los archivos de trabajo de Spark AR Face Extraction Blender, puedes hacerlo accediendo a mi patreon.