3 pontos por GN⁺ 2025-01-09 | 1 comentários | Compartilhar no WhatsApp

Introdução

  • O Fidget é uma biblioteca para representar, compilar e avaliar expressões matemáticas em grande escala, projetada principalmente como backend para superfícies implícitas.
  • É uma biblioteca flexível, que pode ser usada para diversos propósitos.

O que é uma superfície implícita?

  • Uma superfície implícita é uma expressão na forma f(x,y,z)→d, onde d positivo indica que está fora do modelo e d negativo indica que está dentro.
  • Por exemplo, uma esfera de raio 1 pode ser representada por f(x,y,z)=x²+y²+z²−1.
  • O Fidget foca em superfícies implícitas fechadas de forma fechada usando operações aritméticas básicas.

Vantagens da superfície implícita

  • Superfícies implícitas são concisas e adequadas para avaliação paralela em larga escala.
  • Operações CSG (união, interseção etc.) podem ser tratadas de forma simples.
  • Equações fechadas são favoráveis para otimização e permitem rastrear qual ramificação é selecionada durante a avaliação.

Origem

  • Nos últimos 10 anos, tenho pesquisado renderização e avaliação de superfícies implícitas.
  • O Fidget é um projeto de pesquisa pessoal e, em vez de usar um kernel existente como o libfive, foi escrito em Rust para facilitar o uso.

Estrutura da biblioteca

  • O Fidget é composto por três camadas separadas e uma aplicação de demonstração.

Frontend: construção de expressão matemática

  • O Fidget utiliza a linguagem de script Rhai para construir expressões matemáticas.
  • A árvore matemática é deduplicada em um grafo acíclico direcionado.
  • A fita SSA lineariza o gráfico em código linear.

Backend: avaliação rápida e flexível

  • O backend do Fidget é separado do frontend e suporta vários modos de avaliação.
  • O compilador JIT converte bytecode em instruções de máquina para maximizar o desempenho.

Algoritmos

  • O Fidget implementa vários algoritmos de renderização e malha baseados em avaliação rápida.
  • A malha usa Manifold Dual Contouring para garantir watertightness, manifoldness e preservação de características afiadas.

Demo

  • O Fidget inclui várias demos, e a GUI web é a parte mais interessante.
  • É uma oportunidade de explorar tecnologias atuais de desenvolvimento web.

Possibilidades futuras

  • A adição de backend de GPU, melhoria de meshing, construção de biblioteca padrão e bindings para linguagens de alto nível estão em consideração.

Conclusão

  • O Fidget agora está disponível publicamente e pode ser facilmente adicionado a projetos Rust.
  • É fornecido com uma licença amigável para uso de código aberto e uso comercial.

1 comentários

 
GN⁺ 2025-01-09
Comentário do Hacker News
  • Este projeto aborda uma variedade de áreas da ciência da computação, incluindo estruturas de dados, algoritmos, otimização de baixo nível, compiladores, renderização/gráficos computacionais, ferramentas de design de UI/UX e programação GPGPU

    • Atualizações adicionais podem ser recebidas via redes sociais ou por feed RSS de blog
  • O autor estava lendo outros posts excelentes

  • Ele acha que esse projeto teria sido muito útil ao escrever seu próprio desenhador de superfícies implícitas

    • Sua abordagem é parcialmente semelhante, mas menos otimizada e gera GLSL diretamente
    • Sente-se tentado a substituir seu trabalho por esse projeto
  • O libfive é em grande parte escrito em C++ com cerca de 40K linhas, e até o autor original tem dificuldades para hackeá-lo

    • Quando não compila por alguns meses, a build quebra com frequência, então é necessário mexer no CMake
    • Fica surpreso ao notar que os problemas de build não são tão graves
  • Está procurando o melhor software CAD baseado em código, tentou o cad query e encontrou alguns problemas

    • Está buscando recomendações de software para impressão 3D
  • Na faculdade, trabalhou com superfícies implícitas em simulador de física de física nuclear

    • A função R possui a propriedade de ser diferenciável em todos os lugares
    • Supõe que ainda se usa bastante código legado em Fortran
  • Quer realizar trabalho de árvore abstrata para geração de superfície usando SDFs

    • A ideia de usar uma malha/ponto-alvo para encontrar uma árvore que corresponda à forma desejada
  • Já viu papers e demos de superfícies implícitas e consegue construir um modelo por meio da imaginação

    • Fica curioso se é possível fazer tudo o que um kernel b-rep faz
    • Quer ver um kernel rápido, open-source e paralelizável
  • Traz à memória o projeto de Ian Henry

  • Como alguém que nunca trabalhou com gráficos, achou o projeto muito interessante

    • Gostaria que houvesse mais demos
    • Sugeriu ter um menu suspenso no editor web para testar vários programas