3 points par GN⁺ 2025-01-09 | 1 commentaires | Partager sur WhatsApp

Présentation

  • Fidget est une bibliothèque destinée à représenter, compiler et évaluer des expressions mathématiques à grande échelle, conçue principalement comme backend pour des surfaces implicites.
  • C’est une bibliothèque souple, utilisable pour divers usages.

Qu’est-ce qu’une surface implicite ?

  • Une surface implicite se décrit sous la forme d’une expression f(x, y, z) → d, où un d positif indique une position à l’extérieur du modèle et un d négatif une position à l’intérieur.
  • Par exemple, une sphère de rayon 1 peut être exprimée par f(x,y,z)=x²+y²+z²−1.
  • Fidget met l’accent sur les surfaces implicites fermées exprimées via des opérations arithmétiques de base.

Avantages des surfaces implicites

  • Les surfaces implicites sont concises et adaptées à une évaluation parallèle à grande échelle.
  • Les opérations CSG (union, intersection, etc.) sont gérées simplement.
  • Les équations fermées sont favorables à l’optimisation et permettent de tracer quelle branche est choisie pendant l’évaluation.

Origines

  • J’ai travaillé sur le rendu et l’évaluation des surfaces implicites pendant les 10 dernières années.
  • Fidget est un projet de recherche personnel, écrit en Rust, ce qui le rend plus facile à utiliser que des kernels existants comme libfive.

Structure de la bibliothèque

  • Fidget est composé de trois couches principales séparées et d’une application de démonstration.

Frontend : construction d’expressions mathématiques

  • Fidget utilise le langage de script Rhai pour construire des expressions mathématiques.
  • L’arbre mathématique est dédoublonné dans un graphe acyclique orienté.
  • La forme SSA aplatit le graphe en un code linéaire.

Backend : évaluation rapide et flexible

  • Le backend de Fidget est séparé du frontend et prend en charge plusieurs modes d’évaluation.
  • Le compilateur JIT transforme le bytecode en instructions machine pour maximiser les performances.

Algorithmes

  • Fidget implémente plusieurs algorithmes de rendu et de maillage basés sur une évaluation rapide.
  • Le maillage utilise Manifold Dual Contouring pour garantir l’étanchéité, la manifoldité et la préservation des détails nets.

Démonstration

  • Fidget inclut plusieurs démos, dont la GUI web est la partie la plus intéressante.
  • Il est utilisé comme une opportunité d’explorer les technologies web les plus récentes.

Perspectives

  • L’ajout d’un backend GPU, l’amélioration du maillage, la création d’une bibliothèque standard et des liaisons avec des langages de haut niveau sont à l’étude.

Conclusion

  • Fidget est désormais disponible publiquement et peut être intégré facilement à un projet Rust.
  • Il est proposé avec une licence adaptée aux usages open source et commerciaux.

1 commentaires

 
GN⁺ 2025-01-09
Commentaires Hacker News
  • Ce projet couvre de nombreux domaines de l’informatique, notamment les structures de données, les algorithmes, l’optimisation de performance de bas niveau, les compilateurs, le rendu/les graphismes, les outils de design UI/UX et la programmation GPGPU

    • Il est possible de recevoir des mises à jour supplémentaires via les flux RSS des réseaux sociaux ou des blogs
  • L’auteur lisait un autre excellent article

  • Je pense que ce projet m’aurait été très utile en écrivant mon outil de création de surface implicite

    • Mon approche est quelque peu similaire, mais moins optimisée, et elle génère directement du GLSL
    • J’ai envie de le remplacer par ce projet
  • libfive compte environ 40K lignes en grande partie en C++, et il est difficile à modifier même pour l’auteur initial

    • Si on ne compile pas pendant quelques mois, la build casse souvent, donc il faut corriger CMake
    • Je suis surpris que les problèmes de build ne posent pas un problème plus important
  • Je recherche le meilleur logiciel CAD basé sur du code, j’ai essayé cad query mais rencontré quelques problèmes

    • Je recherche un logiciel recommandé pour l’impression 3D
  • À l’université, j’ai réalisé des travaux sur des simulateurs de physique nucléaire basés sur des surfaces implicites

    • La fonction R possède la propriété d’être différentiable partout
    • Je suppose qu’il reste encore beaucoup de code Fortran legacy
  • Je veux faire un travail d’arbre abstrait pour la génération de surface avec des SDF

    • Idée d’utiliser un mesh/point cloud cible pour trouver l’arbre correspondant à la forme souhaitée
  • J’ai vu des papiers et des démos sur les surfaces implicites et, avec un peu d’imagination, on peut construire des modèles

    • Je me demande s’il est possible de faire ce qui est faisable dans un noyau b-rep
    • J’aimerais voir un noyau rapide, open source et parallélisable
  • Cela me rappelle le projet d’Ian Henry

  • Pour quelqu’un qui n’a jamais fait de travail graphique, ce projet est vraiment intéressant

    • J’aimerais voir plus de démos
    • Je suggère un menu déroulant dans l’éditeur web pour pouvoir essayer différents programmes