Existe uma especificação padrão para representação gráfica 3D?


12

Estou lendo um livro sobre computação gráfica e, em algum momento, mostra um modelo 3D, criado a partir de um arquivo .dat.

Aqui estão algumas regras para a criação do arquivo .dat:

  • Feito de uma lista de posições / faces de vértices
  • Escrito no sentido anti-horário
  • Os rostos terminam com um ponto (.)
  • Frações também são aceitáveis

Quero saber se esse é o padrão e, se não, qual é a maneira padrão de definir um objeto 3D.

Além disso, se houver uma especificação, quem a definiu e onde encontrá-la?

Respostas:


8

Ao falar sobre formatos de arquivo, estamos falando sobre a persistência de alguns dados relacionados a um modelo / geometria 3D. Não há um padrão universal nos formatos de arquivo para a geometria 3D persistente. Existem apenas alguns formatos mais dominantes que outros.

Assim como ocorre com os formatos de arquivo de imagem, os PNGs e JPEGs são os formatos mais comuns existentes atualmente, mas não há um acordo universal entre os aplicativos quanto ao uso de um ou de outro. Cada aplicativo usa o melhor ajuste para seus propósitos.

O mesmo acontece com os formatos de arquivo que armazenam dados 3D. Cada software de modelagem 3D geralmente terá um ou um conjunto de formatos preferidos. A maioria define realmente formatos personalizados que funcionam apenas com a versão específica da ferramenta. Isso pode acontecer por vários motivos, desde a simplificação do funcionamento interno do aplicativo ou agilizando o carregamento de arquivos, até a vinculação do usuário a uma determinada ferramenta de propósito.

Esse .datformato que você descreve é ​​um formato personalizado criado pelos autores do livro, que provavelmente foi projetado com a simplicidade em mente. Parece ser um arquivo de texto semelhante ao formato OBJ do Wavefront , que por sua vez é um formato muito popular para armazenar geometria estática, embora um pouco desatualizado até agora. Pode-se dizer que o .OBJformato é o .BMPdos formatos de modelo 3D.

Outros formatos populares de modelos 3D incluem:

E muitos outros. Explicação mais geral aqui .

Observe também que eu disse no início que esses são formatos para armazenar / manter um modelo ou geometria 3D em um armazenamento offline. Isso não significa (e geralmente não é o caso) que os aplicativos que os utilizam armazenam os dados internamente na memória usando o mesmo layout que o arquivo. Normalmente, esse tipo de dado passa por muito processamento após ser carregado de um arquivo até que, por exemplo, seja exibido na tela.


1
"Normalmente, esse tipo de dados passa por muito processamento após ser carregado de um arquivo até que seja exibido, por exemplo, na tela". como uma imagem é transformada em uma matriz de pixels antes de ser empurrada na tela, independentemente do formato original. (compressão de hardware não obstante)
catraca aberração

@ratchetfreak, mas nem todos os usos de formatos 3D acabam na tela.
Joojaa 28/08

O BMP, sendo um formato binário, não é uma boa contrapartida ao OBJ. Uma correspondência melhor seria o XPM , que é textual.
Ruslan

5

Não há formato padrão para modelos 3D. Alguns comuns estão listados na resposta da glampert, mais pode ser encontrado nesta resposta SE .

Se você estiver projetando seu próprio formato para seus próprios propósitos, (uma coisa bastante comum de se fazer, na verdade), é um bom primeiro passo para ver como você está usando os dados do modelo. Por exemplo, se você estiver focado na renderização, poderá usar o formato que a biblioteca de gráficos espera. Se você deseja reduzir o tempo de carregamento do seu software o máximo possível, reduzir a quantidade de análise e processamento que você precisa fazer pode ajudar. Um utilitário simples que pode gerar um arquivo no formato que seu mecanismo espera significa que você pode simplesmente mapear o arquivo na memória e passar um ponteiro para a sua biblioteca de gráficos.

Por outro lado, se a renderização não for sua principal preocupação e a edição for mais importante para você, você pode considerar um formato mais acessível à edição, como bordas aladas . O uso de um formato de modelo de uso geral pode se adequar aos seus objetivos no início de um projeto, mas, em última análise, há muitas coisas que você pode fazer com modelos 3D e cada formato tem seus próprios benefícios e desvantagens, para que você possa escolher o que melhor funciona para você .


4

Não existe um único padrão que defina o armazenamento de modelos 3D. A API de gráficos se preocupa apenas com triângulos, que são definidos por vértices e índices, indicando quais vértices formam um triângulo.

Muitas empresas criaram seus próprios formatos de modelo com diferentes recursos e objetivos. Um dos mais simples é o formato .obj (Wavefront Object). Que contém listas de posições de vértices, normais e coordenadas de textura e uma lista de índices que compõem os triângulos. Ele também contém materiais, com algumas propriedades básicas como texturas, cores difusas e especulares.

Formatos de modelos mais avançados, como .fbx (FilmBox) usados ​​pela Autodesk, contêm informações adicionais exigidas pelo software de modelagem. Isso pode incluir ossos, hierarquias e ainda mais propriedades de vértices usadas para a capa etc. Portanto, existem "padrões", mas eles não são realmente unificados, pois todo programa pode exigir informações diferentes. Mas o wavefront é uma escolha muito boa, porque muitos aplicativos de modelagem podem exportar para ele e é fácil escrever (encontrar) um importador.


3

Como outras respostas mencionaram, existem vários formatos concorrentes para armazenar dados 3D.

No entanto, um formato específico apareceu desde que essa pergunta foi feita, com muitas características que você esperaria de um "padrão": o formato glTF .


O glTF é um padrão 3D publicado pelo Khronos Group (a organização por trás do OpenGL e Vulkan), que visa compensar as falhas em Collada.

Suas principais vantagens são:

  • É baseado em JSON, o que facilita a análise, serialização, leitura e envio pela rede.

  • Há muito pouca ambiguidade ou redundância no padrão (embora exista algum *). As unidades, entregues, sinais de coordenadas de textura etc. são todos padronizados; tudo é sempre baseado em índice, o que significa que não há redundância de dados. Isso facilita muito escrever um importador.

  • A documentação é muito limpa e completa.

  • O layout dos dados é baseado nos fluxos de trabalho OpenGL / WebGL, o que significa que os modelos importados podem ser usados ​​como dados no mecanismo com pouco encanamento.

  • O padrão é Open Source, e a especificação está hospedada no Github. Isso significa que o padrão estará sempre disponível, utilizável gratuitamente e o processo de desenvolvimento é visível para todos. Por oposição, o futuro dos padrões de código fechado é decidido por interesses privados, que são inerentemente perigosos.

  • O glTF é suportado por muitos gigantes do setor por meio da Khronos (Adobe, Google, Microsoft, Mozilla, Unity); ele pode ser exportado pelo Blender (a exportação do Maya ainda não é oficialmente suportada) e importada pelo Unreal, Unity e Godot.

Veja também:

* Tenho certeza de que as tangentes de mãos variáveis ​​são inúteis.


2

Para adicionar a outras respostas, na verdade existem dois tipos de formatos, intermediário e tempo de execução. Os formatos intermediários (exemplo: COLLADA) são mais detalhados / lentos e são convertidos entre as ferramentas para o formato de tempo de execução customizado, otimizado para um aplicativo / hardware específico. Aplicativos simples que não se importam muito com desempenho podem usar diretamente formatos intermediários.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.