- Spark é um renderizador avançado criado para renderizar 3D Gaussian Splatting em cenas Three.js
- Foi criado pela World Labs e permite posicionar splats junto com outras meshes dentro de cenas existentes
- Tem como objetivo oferecer renderização rápida em todos os dispositivos, com foco em lidar com conteúdo splat em diversos ambientes
- Suporta efeitos splat dinâmicos programáveis, permitindo compor efeitos dentro da cena além da exibição estática
- Suporta vários formatos, como ply, sogs, spz, splat e ksplat, e é possível começar diretamente pela documentação oficial
Renderizador splat integrado a cenas Three.js
- Spark é um renderizador de 3D Gaussian Splatting para Three.js
- Criado pela World Labs
- Pode ser integrado a cenas Three.js existentes e usado junto com outras meshes e splats
Recursos de renderização e formatos compatíveis
- Informa oferecer renderização rápida em todos os dispositivos
- Suporta efeitos splat dinâmicos programáveis
- Os formatos compatíveis são:
- ply
- sogs
- spz
- splat
- ksplat
- A documentação para começar está disponível em Get started
1 comentários
Comentários do Hacker News
A demo é realmente impressionante e roda bem até em um iPhone antigo.
Como desenvolvedor de jogos por hobby, sem muito conhecimento de programação 3D, eu gostaria que houvesse em algum lugar no GitHub ou no site uma definição de uma linha do que é Gaussian Splatting.
Algo como a definição da Wikipedia, “Gaussian Splatting é uma técnica de renderização volumétrica que renderiza dados volumétricos diretamente, sem convertê-los em primitivas de superfície ou linha”, já deixaria o projeto e suas possíveis aplicações muito mais empolgantes.
Se der para criar nuvens, fogo e fumaça de alto desempenho com isso, seria incrível.
A demo de escaneamento de comida, especialmente a seção de exemplos “Interactivity”, é impressionante.
Gostei particularmente da cena em que se olha dentro dos buracos do pão no Mel's Steak Sandwich, e o desempenho é surpreendentemente bom até em um notebook com gráficos integrados, considerando o nível de detalhe visível.
Fico curioso sobre onde essa técnica é usada com mais frequência hoje.
Tipatat forneceu uma boa quantidade de escaneamentos de comida para a demo, e também gosto dos escaneamentos de flores do kotohibi: https://superspl.at/user?id=kotohibi
Não estou sendo irônico; está realmente bem limpo.
Isso também é legal, e o BabylonJS também tem um bom suporte a Gaussian Splatting: https://doc.babylonjs.com/features/featuresDeepDive/mesh/gau...
Como alguém que já usou Babylon, Aframe, Three.js e PlayCanvas [2], fico curioso sobre como eles se comparam.
Pelo que entendi, o PlayCanvas é o mais maduro, tem mais recursos e bom desempenho, mas é comercial; o Babylon é um motor 3D rico em recursos; e o Three.js é bem mais cru. Ele tem bons componentes, como animação e texturas, mas no fim parece que você está montando seu próprio conjunto de ferramentas.
Fico curioso se alguém teve boas ou más experiências com algum deles.
A demo é realmente estável. Fico curioso sobre qual é o principal atrativo do Aframe.
Também fico curioso sobre como será o futuro do Gaussian Splatting: se surgirão usos além de visualização ou “gêmeos digitais” industriais, se será possível editar ou animar isso em um futuro próximo, e quando ficará útil para criação e jogos.
[1] https://github.com/aframevr/aframe
[2] https://playcanvas.com/
Aqui está o link do repositório de um jeito um pouco mais visível: https://github.com/sparkjsdev/spark
Muito legal.
Fico curioso sobre onde está o gargalo de desempenho no momento, especialmente se há alguma percepção sobre cenas dinâmicas.
O exemplo de simulação de partículas fica engasgando, mas melhora bastante quando se gira a câmera; parece que o fundo estático é muito mais pesado do que aparenta.
Por outro lado, independentemente do gargalo, a pirâmide de Sierpinski gerada proceduralmente é excelente.
Provavelmente você virou a câmera para uma direção com menos splats.
Ainda há muito a fazer para obter desempenho consistente, e o próximo passo provavelmente será analisar um sistema de LOD.
Ainda sou bastante cético sobre se Gaussian Splatting tem algum significado além de demos.
Os arquivos são grandes demais. Por exemplo, um único sanduíche de steak tem 12 MB.
No SIGGRAPH do ano passado havia uma réplica do Matterport baseada em Gaussian Splatting, e era preciso fazer streaming de 1,5 GB para ver um apartamento de 2 quartos.
A demo em si é legal.
Os outros têm menos de 10 MB, e vários dos bastante convincentes ficam na faixa de 1 a 3 MB. Por exemplo, o Iberico Sandwich tem 1 MB, e Clams and Caviar tem 1,8 MB.
Métodos de compressão mais avançados também estão chegando. Um exemplo é o SOGS. Este tem 30 MB.
https://vincentwoo.com/3d/sutro_tower/
Dá para colocar 1 milhão de gaussianas, incluindo todos os coeficientes de harmônicos esféricos, em cerca de 14 MB.
Há um bom post no blog da PlayCanvas: https://blog.playcanvas.com/playcanvas-adopts-sogs-for-20x-3...
O trabalho é legal, mas no Firefox de um notebook com GPU Nvidia RTX A3000 o desempenho é bem ruim.
Aqui há núcleos de shader suficientes para causar queimadura de primeiro grau.
Será que dá para andar por aí com um celular e capturar Gaussian Splats de coisas como grama, arbustos e terra?
E depois selecionar um pedaço de chão de 1 metro quadrado ou uma região cúbica de 1 metro com arbustos, repetir blocos de grama e ocasionalmente misturar terra e arbustos para criar um mundo “com cara de Minecraft”?
Acho que seria necessário um hardware bem potente para renderizar milhares de blocos.
Imagino que ficaria muito legal na prática.
Parece realmente incrível.
Será que funciona também em VR quando se abre a página no navegador? Isso seria ainda mais impressionante.