Face Tracking en Unity3D
La idea es implementar un algoritmo de Face Tracking para que el usuario pueda interactuar con el programa sin necesidad de utilizar dispositivos periféricos como el teclado o mouse. El software detecta características de la cara como los ojos y la nariz, y en base a su tamaño calcula la distancia entre el usuario y la cámara.
El primer problema es que Unity no soporta ningún tipo de detección de movimientos de manera nativa, por lo que hubo que investigar la mejor manera de integrar la funcionalidad a la plataforma.
Hay diferentes opciones para integrar face tracking a Unity y ninguna está estandarizada, por lo que la investigación se basó en buscar proyectos de desarrolladores independientes y recolectar información sobre sus experiencias. Finalmente se seleccionaron 3 opciones para empezar:
- Integración de Unity con OpenCV utilizando EmguCV
- Utilización de la librería FaceAPI junto con 6dofstreamer
- Headtracking utilizando un Wiimote
1. EmguCV es una librería para utilizar las funciones de OpenCV con .NET. Existen varios proyectos hechos utilizando la librería. Esta opción fue descartada por problemas de compatibilidad con el sistema operativo. Los desarrolladores que la utilizaron afirmaron que por más que las funciones de OpenCV son fáciles de entender y usar, tuvieron muchos problemas para lograr correr correctamente sus aplicaciones en Windows. Sin embargo, de no encontrar una mejor solución cabe la posibilidad de intentar implementar este enfoque.
2. FaceAPI es una librería específica de Face Tracking. 6dofstreamer es un proyecto opensource que utiliza FaceAPI para lograr face tracking con 6 grados de libertad utilizando una webcam. Los datos se exportan utilizando sockets. Tras profundizar en la opción, la mayoría de los usuarios en los foros de Unity recomiendan esta combinación como la mejor manera de integrar face tracking a Unity sin tener que invertir en hardware como Kinect o Wii.
3. Existe un proyecto muy interesante que utiliza un Wiimote de Nintendo para integrar head tracking con Unity. Sin embargo los desarrolladores no tienen ningún tipo de documentación ni demos de código. Es una opción interesante pero requiere una investigación más profunda.
Se eligió para avanzar con el proyecto la opción 2, dejando las otras dos opciones como alternativas a analizar con más profundidad si la opción elegida fracasa.
Primero se creó un proyecto en Unity con un script que utiliza los datos del streamer para manejar la interacción con el usuario dentro de la aplicación.
Luego se instaló la versión no comercial de la librería FaceAPI. La PC utilizada tiene Windows 7 de 32 bits. Se procedió a ejecutar el 6dofstreamer, para asegurar el correcto funcionamiento de la detección de caras. El programa se ejecuto correctamente y la webcam se encendió, pero en la pantalla solamente se vio una pantalla negra. Probablemente haya habido una incompatibilidad con el modelo de webcam.
Se intentó nuevamente con otra PC, está vez con Windows 7 de 64 bits. Esta vez el streamer no se ejecutó correctamente, obteniendo un error “ API error code -13”.
Se volvió a intentar con otras PCs con el mismo sistema operativo que el anterior, y nuevamente se obtuvo el mismo error. De estas pruebas se dedujo que el 6dofstremer no es compatible con las nuevas versiones de Windows 64 bits.
Se procedió a investigar más en profundidad este error. Resulta que el streamer fue desarrollado en 2010, por lo que todos los usuarios de Windows 7 64 bits obtuvieron el mismo error. Eventualmente se llegó a una posible solución, un desarrollador se dedicó a corregir el streamer para que fuera compatible con Windows 64 bits y Mac, y al parecer varios usuarios pudieron correrlo de manera exitosa.
El problema en este caso fue que el fix fue desarrollado en 2011, y todos los links al proyecto están rotos. El último recurso antes de abandonar esta opción fue enviar mails al desarrollador y a otros usuarios que tampoco encontraron un link funcional, para averiguar si alguno pudo encontrar el archivo del fix.
Obtuve un mail de un usuario que prometió buscar el archivo en su PC, pero no dio resultado. Finalmente en el día de la fecha (2/09/2013), obtuve un mail del desarrollador del fix con el link actualizado. Las primeras pruebas de detección de caras fueron exitosas.
Se procederá entonces a avanzar con esta opción. El próximo paso es lograr la integración con Unity.
Fuentes:
https://code.google.com/p/6dofstreamer/
puedes reenviarme el link corregido que funciona en mac ¿?
ResponderEliminargracias!
antoniocotos@ipglobal.es
interactionfactory.es