Présentation

Halfspace est une application démonstration qui s’appuie sur le noyau Fidget pour la rasterisation et le maillage d’objets implicites. Le projet, initié en avril 2025, fonctionne comme un environnement de développement intégré (IDE) où l’utilisateur peut composer des modèles à l’aide de primitives (sphère, boîte, cylindre…) ou de scripts personnalisés, puis exporter le résultat sous forme d’image ou de maillage triangulaire. Le démonstrateur, accessible via un navigateur, exploite WebGPU pour un rendu quasi temps réel, bien que les navigateurs mobiles (Safari) présentent encore des problèmes d’interaction multitouch.

Architecture et pile technologique

Le cœur de Halfspace est écrit en Rust, ce qui garantit une exécution native rapide et une gestion fine de la mémoire. La version web est générée grâce à wasm‑bindgen, qui compile le code Rust en WebAssembly et expose les fonctions nécessaires à l’interface. L’interface graphique repose sur egui, une bibliothèque GUI immédiate, et egui_dock pour la gestion des panneaux détachables. Cette combinaison permet de livrer une application hybride : le même binaire Rust s’exécute sur le bureau et, via le pipeline WebAssembly, dans le navigateur, sans duplication majeure du code.

Le rendu des champs de distance utilise le pipeline de rasterisation de Fidget, qui calcule les valeurs de distance en chaque point de l’espace 3D. Les normales sont obtenues par différentiation automatique, technique qui dérive les gradients directement à partir de la fonction de champ de distance, assurant une cohérence géométrique sans calculs manuels de dérivées.

Modélisation par champs de distance

Contrairement aux approches classiques de CSG (Constructive Solid Geometry) où les opérations logiques sont visibles, Halfspace place les champs de distance au premier plan. Cette décision facilite le diagnostic de problèmes de continuité. L’auteur illustre le cas d’un champ en forme d’onde dentelée : deux champs différents partagent le même signe (déterminant l’intérieur ou l’extérieur) mais l’un possède une discontinuité de type C0, créant des normales erronées et des artefacts d’éclairage. En uniformisant le gradient à une valeur constante (|∇f| = 1), le rendu devient plus stable et le maillage généré présente une meilleure qualité, même si la correction n’est pas strictement requise pour la validité du modèle.

Le système autorise la composition incrémentale : chaque sous‑modèle peut être paramétré et visualisé séparément, puis combiné via des opérations d’union, d’intersection ou de différence. Cette granularité rappelle la programmation en assembleur, où chaque instruction doit être explicitement définie, mais le cadre fourni par la bibliothèque de primitives réduit la charge cognitive.

Limitations et perspectives

Halfspace reste expérimental et n’est pas destiné à des charges de travail critiques. Le projet vise avant tout à identifier les API « idéales » pour les noyaux implicites, ce qui implique des ruptures de compatibilité potentielles. Le support WebGPU, bien que performant sur les postes de travail, montre des lacunes sur les appareils mobiles, notamment en ce qui concerne le pan/tilt/zoom. De plus, l’absence d’un système de gestion de version des modèles rend difficile la collaboration à grande échelle.

Sur le plan évolutif, l’auteur prévoit d’enrichir la bibliothèque de formes, d’ajouter des outils de débogage de champs (visualisation des gradients, iso‑surfaces) et d’explorer des algorithmes de maillage adaptatif qui tirent parti de la régularité du gradient. L’objectif final est de fournir une plateforme de prototypage rapide pour la fabrication additive, où chaque modèle peut être validé physiquement grâce à une représentation solide fiable.