Retargeting de webcam a VRM en tiempo real
¿Puede un navegador controlar un avatar 3D usando solo una webcam?
Probé MediaPipe Holistic para ver si puede estimar los movimientos del cuerpo, la cara y las manos para controlar un avatar VRM 1.0 en tiempo real. Realicé esta prueba en un Apple M1 Max utilizando CPU y WASM.
Los resultados muestran que una webcam estándar puede controlar un avatar 3D sin necesidad de costosos equipos de captura de movimiento.
Resultados de la prueba: • Hardware: Apple M1 Max • Entrada: flujo de webcam de 1280x720 • Velocidad efectiva: 17.3 FPS • Tiempo medio de inferencia: 49.17 ms • Éxito: Los 141 fotogramas de pose detectados actualizaron el esqueleto VRM
Cómo funciona: El sistema utiliza un pipeline de múltiples etapas para rastrear 553 puntos:
- 33 puntos para la pose del cuerpo
- 478 puntos para la malla facial (incluyendo los iris)
- 21 puntos para cada mano
El proceso sigue estos pasos:
- MediaPipe detecta los puntos de referencia (landmarks) de la webcam
- Las coordenadas se convierten al espacio de Three.js
- Los datos se mapean a 34 huesos y expresiones de VRM
- Los algoritmos de suavizado reducen el temblor (jitter) mediante la interpolación de movimientos
El retargeting funciona alineando la dirección entre dos puntos de referencia con la dirección del hueso VRM. Por ejemplo, mapea el hombro con el codo para establecer la rotación del brazo. Los coeficientes faciales se mapean directamente a las expresiones del avatar, como el parpadeo de ojos o la apertura de la mandíbula.
Limitaciones:
- Velocidad: 17.3 FPS es bueno para demostraciones, pero no es lo suficientemente fluido para una captura de movimiento profesional a 60 FPS.
- Rotación: Esta es una aproximación direccional. No resuelve la torsión exacta de los antebrazos o los tobillos.
- Complejidad: La prueba no demostró un seguimiento simultáneo estable de la cara y ambas manos a la vez debido a la corta duración de la prueba.
Esta configuración proporciona una forma ligera de crear demostraciones de avatares e interfaces de gestos en el navegador.
