Présentation du prototype
« Jelly Sheet » est une démonstration interactive publiée sur le site mrdoob.github.io/codevember-2026/01/ dans le cadre de l’événement Codevember 2026. Le rendu se déroule dans un navigateur : l’utilisateur peut faire glisser le tissu à l’aide du pointeur et suspendre l’animation en appuyant sur la barre d’espace. Aucun texte descriptif n’accompagne la page, le comportement se limite à ces deux contrôles.
Architecture technique probable
Le projet est hébergé sur GitHub Pages, ce qui implique l’utilisation de fichiers statiques (HTML, CSS, JavaScript). Le rendu visuel d’un tissu souple nécessite un moteur graphique capable de dessiner des maillages en temps réel ; les projets de mrdoob s’appuient habituellement sur three.js, une bibliothèque WebGL qui expose une API JavaScript pour la création de scènes 3D. La présence d’une interaction « drag » et d’une mise en pause indique la présence d’une boucle d’animation contrôlée par requestAnimationFrame, ainsi que d’un gestionnaire d’événements pointermove et keydown.
Mécanisme de simulation du tissu
Un tissu réaliste se construit à partir d’un maillage de points (ou « vertices ») reliés par des contraintes de distance. La plupart des implémentations JavaScript utilisent l’intégration de Verlet, qui conserve la position précédente du point pour calculer la nouvelle position sans recourir à des dérivées explicites. Cette méthode minimise les coûts de calcul et reste stable même avec des pas de temps variables, ce qui convient aux environnements de navigateur où la fréquence d’affichage peut fluctuer. Les contraintes sont résolues par itération locale, typiquement entre 3 et 5 passes par image, afin de préserver la longueur des arêtes du maillage.
Contraintes de performance et limites observées
Le rendu s’effectue entièrement sur le GPU via WebGL ; la charge principale repose sur le CPU pour la mise à jour des positions des points et la résolution des contraintes. Sur des machines modernes, un maillage de l’ordre de 30 × 30 points (900 vertices) reste fluide à 60 fps, mais l’ajout de subdivisions supplémentaires augmente linéairement le nombre d’opérations de contrainte, ce qui peut entraîner des baisses de fréquence d’images. L’absence de paramètres configurables dans l’interface empêche l’utilisateur de tester ces limites directement. De plus, le code source n’est pas exposé, ce qui rend impossible de vérifier la présence d’optimisations telles que le regroupement de contraintes ou l’utilisation de textures de données pour le calcul sur le GPU.
Perspectives d’évolution
Sans accès au code, il est difficile d’évaluer la modularité du prototype. Une amélioration possible serait d’exposer les paramètres de simulation (nombre de points, nombre d’itérations, coefficient d’amortissement) via une interface graphique, permettant ainsi d’étudier l’impact sur la stabilité numérique et la charge GPU. L’intégration de shaders de calcul (GLSL compute) pourrait également déplacer la résolution des contraintes vers le GPU, réduisant la charge CPU et augmentant le nombre de points manipulables en temps réel.