Démonstration vidéo d'une capture de mouvement en temps réel avec LivePose Capture. Dans l'interface de Blender, une figurine humaine en trois dimensions apparaît et se déplace selon les mouvements capturés par le greffon.

Démonstration d’une capture de mouvement en temps réel avec LivePose Capture.

Dans ce billet, je présente comment, lors de mon stage au Metalab, j’ai pu développer un greffon (ou add-on en anglais) permettant le motion capture dans Blender à partir du logiciel LivePose. Tout d’abord, j’y mettrai en avant le partenariat avec l’Orchestre symphonique de Montréal (OSM) dans le cadre du projet SAV+R (pour « Simulation d’acoustique volumétrique en réalité virtuelle (RV), mixte (RM) ou augmentée (RA) ») et dans lequel ces travaux se sont inscrits. J’y détaillerai ensuite les outils utilisés. Puis, j’y présenterai le fonctionnement de l’extension avant d’aborder, pour terminer, ce que mes travaux m’ont permis d’accomplir.

La capture de mouvement (motion capture en anglais, ou en abrégé mocap) regroupe l’ensemble des techniques permettant d’enregistrer les positions et rotations de sujets entiers. Une restitution visuelle de ces mouvements peut alors être réalisée en temps réel par le biais de différents outils, dont les moteurs de rendu 3D.

Les technologies de création artistique sont de plus en plus accessibles, notamment les outils de capture de mouvements qui prennent une part de plus en plus importante dans la pratique des arts technologiques. On retrouve ainsi la capture de mouvements aussi bien dans des performances live que dans des installations interactives 1.

Il existe des logiciels libres et gratuits comme LivePose qui permettent de réaliser de la reconnaissance et du suivi de pose et de mouvement en temps réel. Un outil comme l’extension Blender pour LivePose permet alors aussi bien à des personnes débutantes qu’à un niveau professionnel d’incorporer aisément de la capture de mouvement dans leur pratique artistique, quelle qu’elle soit.

La thématique de la capture de mouvement a été explorée dans un autre stage sur la reproduction de visages dans Blender.

Le projet SAV+R

Capture du dessus de l'orchestre, avec répartition des différentes caméras et des interprètes.

Capture du dessus de l’Orchestre symphonique de Montréal, avec répartition des différentes caméras et des interprètes.

Ce stage a pour objectif initial de répondre aux besoins du partenariat initié avec l’Orchestre symphonique de Montréal (OSM) dans le contexte du programme de recherche SAV+R, nommé ainsi pour « Simulation d’acoustique volumétrique en réalité virtuelle (RV) ou réalité mixte (RM) ». Le projet liant le Metalab et l’OSM vise à faire vivre la musique classique dans une expérience immersive de navigation sonore en réalité augmentée.

C’est ainsi que Musique6D Inc. développe l’application mobile OSM Polyphonique en partenariat avec l’OSM. Dans cette expérience interactive de spatialisation sonore en réalité augmentée, une personne peut naviguer au coeur de l’orchestre de façon spontanée. En balayant le lieu qui l’entoure et en inclinant légèrement la caméra de l’appareil vers le sol, il est alors possible de visualiser et de parcourir les différentes familles d’instruments de l’orchestre : bois, percussions, cuivres…

Au fil du développement, la dimension visuelle est naturellement venue se rajouter à celle du son spatialisé pour réaliser un environnement immersif. On souhaite maintenant apporter aux représentations des instruments, déjà évocatrices, des animations qui donnent vie à la scène 3D au rythme des œuvres musicales. Il s’agit donc de modéliser les musiciens de l’orchestre ainsi que sa cheffe pour restituer leurs mouvements réels et la gestuelle propre aux performances musicales jouées par l’application.

Le dispositif d’enregistrement à l’OSM

C’est donc après deux captations audio à l’OSM que le Metalab a disposé des caméras de profondeur Realsense à plusieurs points de l’orchestre pour en obtenir une capture globale permettant sa reconstitution intégrale. Le week-end du 5 et 6 mars, j’ai accompagné l’équipe du Metalab pendant deux jours à l’OSM pour aider à la réalisation des captations vidéos nécessaires à la reconstitution virtuelle de l’orchestre.

Photographie d'une des caméras de profondeur Realsense utilisées.

Photographie d’une des caméras de profondeur Realsense utilisées.

Les caméras, des Intel® RealSense™ Depth Camera D435i, ont été réparties stratégiquement dans l’orchestre de manière à couvrir les mouvements de la majorité des interprètes. Au lancement des enregistrements, il a été nécessaire de faire claquer un clap de cinéma face caméra, pour plus tard simplifier le raccord synchronisé du son aux flux d’images.

Outils utilisés

Les démonstrations que j’ai dû présenter à l’issue de mon stage devaient inclure la capture en temps réel de la posture du corps d’un individu, ainsi que sa représentation visuelle sous forme d’avatar dans des environnements virtuels. C’est sur ce dernier point qu’est intervenu le besoin de la conception d’un greffon pour Blender. Pour y répondre, j’ai fait appel à plusieurs outils qui ont tous été choisis pour leur avantage d’être libres et Open Source (FOSS, pour Free and Open Source Software):

  • LivePose (détection et envoi des données de pose) [Outil du Metalab]

  • Blender (animation et composition 3D)

  • greffon Rigify pour Blender (rigging de modèles/avatars)

  • greffon LivePose Capture pour Blender (réception et traitement des données de pose) [Outil du Metalab]

LivePose

Dans le cadre de ses recherches, le Metalab de la SAT développe LivePose, un outil en lien avec l’interactivité permettant la détection de la position du public et la détection de points-clés (keypoints) du corps et du visage à partir de flux vidéo issus de caméras. Il est possible de récupérer les différents points clés détectés à l’aide de messages OSC transmis par LivePose et accessibles par des filtres. LivePose m’a donc été utile pour capter les mouvements des interprètes de l’OSM lors de ses performances. À l’aide du greffon que j’ai conçu, j’ai alors pu contrôler des modèles 3D dans Blender via les messages ainsi créés.

Rigify

Pour procéder plus simplement au rigging et à l’animation de modèles, je fais appel à l’addon Rigify inclus à Blender. Ce dernier permet notamment la création de blocs d’armatures préconçues pour des modèles humanoïdes, puis l’auto-génération des rigs associés avec un nommage standardisé de leurs os. La question du nommage des os d’animation est importante puisqu’elle nous permet notamment d’automatiser de manière simple l’association des keypoints envoyés par LivePose aux os de pose des modèles à animer.

Greffon LivePose Capture

Ensuite, le greffon pour Blender permet de réaliser le branchement entre LivePose et les modèles 3D d’avatars à animer. Le nom qui lui est donné est « LivePose Capture » ou « livepose4blender » (de la même manière que satie4blender, satie4unity). Son développement a été réalisé aussi bien sur système d’exploitation MacOS (Monterey), Windows que Linux (PopOS!), pour s’assurer d’une certaine compatibilité et ne pas restreindre ses utilisateurs. En théorie, ce greffon est donc fonctionnel sur tous ces supports. Puisqu’il est en cours de développement, il comporte néanmoins des instabilités comme des anomalies dans sa gestion de la mémoire.

L’objectif principal de ce greffon est de simplifier l’utilisation du motion capture pour les artistes utilisant des logiciels de modélisation 3D. Plusieurs guides d’utilisation ont d’ailleurs été rédigés à cet effet :

Les avantages à terme d’une telle extension sont de simplifier l’utilisation du motion capture, avec une grande facilité et rapidité de déploiement, mais aussi d’accélérer le processus de rigging d’un modèle (à l’aide de la simplification du workflow de Rigify). Outre le fait d’être libre et open source, elle est également configurable (par le biais des filtres JSON de LivePose et de son interface de configuration) et permet grâce à Blender d’exporter des animations dans plusieurs formats (Motion Capture BVH, FBX, glTF 2.0, …). Dans le futur de son développement, elle pourra permettre la prise en charge de l’animation de plusieurs modèles de manière simultanée, mais également une capture de jeu (performance capture) complète, avec l’utilisation de l’expression du visage et de l’action des mains.

L’utilisation du greffon pour LivePose

Je présente ici le processus de fonctionnement du greffon dans ses grandes lignes. Son fonctionnement a été pensé pour être intégré au sein d’un pipeline complet, illustré ci-dessous, permettant l’export d’animations dans des scènes Unity où est réalisée la spatialisation du son pour le projet SAV+R.

Pipeline complet.

Pipeline complet.

Comme le montre cette figure, la première étape est de transférer les messages de LivePose au greffon LivePose Capture dans Blender. Dans le logiciel 3D, il est alors possible de manipuler les modèles pour rectifier leur animation par motion capture et de composer ses scènes. L’étape finale est alors d’exporter les résultats obtenus dans Unity, moteur de jeu dans lequel d’autres possibilités d’outils créatifs s’offrent pour l’interactivité, le temps réel ou la sonorisation dans nos scènes 3D.

La communication entre LivePose et le greffon est assurée par des messages de protocole OSC. Au format de filtres « /livepose/skeletons/0/0/keypoints/ », ceux-ci permettent d’accéder aux coordonnées des différents points clés du modèle de squelette détecté (nez, mains, genoux, etc.). Les numéros d’index, initialement fixés à « /0/0/ », permettent également de parcourir les différentes caméras et leurs différentes poses, dans le cas où plusieurs sujets seraient filmés.

Le protocole OSC

Open Sound Control (OSC) est un protocole dédié à la mise en réseau d’appareils multimédias, notamment pour en permettre le contrôle en temps réel. C’est un protocole flexible et précis qui est utilisé par LivePose pour partager les données traitées, telles que les positions de chaque os détecté ou des pourcentages de précision d’estimation.

Protocole OSC en local sur un même ordinateur.

Protocole OSC en local sur un même ordinateur.

Protocole OSC entre deux ordinateurs sur le même réseau.

Protocole OSC entre deux ordinateurs sur le même réseau.

Différents types de configuration de capture sont permis par ce mode de transmission de données entre LivePose et le greffon Blender. En effet, comme présenté ci-dessus, il est à la fois possible de communiquer entre deux ordinateurs sur le même réseau ou bien seulement en local sur un même ordinateur.

Configuration de l'écoute des messages OSC dans le greffon.

Configuration de l’écoute des messages OSC dans le greffon.

Lecture d'un enregistrement de la cheffe d'orchestre par LivePose.

Lecture d’un enregistrement de la cheffe d’orchestre par LivePose.

À l’aide des fichiers de configuration JSON de LivePose, il suffit de spécifier les adresses destinataires auxquelles envoyer les messages OSC. C’est de cette manière que nous parvenons à traiter les enregistrements de l’OSM avec LivePose, puis à animer des modèles dans Blender avec les données reçues par LivePose Capture. Les enregistrements des performances de l’OSM ont été enregistrés au format ROS bag, qui peuvent être lus et analysés par LivePose.

Le rigging sur Blender

Pour animer les modèles 3D, nous faisons appel à la cinématique inverse sur les rigs qui leur sont associés. Le principe de la cinématique inverse est de partir de la position et orientation d’un os que l’on veut atteindre, puis de résoudre l’ensemble des positions et orientations des autres os en hiérarchie dans le squelette associé. Ceci en utilisant des informations de contraintes et d’effets appelés effecteurs (effector) entre les os du rig de pose, dont des contraintes de distances limites pour ne pas créer de déformations des modèles. En déplaçant uniquement les extrémités et la base des squelettes aux nouvelles positions calculées à partir des coordonnées données par LivePose, nous parvenons alors à déplacer l’intégralité des modèles d’avatars.

Une autre technique utilisée est celle de la cinématique directe. Cette technique consiste à affecter une pose à un squelette d’animation en modifiant uniquement les paramètres de ses articulations. Pour chaque série d’articulations inter-reliées, les rotations des articulations sont affectées individuellement, en partant de la base du corps. C’est un processus qui peut être plus laborieux, car il y a inter-dépendance entre les articulations.

Il est préférable d’utiliser la cinématique inverse puisque le mouvement calculé permet de positionner toute articulation sans devoir se soucier des parents dans le rig d’animation. Cela évite de nombreuses opérations, notamment si nous avions à déplacer l’extrémité d’un membre détecté par LivePose sans avoir les coordonnées de sa base et de son articulation, quand ces points seraient situés hors-champ pour LivePose.

La méthode que je propose est donc de présenter tout d’abord un résultat par cinématique inverse (par déplacement des os de pose en extrémité des membres), pour ensuite éventuellement ajuster le contrôle sur le modèle par le code, avec application de la cinématique directe. C’est le cas pour le positionnement des articulations à partir d’angles de fléchissement calculés sur les membres. Le mouvement détecté par LivePose est ainsi globalement ajusté à partir de la physique des armatures utilisées, puis corrigé par application de méthodes mathématiques implémentées dans LivePose Capture (par exemple la fonction de calcul d’angles des articulations).

Ainsi, la combinaison des deux modes de cinématique devrait permettre d’obtenir un mouvement plus réaliste, qui correspond de manière fidèle à la fois aux limites du squelette de pose dans Blender, mais aussi aux poses détectées par LivePose.

Workflow de rigging à l'aide du greffon Rigify, en 3 étapes.

Workflow de rigging à l’aide du greffon Rigify, en 3 étapes.

Par ailleurs, le processus de rigging en lui-même a été simplifié pour minimiser le nombre d’actions à effectuer par l’utilisateur. À partir de Rigify pour ses armatures d’animation, le workflow consiste simplement en l’apposition de celles-ci aux modèles à contrôler. Leur association est ensuite automatisée. Il suffit alors de procéder à la capture de mouvement en démarrant un serveur d’écoute de messages OSC depuis LivePose Capture.

Conclusion

En définitive, le greffon qui a été conçu participe à rendre le motion capture plus accessible au grand public. Il a été développé pour être facile à prendre en main, mais aussi pour être simple et rapide à déployer. Il a également été choisi de garder un code clair, pour que celui-ci puisse être largement décliné à différents usages non nécessairement envisagés. Avec le temps et les contributions de ses utilisateurs, cet outil pourra être rendu plus complet.

Une des applications envisageables pour ce greffon dans le futur est le contrôle de caméras. À la manière d’un casque VR, il serait alors possible de déplacer un champ visuel à l’aide de l’estimation faite par LivePose de la position des yeux et de la direction du regard. Cela est réalisable en fixant des caméras sur un rig contrôlé avec le greffon. Bien entendu, toute autre estimation d’orientation pourrait être utilisée à la place ou en complément. Par exemple, il est possible de contrôler des modèles seulement à l’aide des mains, à la manière de marionnettes. Pour aller plus loin, il est même réalisable d’interagir avec n’importe quel élément de scène 3D Blender (caméras, lumières, haut-parleurs, maillages, autres armatures, etc.). Enfin, une autre technique qui serait intéressante à explorer est la simulation de tissus sur les modèles contrôlés.

Remerciements et partenariats

  • Soutien financier du ministère de l’Économie et de l’Innovation du Québec.

  • SAV+R : Simulation d’acoustique volumétrique en réalité virtuelle (RV), mixte (RM) ou augmentée (RA). Projet de recherche en navigation sonore dirigé par le Metalab en collaboration avec l’OSM. En cherchant à valoriser les innovations technologiques issues de la recherche en lien avec des applications artistiques, SAV+R établit un pont entre le milieu de la recherche et celui des établissements de promotion culturelle, mais aussi de l’entrepreneuriat.

  • OSM : Orchestre symphonique de Montréal, avec lequel se déroule le partenariat SAV+R et qui a été enregistré à la Maison symphonique de Montréal, située à la Place des Arts. Il est intéressant de noter que c’est le seul orchestre au monde qui possède une octobasse.

  • OSM Polyphonique : Application de navigation virtuelle sonore et immersive en réalité augmentée dans l’orchestre de l’OSM. En faisant également appel à la technologie WalkthrumusicTM créée par le musicien Zack Settel et Expériences Musique6D, l’OSM souhaite faire vivre la musique autrement, en dehors des salles, grâce à l’apport des nouvelles technologies. Les animations et la conception visuelle de l’application sont signées par le studio interactif Dpt.

  • SAT : Société des Arts Technologiques, dont l’établissement est situé à Montréal (QC, Canada).

  • Metalab : Laboratoire de recherche et développement (R&D) de la SAT.

Liens et références

LivePose : Logiciel de suivi de mouvement/pose gratuit et open-source développé par le Metalab et utilisé pour traiter les enregistrements des performances de l’OSM.

Blender : Logiciel d’animation CGI 2D et 3D gratuit et open source utilisé pour visualiser les mouvements restitués par les messages de données de mouvement OSC envoyés par LivePose et ainsi animer des modèles d’avatars.

Greffon Rigify : Outil complémentaire pour le rigging automatique à partir de composantes d’armatures et d’os.

Greffon LivePose Capture : L’extension Blender développée pour traiter les données de LivePose dans Blender, ce afin d’effectuer une capture de mouvements avec les enregistrements vidéo de performance de l’OSM.

Protocole OSC : Format de transmission de données utilisé pour le contrôle en temps réel entre LivePose et son greffon pour Blender.


Publié le 09/12/2022 par Eliès Jurquet (ejurquet(at)sat.qc.ca)

Footnotes

  1. Exemples de projets liés au motion capture - Sam Rolfes - Bunny’s Dream (Marionnettes en VR) - Inition London - Westfield’s Future Fashion event