ZRT Face Trainer servicio de rigging facial en la nube

ZRT Face Trainer servicio de rigging facial en la nube. El especialista en simulación de personajes Ziva Dyamics ha puesto en marcha un servicio de rigging facial en la nube al que ha llamado ZRT Face Trainer. El servicio dispone de aprendizaje automático lo que debería redundar en mejores resultados para personajes de juegos y trabajos en tiempo real.

El sistema ZRT Face Trainer está disponible para que los usuarios seleccionados lo prueben de forma gratuita. Los desarrolladores dicen que transforma cualquier malla facial en una verdadera marioneta en tiempo real.

El rigging no se limita al sistema facial, lo hace de todo el personaje, aunque los desarrolladores quieren destacar el rigging facial dada su complejidad utilizando sistemas CG tradicionales.

Ziva Dynamics es conocido por el trabajo de cuerpo completo de personajes y su complemento para simular tejidos blandos en Autodesk Maya. La compañía ha estado insinuando su entrada al rigging facial y la animación desde hace algún tiempo.

ZRT Face Trainer servicio de rigging facial en la nube
ZRT Face Trainer servicio de rigging facial en la nube

La tecnología está casi lista para proyectos de producción

A fines del año pasado, la firma publicó un video teaser de un nuevo sistema de rendimiento facial basado en el aprendizaje automático. Poco después hizo una demostración de una solución facial sin marcadores y en tiempo real.

Parte de esa tecnología ahora se ha puesto a disposición del público. Al menos para cualquier persona que sea seleccionada para participar en el lanzamiento de la beta cerrada de ZRT Face Trainer.

La nueva plataforma de manipulación facial automatizada basada en la nube está entrenada para imitar la gama de expresiones de los actores humanos utilizando una biblioteca de 15 TB de datos escaneados en 4D.

Convierte cualquier malla de cabeza humana en un rostro en tiempo real, capaz de adoptar decenas de miles de formas faciales. Según el sitio web del producto, ZRT Face Trainer puede convertir las mallas de la cabeza de personaje precargadas en una “marioneta en tiempo real” capaz de expresar más de 72,000 formas faciales en una hora.

Velocidad de 3 milisegundos por frame

Los rostros faciales son solo 30 MB en tiempo de ejecución y se ejecutan a una velocidad de 3 milisegundos por marco en un solo subproceso de CPU. Lo que los hace adecuados para su uso en juegos y aplicaciones en tiempo real.

El sitio web no especifica en qué motor de juego se obtuvieron esas cifras. Pero las demostraciones en la página web del producto utilizan la versión de acceso anticipado de Unreal Engine 5.

Antes de que se pueda procesar la malla de una cabeza, debe limpiarse y modificarse manualmente para que coincida con un orden de puntos estándar. Posteriormente subdividirse adecuadamente para generar deformaciones convincentes.

Puedes leer una descripción general del proceso, para lo cual Ziva Dynamics recomienda Wrap, el software de retopología de R3DS y Autodesk Maya, en este PDF descargable.

Los resultados prometen ser impresionantes

Los resultados se ven bastante impresionantes en los videos de demostración en el sitio web del producto. Muestran animaciones estándar de movimiento para 12 modelos de cabezas 3D diferentes.

La mayoría son cabezas humanas de proporciones realistas, aunque también hay algunos humanoides y alienígenas.

De acuerdo con la hoja de ruta de Ziva Dynamics, se agregará soporte para parámetros faciales personalizables antes del lanzamiento público completo.

ZRT Face Trainer es un servicio basado en la nube y actualmente está disponible en versión beta cerrada solo por invitación. Ziva Dynamics aún no ha anunciado los precios o una fecha de lanzamiento público.

Instrucciones de preparación facial ZRT

El proceso consta de tres partes para preparar la malla facial para el sistema ZRT Face Trainer.

La preparación facial es un paso crítico en el flujo de trabajo del sistema ZRT Face Trainer. El proceso de registro asigna tu malla personalizada a la cara humana genérica para que la canalización ZRT Face Trainer pueda procesar con precisión y entrenar las deformaciones correctas en los puntos correctos de tu malla facial.

Tener en cuenta la calidad de tu preparación tendrá un impacto directo en la calidad del resultado final. Si no se completa el registro con alta calidad, se obtendrán resultados finales deficientes o deformados. Los desarrolladores recomiendan encarecidamente tomarse su tiempo con este paso y seguir las instrucciones con el mayor cuidado posible.

Dada la naturaleza manual de la preparación, han asignado cuatro 4 intentos por usuario. Si no te gustan los resultados de tu entrenamiento inicial, puedes intentar mejorar y volver a entrenar tu malla hasta tres 3 veces más. Si te satisfacen los resultados, puedes intentarlo de nuevo con una nueva cara.

Visión general del proceso en Wrap3

  • Importa ambas caras: origen (malla Ziva) y destino (tu malla).
  • Definir puntos de registro.
  • Envolver ambas mallas.
  • Limpieza usando pinceles y el archivo JawPolySelect proporcionado en Autodesk Maya.
  • Exportar la malla resultante a Autodesk Maya.
  • Subdividirlo usando OpenSubDiv, no subdividir en Wrap3.

Parte 1 Mapeo de malla

1. Inicia Wrap3.

Si nunca antes ha usado Wrap3, puedes aprender a usarlo aquí.

2. En Wrap3, abre la malla de código fuente y la malla de destino.

Agrega dos nodos LoadGeom al gráfico.

Haz clic en el primer nodo LoadGeom y selecciona el botón de puntos suspensivos (…) junto a “Nombre de archivo” para abrir el explorador de archivos.

En la ventana “Archivos”, selecciona SourceMesh.obj en la carpeta preparación de rostros. Si es necesario, puedes volver a descargar la carpeta preparación facial aquí.

Haz clic en el segundo nodo LoadGeom de tu gráfico y abre la malla del personaje que quieras entrenar. Asegúrese de que se trata de un archivo OBJ. En estas instrucciones, la malla se denomina malla de destino. En la ventana gráfica, verás que ambas mallas se superponen entre sí.

ZRT Face Trainer servicio de rigging facial en la nube
Figura 1 – ZRT Face Trainer servicio de rigging facial en la nube

Seguimos con el mapeo de la malla

3. Prepara la escena para los puntos de control.

  • Agrega un nuevo nodo SelectPointPairs y adjúntalo a los dos nodos LoadGeom existentes.
  • A continuación, agrega un nodo LoadImage al gráfico.
  • En el nodo LoadImage, abre PointSelection.jpg en la carpeta “preparación facial”.
  • Conecta el nodo LoadImage al nodo LoadGeom del source Mesh original. El gráfico de nodos ahora debería parecerse al gráfico de la Figura 2.
Figura 2
Figura 2

Luego, cambia a la pestaña Editor visual para que puedas visualizar ambas cabezas una al lado de la otra.

  • Haz clic en el nodo LoadGeom de source Mesh y, en el editor de nodos, desmarque la casilla “wireframe”.
  • Haz clic en el nodo SelectPointPairs y marca la casilla “Sincronizar vistas” en el editor de nodos.
  • Ahora, haces clic en el nodo LoadGeom de nuestra malla de destino y desactiva la vista de wireframe para ese también.

4. Coloca tus puntos

Haces clic en el nodo SelectPointPairs. Haces clic en los puntos rojos que aparecen en la textura PointSelection.jpg en la malla de origen. Los números de aviso se asignan a los puntos rojos, en el orden en que haces clic en ellos.

En cualquier momento, puedes pasar a la malla de destino y colocar puntos; deben colocarse en el mismo orden. ¡¡Esto es importante!! A los puntos de ambas mallas se les debe asignar el mismo número de punto (Figura 3).

ZRT Face Trainer servicio de rigging facial en la nube
Figura 3 – ZRT Face Trainer servicio de rigging facial en la nube

Seguimos con el mapeo de la malla

5. Agrega un nodo SelectPolygons para sockets de malla.

Conecta el nuevo nodo SelectPolygons al nodo LoadGeom de source Mesh.
En el nodo SelectPolygons, abre el archivo FacePolySelect.txt. Este es un archivo JSON que seleccionará automáticamente los polígonos necesarios de la malla de origen (Figura 4) .

ZRT Face Trainer servicio de rigging facial en la nube
Figura 4 – ZRT Face Trainer servicio de rigging facial en la nube

6. Agrega un nuevo nodo de ajuste al gráfico

Conecta el nodo Wrapping a todos los nodos LoadGeom, SelectPointPairs y SelectPolygons.

En el nodo Ajuste, haces clic en el botón “calcular” del editor de ajustes. Esto provocará una ventana de ajuste. Los puntos que colocaste en las mallas de origen y de destino se corresponderán entre sí; y la selección del zócalo se adoptará en la malla de destino (Figura 5).

ZRT Face Trainer servicio de rigging facial en la nube
Figura 6 – ZRT Face Trainer servicio de rigging facial en la nube

Parte 2 Limpieza de la malla

1. Ahora, cambia el nodo LoadImage a KeylineMap.jpg. Se verá como la Figura 6.

Figura 6
Figura 6

2. Limpia tu malla. Las oclusiones pueden ocurrir cerca del área del labio inferior, por lo que puedes usar la selección de polígono JSON específicamente para la línea de la mandíbula.

Añadir un nodo Pincel al gráfico; conéctalo al nodo Envolvente.
Agrega un nuevo nodo SelectPolygons; conéctalo al nodo Source Mesh LoadGeom y al nodo Wrapping.
En el nuevo nodo SelectPolygons, abre JawPolySelect.txt desde la carpeta “preparación facial” (Figura 7).

Figura 7
Figura 7

Haz clic en el nodo “ajuste” y la vista cambiará a la malla de destino ajustada en su lugar. Puedes empezar a limpiar la malla con la herramienta de cepillo RelaxProj, como mejor te parezca. El objetivo es obtener líneas suaves, especialmente a lo largo de la línea clave primaria. El Clone Brush es ideal para la zona interna de la boca y los ojos.

ZRT Face Trainer servicio de rigging facial en la nube
ZRT Face Trainer servicio de rigging facial en la nube

Seguimos con la limpieza de la malla

3. Agrega un nodo Blendshapes al gráfico, una vez que estés satisfecho con sus resultados.

Conecta el nodo Blendshapes al nodo Source Mesh LoadGeom y al nodo Wrapping.
Luego, haces clic en el nodo Blendshape. En ese editor, usa la barra “Blend 0” para ver la mezcla de Source Mesh en su Target Mesh. Puedes frotarlo para revisar la precisión.

En este punto, puedes continuar editando la ubicación de cualquiera de los puntos en cualquiera de las mallas para ajustar la mezcla para una mayor precisión o usar la herramienta de pincel para arreglar la malla un poco más.

Si realizas un ajuste, recuerda hacer clic en el botón “calcular” en el nodo “ajuste”, o de lo contrario no se aplicarán los ajustes.

4. Agrega un nodo SaveGeom

Conecta el nodo SaveGeom al nodo Blendshapes.

5. Guarda tu nuevo archivo de resultados

Asegúrate de añadir una ubicación de archivo que no olvidarás. Todo el trabajo duro ya está hecho. Necesitarás esta geometría para hacer el paso final del proceso de preparación de la cara.

Parte 3 Aumentar la resolución en ZRT Face Trainer

Ahora que tienes tu malla completamente preparada, es hora de aumentar la resolución para que el ZRT Face Trainer pueda generar las deformaciones más detalladas y con la más alta calidad posible. Es importante que este paso se realice en Autodesk Maya. La subdivisión en Wrap3 NO funcionará, ya que el orden de vértices cambiará.

1. Comienza importando tu nueva malla facial OBJ en Autodesk Maya. En la misma escena, abre la malla OBJ de destino original con la que empezaste.

2. Haces clic en tu malla de resultados y selecciona la opción “suavizar”.

3. En la ventana “opciones suaves”, debes establecer los niveles de división en 1. El tipo de subdivisión en “OpenSubdiv Catmull-Clark2 y presiona “Aplicar”.

ZRT Face Trainer servicio de rigging facial en la nube
ZRT Face Trainer servicio de rigging facial en la nube

4. Selecciona las mallas de destino y resultados originales (en este orden), navega hasta la opción de menú “malla” y haces clic en “transferir atributos”.

6. En la ventana opciones de transferencia de atributos, haces clic en “Editar” y elige “Restablecer”.

6. Realiza este paso solo si su malla tiene más de 70,000 vértices, al menos tanta resolución como ValidateMesh.obj. Luego, configura las siguientes opciones y presiona “aplicar”. Esto hará que tu nueva malla de resultados adopte todos los atributos valiosos de la malla original, asegurando que no se haya perdido nada durante el paso de registro inicial.

ZRT Face Trainer servicio de rigging facial en la nube
ZRT Face Trainer servicio de rigging facial en la nube

Seguimos aumentando la resolución

7. Ahora, haces clic en la malla resultados y navega hasta la opción de menú “editar”. En el menú desplegable, selecciona “eliminar por tipo” → “historial”.

8. Finalmente, elimina la malla OBJ de destino original de tu escena por completo. La malla agregada en el paso 2.

9. Guarda tu malla de resultados como FBX utilizando la configuración predeterminada. Tu malla de resultados debe ser la única malla en el FBX.

Revisa tu trabajo final en ZRT Face Trainer

¡Último paso! Es hora de verificar si el orden de puntos final coincide con lo que espera ZRT Face Trainer.

Se proporciona una malla de referencia con el orden de puntos correcto (ValidateMesh.obj). Para comprobar la malla de resultados:

1. Importa ValidateMesh.obj y la malla de resultados en una escena de Autodesk Maya vacía. Selecciona ambas mallas dentro de Autodesk Maya, luego ve a la pestaña “deformar” y haces clic en “combinar forma”.

2. En el nodo “Blend Shape”, establece el atributo target en 1.0. Una malla debe mezclarse con la otra sin ningún artefacto.

¡Has terminado! El equipo de desarrollo de ZRT Face Trainer recomienda cambiar el nombre de la malla final para identificar que es la que está completamente preparada. Sube esta malla final al portal ZRT Face Trainer en Ziva Store cuando estés listo para empezar el proceso de rigging.

Conclusión sobre ZRT Face Trainer

Cómo podemos ver, en el rigging facial no hay milagros ni botones que lo hagan todo por sí solo. Puede que este sea un buen sistema de rigging facial, pero sigue teniendo una gran cantidad de trabajos en el proceso.

Tienes más información sobre el tema en la página de los desarrolladores. También tienes más información y comentarios sobre el tema en el foro, sigue leyendo…

ZRT Face Trainer servicio de rigging facial en la nube
ZRT Face Trainer