JPEG do mundo 3D. O que é glTF?

Definição e uma breve história


GLTF (GL Transmission Format) é um formato de arquivo para armazenar cenas e modelos 3D, extremamente fácil de entender (a estrutura é escrita no padrão JSON), extensível e interage facilmente com as modernas tecnologias da web. Esse formato compacta bem as cenas tridimensionais e minimiza o processamento em tempo de execução para aplicativos usando WebGL e outras APIs. O glTF agora é promovido ativamente pelo Khronos Group como JPEG do mundo 3D.


O GlTF deve ser um formato eficiente e compatível de entrega de ativos que comprime o tamanho das cenas 3D e minimiza o processamento em tempo de execução por aplicativos usando WebGL e outras APIs. O glTF também define um formato de publicação comum para ferramentas e serviços de conteúdo 3D.


A primeira menção ao glTF remonta a 2012, mas entrou em uso em 19 de outubro de 2015, juntamente com o anúncio da especificação do glTF 1.0. No momento, é usada a 2ª versão da especificação (glTF 2.0), lançada em 3 de março de 2017. A seguir, falaremos apenas sobre o glTF 2.0.
Uma descrição detalhada dos interiores desse formato pode ser encontrada em minhas publicações subsequentes: a primeira parte e a segunda parte


A base do glTF e suas vantagens


O glTF é baseado em 2 arquivos: JSON para descrever a estrutura de toda a cena 3D e o arquivo binário, para armazenar todos os dados da cena, incluindo mapas de textura que podem ser "costurados" no arquivo binário ou armazenados por arquivos externos. Há também uma versão binária do glTF chamada GLB, cuja única diferença é que tudo é armazenado em um arquivo de 1 m com a extensão GLB.
Como vantagens adicionais no glTF, você pode destacar:


  • Uma hierarquia clara de objetos na estrutura da cena 3D
  • Armazenamento de informações da cena, como fontes de luz e câmeras
  • Suporte para animação esquelética (animação de juntas)
  • Materiais e shaders mais confiáveis.

Se você comparar o glTF e o COLLADA, as funções que eles suportam são muito semelhantes, mas lembrando que o glTF é principalmente um "formato de transferência", sua vantagem inquestionável será a boa compatibilidade com as tecnologias da web. Para fazer uma analogia, eu usaria os formatos .PSD (Adobe Photoshop) e .JPG. O primeiro é bom para editar o material de origem, mas para o armazenamento e uso na Internet eles usam, no entanto, JPG.


Hoje, o 3D chega ao cliente de fontes completamente diferentes, cada uma com seu próprio formato. Nem todas as informações são necessárias ao usuário, nem todos os formatos podem ser abertos em seu aplicativo. A estrutura da cena deve ser analisada, os dados da geometria 3D convertidos no formato exigido pela API de gráficos. Os dados 3D devem ser transferidos para a memória da placa de vídeo, e o processo de renderização pode ser descrito usando chamadas sucessivas para a API de gráficos. Como resultado, cada aplicativo executável deve criar seus próprios importadores, downloaders ou conversores para todos os formatos de arquivo compatíveis, conforme mostrado no slide.


imagem


O formato GLTF define um padrão para representar o conteúdo 3D em um formato adequado para uso em um aplicativo em tempo de execução. Os formatos existentes não são adequados para transmissão pela Internet: alguns contêm apenas informações sobre a geometria, outros contêm absolutamente tudo e são muito volumosos e difíceis de analisar, sem mencionar a execução em tempo real (tempo de execução).


O GLTF foi projetado apenas para resolver esse problema. Este não é "outro formato de arquivo", dos quais já existem muitos, esta é a definição do formato de transmissão de cenas em 3D!


A estrutura da cena descrita por JSON pode ser facilmente analisada, os dados 3D são armazenados em um formato que é facilmente lido e usado diretamente pelas APIs gráficas e, portanto, não há necessidade de decodificar ou pré-processar os dados 3D. Dessa forma, o GLTF pode ajudar a preencher a lacuna entre criação e renderização de conteúdo.


imagem

Source: https://habr.com/ru/post/pt436686/


All Articles