Cookies para estatística e publicidade
Usamos cookies de estatística e de publicidade, ambos enviados ao Google. Recusar não muda nada do que você vê.Ler a página de privacidade
OBJ
Um formato de malha 3D em texto puro que qualquer programa de modelagem lê.
OBJ
OBJ é um formato de texto puro que abre em qualquer editor. Ele guarda formas e coordenadas em vez de pixels, então continua nítido em qualquer tamanho — uma logomarca levada ao tamanho de um outdoor não perde nada. Ele é usado para mover dados entre programas e a edição.
A extensão é .obj e o nome por extenso é Wavefront Object. Os dois importam menos do que aquilo que o arquivo consegue carregar, e é disso que trata o resto desta página.
A Wavefront Technologies publicou o formato em 1992.
A um formato que se manteve legível por tanto tempo dá para confiar algo que você quer de volta daqui a dez anos.
Ela está publicada por inteiro, então dá para implementá-la a partir do documento em vez de por observação — é por isso que o formato aparece em tantos programas e por isso que arquivos escritos há vinte anos ainda abrem. Especificação publicada não é o mesmo que livre de royalties: quando o formato embrulha um codec, o licenciamento das patentes é uma questão à parte, que a norma não resolve.
OBJ guarda o conteúdo exatamente. Salvar de novo não muda nada, então dá para abrir, editar e salvar quantas vezes você quiser sem acumular estrago — e é isso que faz dele um formato de trabalho e não de entrega.
Blender, MeshLab e Maya leem esse formato, e a maioria dos programas do mesmo tipo também.
Quando um arquivo não abre, o formato raramente é o problema — mais comum é o programa ser mais antigo que ele. Converter para algo mais antigo é o caminho confiável, e é para isso que serve o resto deste site.
Nenhum navegador lê o formato.
Esse é de longe o motivo mais comum para convertê-lo: não que o formato seja ruim, mas que o lugar onde você quer mostrar o arquivo não consegue lê-lo.
OBJ foi feito para ser aberto e alterado. Mantenha o arquivo nesse formato enquanto o trabalho estiver em andamento e exporte a partir dele sempre que precisar de uma cópia pronta.
OBJ é o menor denominador comum do 3D desde 1992. Todo programa de modelagem, toda engine de jogo, todo visualizador online importa isso, o que não é verdade para nenhum outro formato de malha, e ele sobrevive só por isso.
É texto simples, que é a outra metade do apelo. Um vértice é uma linha começando com v seguida de três números; uma face é uma linha começando com f seguida dos vértices que ela une. Dá pra abrir um modelo num editor de texto e entender.
Um OBJ contém geometria e nada mais. Cores, materiais e texturas vivem num arquivo .mtl separado que o OBJ nomeia nas primeiras linhas, e as imagens de textura são arquivos separados de novo, nomeados pelo MTL.
Então um modelo é na verdade uma pasta: um .obj, um .mtl, e quantos arquivos de imagem existirem. Enviar só o .obj — o que as pessoas fazem constantemente — mostra ao destinatário geometria cinza sem textura.
Uma textura é uma imagem plana, e o modelo precisa dizer qual parte dessa imagem pertence a qual parte da superfície. Essas são coordenadas UV — um segundo conjunto de números, um par por vértice.
Elas são guardadas no OBJ, então sobrevivem à viagem mesmo quando os materiais não sobrevivem. Vale saber quando um modelo chega sem textura: se as UVs estão intactas, reanexar uma textura é trabalho de dois minutos em qualquer programa de modelagem.
Os números num OBJ não têm dimensão anexada. Um cubo de dez unidades de lado pode ser dez milímetros, dez centímetros ou dez metros, e o arquivo não diz — cada programa aplica sua própria suposição na importação.
Orientação é a mesma história. Alguns softwares tratam Y como para cima, alguns tratam Z, e o formato não toma posição, então modelos rotineiramente chegam deitados de lado. Os dois problemas se resolvem em segundos ao escalar e rotacionar na importação.
Guardar cada coordenada como texto decimal custa bastante espaço. A mesma malha como STL ou PLY binário é tipicamente de três a cinco vezes menor, e um escaneamento detalhado exportado como OBJ pode chegar a centenas de megabytes.
Também comprime extremamente bem, pelo mesmo motivo — um OBJ compactado é uma fração do próprio tamanho, já que texto decimal é enormemente redundante. Para transferir ou arquivar um modelo, compactar é quase de graça.
Sem animação, sem esqueleto ou ossos, sem hierarquia de cena, sem câmeras ou luzes, e sem modelo de material moderno — o formato MTL descreve uma abordagem de sombreamento do início dos anos 1990.
É por isso que o glTF existe e por que pipelines de jogos o usam em vez disso. OBJ é para entregar uma forma estática de um programa para outro, e faz isso melhor que qualquer coisa. Para um personagem articulado ou uma cena animada, é o arquivo errado.
Fatiadores aceitam OBJ, e a geometria converte para STL de forma limpa já que STL é um subconjunto estrito do que o OBJ consegue expressar. O que importa é se a malha é estanque: toda aresta compartilhada por exatamente duas faces, sem buracos.
Modelos construídos para renderização frequentemente não são. Uma superfície sem espessura fica perfeita num visualizador e é impossível de imprimir, porque um fatiador não consegue decidir o que está dentro. Rodar o arquivo por uma ferramenta de reparo antes de imprimir pega a maior parte disso.
| Extensão | .obj |
|---|---|
| Tipo de mídia | model/obj |
| Publicado por | Wavefront Technologies |
| Primeira publicação | 1992 |