Le fonctionnement de headtracking
Une caméra posée sur le meuble regarde le joueur. Le plugin déduit la position de cette caméra à partir du meuble lui-même, trouve votre tête dans chaque image, la convertit en position en millimètres, et déplace le point de vue de Visual Pinball X en conséquence.
L'effet « fish-tank »
Quand vous bougez la tête devant un vrai flipper, vous voyez le plateau sous un angle légèrement différent : les objets proches se décalent plus que les objets lointains. headtracking reproduit cet effet sur un écran. Visual Pinball X propose une disposition de vue Window conçue pour cela : l'écran devient une fenêtre fixe sur le meuble, et quand votre tête bouge, le plugin déplace le point de vue pour que la table 3D reste en place derrière la vitre.
Une calibration tirée du meuble lui-même
Pour transformer une tête vue dans une image en position réelle, un programme doit savoir où se trouve la caméra et comment elle voit (sa focale). La plupart des solutions vous demandent des mesures ou une procédure de calibration. headtracking se sert de ce que tout meuble possède déjà : la lockbar et les deux rails latéraux.

- Un réseau de neurones, le modèle anchor, repère la lockbar et les rails dans l'image de la caméra. Il existe un modèle pour les images couleur et un autre pour les images infrarouges.
- Ensemble, ils forment un rectangle de forme connue. Vu en perspective, il donne la focale de la caméra et sa position par rapport à la table, grâce aux points de fuite et à une homographie plane. Les calculs ont été vérifiés à 0 à 3 % près d'un mètre ruban.
- La taille réelle vient de la largeur de la lockbar, que vous saisissez dans VPX. L'inclinaison de l'écran indique au plugin comment le plateau est penché. Ce sont les deux seules valeurs à saisir ; mesurez-les, ne les devinez pas.
- Au lancement d'une table, le plugin cherche le meuble pendant un moment, garde sa meilleure détection, et affiche dans une notification de VPX la position de caméra trouvée. S'il ne reconnaît rien, il suit quand même votre tête par rapport à votre position de départ, simplement sans cette notification.

Trouver votre tête
La tête est trouvée par BlazePose, un modèle de pose du corps qui tourne en quelques millisecondes par image. Il repère d'un coup la tête, les épaules et les poignets, y compris sur les images infrarouges. C'est un détecteur de corps, pas de visage : un détecteur de visage décroche dès que vous vous penchez sur le plateau et que la caméra ne voit plus que le haut de votre crâne. En contrepartie, votre buste (tête et épaules) doit être dans l'image.
Mesurer la distance
- Kinect v2 et Kinect v1 : le capteur de profondeur mesure l'éloignement de votre tête en millimètres. Les deux suivent sur leur flux infrarouge, éclairé par le capteur lui-même, et continuent donc de fonctionner dans une salle de jeu sombre. La Kinect v2 tient 30 images par seconde en infrarouge.
- Webcam : la distance est déduite de la largeur de vos épaules, grâce à la focale retrouvée à partir du meuble. C'est ce qui fait d'une simple webcam un suivi de tête en 3D.
Voir choisir une caméra pour les différences en pratique.
Dans Visual Pinball X
- headtracking est un plugin pour le système de plugins de Visual Pinball X 10.8.1 et plus récent. Il s'active et se règle depuis le menu en jeu, F12 → Plugin Settings → Head Tracking.
- Le suivi tourne dans son propre fil d'exécution ; VPX lit la dernière position de la tête à chaque image sans attendre, et le plugin met la vue à jour.
- La première position de tête stable d'une partie devient la position neutre. Maintenir le bouton de la lockbar pendant 2 secondes recentre sur votre position actuelle.
- Des préréglages de lissage (Stable, Normal, Reactive ou Custom) filtrent les tremblements, et chaque réglage se modifie en direct pendant la partie. Voir les réglages.
- Les problèmes s'affichent à l'écran, pas seulement dans un journal : par exemple quand aucune caméra n'est trouvée, ou quand un autre programme utilise déjà la Kinect.
L'application de démonstration
Chaque version contient aussi headtracking-demo, un programme autonome qui n'a pas besoin de VPX. Il affiche l'image de la caméra avec ce que voit la détection, permet de régler la largeur de la lockbar et l'inclinaison du plateau, et ouvre une fenêtre de parallaxe en 3D où bouger la tête déplace la scène : un moyen rapide de juger le suivi. Il propose aussi une correction en un clic quand une Kinect est branchée mais inaccessible, et le bouton 🎁 Contribute qui partage un relevé de votre meuble.
Tout dans un seul plugin
Les bibliothèques Kinect (libfreenect et libfreenect2), libjpeg-turbo et le moteur ONNX qui fait tourner les réseaux de neurones sont intégrés au plugin, et les modèles sont embarqués dans le programme. Il n'y a ni SDK Kinect de Microsoft ni Python à installer. Tout le projet est écrit en Rust ; CLAUDE.md décrit l'architecture pour les développeurs.