Nom et coordonnées
- nom : Fanny Cacilie
- site web : GitLab, GitHub, Linkedin
- nom d’utilisateur GitLab : @caciliefanny
- fuseau horaire : UTC-03:00
Titre
Capture de mouvement en WebXR : à la recherche de l’unicité dans la reprise de performances en direct
Brève description du travail accompli
Dans le cadre de ma participation au programme Google Summer of Code, j’ai réalisé un projet visant à concevoir une plateforme prototype de création d’expériences XR, afin de permettre au public de revivre des performances en direct grâce à la technologie de capture de mouvement.
Mon travail s’est articulé autour de deux modules principaux. D’abord, je me suis attaquée à la capture de mouvement avec MediaPipe Pose, un outil libre de détection de pose en temps réel. Ce module a été intégré à un contexte de diffusion en direct. Le second module était chargé de développer des sessions de réalité augmentée (RA) sur le web à l’aide de WebXR. Pour assurer une intégration fluide entre les systèmes, j’ai utilisé des Web Sockets, soit un Web Socket côté serveur, un Web Socket côté client et une application web.
Le serveur Web Socket établissait un serveur de socket et captait les images vidéo d’une caméra en passant par l’estimation de pose de MediaPipe. Ces images étaient ensuite transmises aux clients au format pickle, accompagnées de l’information sur leur taille. Du côté client, le module Web Socket recevait les paquets de données, reconstituait les images vidéo et les affichait au moyen du paquet Python d’OpenCV.
L’application web a été construite avec Three.js et forme une scène 3D. Elle initialise les éléments de la scène, la caméra, le renderer, l’éclairage et un objet 3D. La scène est compatible avec WebXR et offre des expériences de réalité augmentée. La boucle d’animation assure la mise à jour et le rendu continus de l’objet 3D, créant ainsi une expérience interactive. L’application établit par ailleurs une connexion WebSocket et consigne les messages reçus dans la console.
Ces composants intégrés facilitaient la communication entre serveurs et clients, permettant la transmission et l’affichage d’images vidéo. L’objectif était de créer une expérience de réalité augmentée présentant un objet 3D dans une page web. La manipulation directe des images vidéo au sein d’un module WebXR pour les sessions de RA demeure toutefois en chantier, comme le détaille la section « Ce qu’il reste à faire ».
Code intégré
Le projet a été développé dans son propre dépôt dédié : Motion Capture in WebXR, qui contient le code faisant fonctionner l’application. Les points suivants représentent les principales contributions :
Description : implémenter le serveur WebXR afin de créer une session de réalité augmentée pour une grande variété d’appareils.
Description : concevoir la preuve de concept développée pour détecter les points de repère du corps humain et les produire en sortie.
Description : établir le protocole de communication Web Socket pour transmettre en temps réel les images vidéo de la capture de mouvement.
Code non intégré
- …
Ce qu’il reste à faire
Une tâche importante reste à l’ordre du jour en ce qui concerne le fonctionnement et l’intégration du système. À l’heure actuelle, la communication en temps réel des images vidéo — plus précisément celles où les poses humaines sont détectées par MediaPipe Pose — n’est possible qu’entre des clients et des serveurs écrits en Python, à l’aide de l’approche Web Socket dans un module de test. Or l’objectif central est de combler cet écart, afin de permettre une communication et une intégration fluides entre le module de capture de mouvement, un système en Python, et l’environnement WebXR en JavaScript qui se charge de créer les expériences de RA.
Pour y arriver, l’intégration des deux langages de programmation devient incontournable. Cette fusion ouvrirait la voie à des interactions plus complètes et plus polyvalentes au sein du système. C’est ce défi qui détient la clé de l’avancement des capacités du système. Il servira de fondation à une amélioration future essentielle : la manipulation directe des images vidéo dans le module WebXR pendant les sessions de RA.