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
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
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
O libfive é em grande parte escrito em C++ com cerca de 40K linhas, e até o autor original tem dificuldades para hackeá-lo
Está procurando o melhor software CAD baseado em código, tentou o cad query e encontrou alguns problemas
Na faculdade, trabalhou com superfícies implícitas em simulador de física de física nuclear
Quer realizar trabalho de árvore abstrata para geração de superfície usando SDFs
Já viu papers e demos de superfícies implícitas e consegue construir um modelo por meio da imaginação
Traz à memória o projeto de Ian Henry
Como alguém que nunca trabalhou com gráficos, achou o projeto muito interessante