Corollarium / lajevr

Dive and flight on Laje de Santos Marine Park/Mergulho e Voo virtual no Parque Laje de Santos
https://corollarium.github.io/lajevr/
GNU General Public License v3.0
5 stars 0 forks source link

Gerar VAT #52

Open brunobg opened 2 years ago

brunobg commented 2 years ago

VAT = Vertex Animation Textures https://doc.babylonjs.com/divingDeeper/animation/baked_texture_animations

O código não deve gerar o VAT em tempo de execução. Precisamos gerar ele antes e salvar num arquivo (tem o serializador pronto na BabylonJS). Isso é aplicável aos modelos com animação.

Infelizmente o baker da Babylon assume uma animação de um jeito diferente que está nos meshes que tenho. Vide https://forum.babylonjs.com/t/how-to-find-the-total-number-of-frames-of-a-skeleton-animation/24884 sobre o bug e uma solução. ACHO que também funciona gerar com o baker existente e eliminar as linhas repetidas da textura, mas é preciso confirmar isso.

Tenho os .blend originais se ajudar.

hiperlogic commented 2 years ago

Estou avaliando esse primeiro, pois é algo que ainda não trabalhei e provavelmente será o que demandará mais tempo. Porém, a mecânica básica dos VAT já foi entendida... (não necessariamente como os VAT funcionam de fato, mas o que são, como gerar e como usar... que é o que é necessário por aqui)

Vi o forum sobre recuperar o numero de Frames... ainda estou vendo as mensagens, mas aparentemente o que você disse faz sentido. Se é necessário passar o número de frames nas animações para o baking dos VAT, recuperar o número de frames das animações é algo que deveria ser dado!

brunobg commented 2 years ago

VAT é basicamente um baking da animação numa textura. As posições de vértices são calculadas com os bones pra cada frame e tudo é salvo numa textura. Isso permite animar direto na GPU em vez de calcular os bones em CPU, o que é lento e em JS rapidamente vira gargalo.

A implementação do uso do VAT está pronta e funcionando, o ponto aqui é gerar a textura em si, porque o código da BabylonJS não faz isso direito (é, eu que escrevi ele, mas nem os autores entendem direito das animações e deixaram passar direto o problema até eu topar com ele). O thread lá do forum detalha como fazer isso. Mas eu acho que pode ser mais fácil ver se a textura gerada da forma atual tem linhas repetidas e arrancar elas fora.

brunobg commented 2 years ago

BTW, se você gerar um código legal pode mandar PR pro babylon que será útil.

hiperlogic commented 2 years ago

Ficou faltando só o lance de otimizar os VAT's... mas vai ser um projetito meu por aqui...