Nuestro método para crear videos de vtuber

1

EN CONSTRUCCIÓN. Se necesitan sugerencias y críticas!

Ejemplo del resultado:

Vamos a explicar nuestro proceso de creación de videos en tres partes, que son independientes entre sí. La primera es el proceso de mocap, que produce un archivo de movimiento que puedes poner directamente en Unity si lo deseas. La segunda parte es nuestro método de limpiar el mocap y animar las manos, y la tercera parte es sobre como producimos un video en base a un archivo de movimiento, ya sea directo del programa de mocap o un .fbx limpiado de blender.

Primera parte: Hacer el archivo de movimiento

Tenemos dos métodos que capturan el movimiento de la otra hana y crean un archivo .bvh, que contiene información de movimiento que puede ser leída por varios programas, como Blender o Unity.

El primer método es usando threedpose, que predice una posición en tres dimensiones en base a una imagen. En términos de hardware, necesitas una cámara decente, una habitación con buena iluminación, un fondo lo más plano posible y una GPU decente si quieres que tu captura tenga mejor calidad. Esto último es por que threedpose usa machine learning para las predicciónes, y el machine learning necesita de una GPU para poder hacer estas predicciones. Si no tienes algo mejor o igual a una GTX1060, puedes cambiar la predicción a una menos precisa.

Threedpose necesita una grabación de cuerpo completo de tí, con buena iluminación, ropa apretada y ojala con colores asimétricos. Una vez tienes la grabación, la debes cargar al programa, junto con tu modelo y despúes de unos segundos de ponerle play tu personaje empezará a moverse. Ahí puedes grabar el movimiento y posteriormente guardar el .bvh resultante. Hay un montón de opciones que permiten suavizar un poco el movimiento o la precisión de este, y nunca es malo experimentar con las opciones.

El segundo método es usando una Kinect. Hay varias alternativas de software para capturar movimiento con kinect, pero decidimos invertir en un programa llamado Brekel, que hace el proceso mucho más simple que lo que estabamos haciendo antes.

Guía de Brekel pendiente

Estos dos métodos no producen animaciones de la misma calidad. El movimiento capturado por threedpose tiene mucho más ruido que el de brekel, al punto que las veces que hemos trabajado con threedpose hay que disminuir mucho el movimiento base del modelo o tiembla demasiado. Sin embargo, es posible reducir el ruido en el movimiento usando herramientas en programas como blender, donde ocurre la segunda parte de nuestra producción de videos.

Segunda parte: Blender

En blender, usamos dos addons: VRM importer para importar nuestro modelo base, aunque si usas nuestro proyecto plantilla no es necesario, y el plugin de Rokoko Studio. Pasa usar el plugin de rokoko, primero te debes crear una cuenta en su sitio.

Si no tienes familiaridad con Blender, esta parte puede ser un poco difícil de seguir. Trataremos de explicar con profundidad.

Nosotras usamos un modelo base en el que ajustamos las animaciones. Tiene unos controladores para sus manos que facilitan mucho su animación. Dejaremos este proyecto de Blender disponible para descargar, para que ustedes puedan usar el mismo modelo. La verdad, cualquier modelo base sirve, ni tiene que venir de un VRM, pero usamos el de hanachi por conveniencia.

En Blender, importas tu bvh, lo rotas para que tenga la misma orientacion de tu modelo, y en la pestaña del plugin de rokoko haces login y te vas a la sección de retargeting, donde puedes pasar la animación del bvh a tu modelo. Ahí eliges como fuente el motion que importaste y como objetivo el esqueleto del modelo base. Asegurate que los huesos correspondan correctamente a los del modelo base, y elimina la asociación los huesos de los pies y manos, ya que esos los debes ajustar tu manualmente a menos que tengas animación de manos precisa.

Usualmente el motion que importaste tiene una posición de descanso distinta al de tu modelo base, produciendo resultados un tanto perturbadores si no solucionas eso. Para corregir esto, debes ponerte en el primer cuadro en la vista de timeline, que por dedfecto está en la parte inferior, seleccionar la animación en object mode, luego entras a pose mode., donde debes eleccionar todos los huesos y reiniciar la rotación y traslación del esqueleto presionado alt+g y alt+r. Veras que queda en la posicion de descanso. Mueve y rota el esqueleto para que calce de la mejor manera con tu modelo base, y aprietas I para crear un keyframe en la animación, seleccionando LocRot. Esto fija la posición actual de tu animación como la más parecida a la posición base de tu modelo. Asegurate que la posición del primer frame sea muy parecida a la del esqueleto del modelo, pero sin trasladar ningún hueso:
Alineando los esqueletos

Una vez hiciste este ajuste, vas al modo objeto, y en la pestaña de rokoko le das que use la posición actual, y a retarget. Puedes guardar tu configuración con save y luego export. Una vez termine el proceso, verás que tu personaje se mueve junto con la animación que exportaste.

El modelo se mueve con la animación

Si no te gustan ciertas partes de la animación, puedes ajustarlas en el graph editor, cambiarlo las rotaciones (Nunca las traslaciones) de ciertos huesos, como en la imagen. También puedes seleccionar todos los keyframes, y hacerle smooth keys (F3 -> buscar smooth keys) para hacer que se vea un poco mas suave la animación. Puedes hacer esto varias veces hasta que se vea mejor.

Ajustando las rotaciones usando el curve editor hasta que se vea natural
Ajustando las rotaciones usando el curve editor hasta que se vea natural

Para animar las manos, puedes usar los controladores del modelo base. Hay uno para el puño, donde su posición en y determina que tan cerrada es la mano, y uno para cada dedo, que los abre o cierra acorde a su rotación. Si quieres animar algo tienes que colocar keyframes en la posición o rotación de los controladores que te interesan. La animación en Blender tiene un montón de opciones y cosas que aprender, y sería bueno que aprendieras más sobre esto por tu cuenta para ir mejorando las animaciones de tu modelo. También pueden modificar directamente el hueso base de cada mano.

Una vez termines de modificar las manos, es importante que le des a bake action (F3 -> escribes "bake action") con las siguientes opciones, en modo de pose y con los huesos de las manos seleccionados:

Bake action, con only selected bones, visual keying y overwrite current action seleccionados.

Recuerda colocar el rango de cuadros de tu animación. Esto pondrá la animación en los huesos de las manos en vez de solo el controlador. Claro, no es necesario hacer el bake si no tienes los controladores, ya que puedes animar los dedos uno a uno.

Finalmente, te vas a modo objeto, seleccionas solamente el esqueleto de tu personaje, y le das a exportar fbx con las siguientes opciones, de manera que se exporte solamente el esqueleto que tienes seleccionado:

Configuraciones para exportar el esqueleto

Esto termina la sección de blender.

Video Tutorial

Tutorial del plugin de Rokoko

Archivo .blend base que usamos nosotras

Tercera parte: Unity

En esta sección no seremos tan detalladas como en la anterior.

Para Unity, estamos usando UniVRM para importar nuestros modelos, y el shader UnityChanToonShader para que se vean mejor nuestros modelos. Para el lipsync, usamos uLipSync y para el pestañeo usamos un script que hace que pestañee lo correcto aunque esté haciendo una expresión. No explicaremos como instalar estos addons, a menos que uno de ellos se les dificulte en particular.

Las configuraciones relevantes que tenemos en el modelo de hanachi son los siguientes:
Configuración del animador de hanachi
Configuración del lipsync y blinker

Una vez importamos el fbx a Unity, le aplicamos un avatar a la animación, que es una especie de adaptador que nos permite ponerle la animación a Hanachi. Pueden configurarlo con el botón de configurar para asegurarse que todas las asociaciones están en orden. Darle a enforce T-pose antes de aplicar suele producir un buen resultado.

Puedes duplicar la animación con ctrl+D para poder modificarla y colocarsela al modelo modelo. Verán que si le ponen play, su personaje se moverá con la animación que importaron. Si quieren animar su rostro, pueden hacerlo en Unity. Con el personaje seleccionado, vamos a la pestaña de animación y le damos a "Add Propierty", luego buscán el blendshape que corresponde a su expresión en el menú, lo agregan y lo animan como lo deseen (Recuerden consultar tutoriales de Unity).

Finalmente, grabamos el movimiento con UnityRecorder, con una pantalla verde de fondo o un video lindo. Esto concluye la parte de Unity.

Comentarios

Como dije en el principio, estas tres partes son independientes entre sí. Si tienes un archivo de movimiento .bvh o .fbx producido de alguna otra manera, puedes importarlo a Unity y seguir la parte 3 como si hubieras hecho las anteriores, o puedes limpiarlo en Blender independiente de como lo produciste.

Este tutorial está en construcción, dentro de los próximos días vamos a poner videos que graben el proceso de cada parte. Agradecemos mucho su feedback!

1

Muy, muy interesante! Ya me preguntaba como es que lograban hacer cosas tan fluidas.
Ahora me siento un poco en la edad de piedra solo usando una camara web haha