Cómo tus juegos detectan tu mano con la cámara

Hand Catch, Swipong, Air Hoops, Shadow Punch: todos usan la misma base para convertir tu cámara en un control. Nada se envía a un servidor.

MediaPipe: visión por computador que corre en tu teléfono

MediaPipe es una librería de Google que detecta manos, caras y poses completas en tiempo real, usando un modelo de aprendizaje de máquina liviano. Lo importante para nuestros juegos: corre 100% en tu dispositivo, dentro del navegador. La imagen de tu cámara nunca sale de tu teléfono o computador para ser procesada en algún servidor externo.

Por cada cuadro de video, el modelo entrega 21 puntos por mano —la punta de cada dedo, cada nudillo, la muñeca—, cada uno con su posición x/y en la imagen. A partir de esos 21 puntos se puede calcular casi cualquier gesto: un puño cerrado, una mano abierta, dos dedos juntos.

De un punto en la imagen a un punto en el juego

Los 21 puntos vienen en coordenadas de la imagen de la cámara —normalizadas entre 0 y 1—, pero el juego necesita coordenadas de su propio mundo: los píxeles del canvas, o unidades de un motor 3D. El primer paso siempre es esa conversión: multiplicar la coordenada normalizada por el ancho y alto reales del área de juego.

const puntoEnJuego = {
  x: puntoDeteccion.x * anchoDelCanvas,
  y: puntoDeteccion.y * altoDelCanvas
};

El verdadero trabajo: que no tiemble

Usada cruda, la detección tiembla —el punto salta un par de píxeles de un cuadro a otro, aunque la mano esté perfectamente quieta—. Un control que tiembla se siente roto, no preciso. La solución es un suavizado exponencial: en vez de saltar directo a la nueva posición detectada, el punto en pantalla se mueve solo una fracción de la distancia cada cuadro.

const SUAVIZADO = 0.25;  // 0 = no se mueve nunca, 1 = sigue crudo, con temblor

posicionActual.x += (posicionDetectada.x - posicionActual.x) * SUAVIZADO;
posicionActual.y += (posicionDetectada.y - posicionActual.y) * SUAVIZADO;

Ese único número es la diferencia entre un juego que se siente bien y uno que no. Muy bajo, y el control se siente pesado, con retraso. Muy alto, y vuelve el temblor. El valor correcto casi siempre se encuentra jugando, no calculando.

¿Quieres una activación de marca con control por cámara? Es exactamente lo que hacemos.

Cotizar un proyecto