Converter PLY para OBJ

Aqui você converte PLY para OBJ de graça e sem conta: solte o arquivo acima e em poucos segundos o resultado está pronto para baixar. A conversão acontece dentro do seu próprio navegador, então o arquivo nunca é enviado. Funciona igual no Windows, no macOS e no Linux e também no iPhone e no Android, e continua funcionando mesmo se você cortar a conexão.

  • Onde roda No seu navegador. O arquivo nunca é enviado.
  • Reconstruído OBJ funciona de um jeito diferente de PLY. Não é a degradação gradual de um codec com perda: o que OBJ consegue expressar é reproduzido fielmente, e o que não tem equivalente ali não sobrevive de jeito nenhum.
  • Limite de tamanho Até 100 MB por arquivo, de graça e sem conta.
  • Vale saber Só a geometria. Materiais, cores, texturas e animação não vão junto, e um modelo colocado várias vezes volta com cada cópia fixada na sua própria posição.

Até 100 arquivos de uma vez. Formatos misturados não são problema.

Um escaneamento vira OBJ quando alguém precisa trabalhar nele

PLY é onde escaneamentos moram e OBJ é onde a modelagem acontece. Todo pacote de escultura e animação lê OBJ sem pensar duas vezes; o suporte a PLY varia de bom, no Blender e no MeshLab, a ausente, numa boa parte das ferramentas que um pipeline de estúdio de fato contém. Quando um escaneamento precisa ser retopologizado, decimado na mão, esculpido ou usado como malha base, o primeiro passo costuma ser uma troca de formato.

A conversão é pequena porque os dois formatos têm ambição parecida. Os dois descrevem uma superfície como uma lista de vértices e uma lista de polígonos sobre eles, os dois são texto, e os dois são antigos o suficiente para tudo ler. O que o OBJ acrescenta é agrupamento e referência a material; o que o PLY acrescenta são propriedades arbitrárias por vértice. Esta conversão carrega a geometria que os dois compartilham.

A cor é o motivo de o arquivo ser um PLY, e o OBJ não vai guardá-la

Um escaneamento por fotogrametria ou luz estruturada guarda sua aparência como vermelho, verde e azul em cada vértice. Não há textura, nem layout de UV, nem arquivo de imagem — a cor é uma propriedade da geometria, o motivo inteiro de o PLY ter virado o formato de escaneamento.

O OBJ que este conversor escreve tem só linhas v e f, e nada mais: sem coordenadas vt, sem referência mtllib, sem .mtl acompanhando. Nem mesmo um arquivo de material feito à mão conseguiria guardar cor por vértice, porque materiais em OBJ se aplicam por grupo de face. O fluxo de trabalho prático é guardar os dois arquivos: fazer o trabalho de geometria a partir do OBJ, e recuperar a cor do PLY depois, gravando as cores de vértice numa textura numa ferramenta que as lê.

O OBJ chega como um grupo único chamado mesh_1

Um arquivo PLY descreve um elemento de vértice e um elemento de face. Não há noção de objeto, grupo ou peça, e nenhum nome em lugar nenhum do cabeçalho para a superfície em si. Então o conversor produz exatamente um grupo o, e como não há nome para carregar, escreve um gerado: mesh_1.

No Blender ou no Maya, é isso que aparece no outliner. Num escaneamento só, é inofensivo; num projeto onde seis escaneamentos estão sendo combinados, é um incômodo real, porque toda importação produz um objeto com o mesmo nome. Renomeie na importação, ou renomeie a única linha o do OBJ num editor de texto antes de importar — é a segunda linha do arquivo.

Sua lista de vértices do PLY atravessa para o OBJ intocada

Esta é uma diferença genuína entre este par e a maioria dos outros aqui. Quando um STL ou um OBJ é lido, vértices coincidentes são soldados em seis casas decimais, porque esses formatos rotineiramente chegam com duplicatas. Quando um PLY é lido, seu array de vértices e seus índices de face são pegos exatamente como escritos.

É o comportamento certo para dados escaneados, que já foram malhados por um software que tomou decisões deliberadas sobre conectividade. Também significa que a conversão não consegue limpar nada: se o escaneamento carrega vértices duplicados, vértices não referenciados ou costuras separadas, eles chegam no OBJ sem alteração. A contagem de vértices no OBJ vai bater com a contagem de vértices do elemento no cabeçalho do PLY, o que é um jeito rápido de confirmar que o arquivo converteu do jeito esperado.

Nuvens de pontos não viram um OBJ aqui

Um PLY contendo vértices e nenhuma face é recusado com uma mensagem explicando o motivo. Esse arquivo é uma nuvem de pontos, o que um scanner produz antes de qualquer coisa criar uma malha, e transformar pontos numa superfície é reconstrução, não conversão — uma operação com parâmetros, uma prévia e um resultado que alguém precisa aprovar.

Faça isso onde pertence. MeshLab e CloudCompare oferecem reconstrução de superfície por Poisson e ball-pivoting; Open3D expõe os dois via Python; o software de todo scanner tem uma etapa de geração de malha. Converta a saída malhada depois. Um conversor que reconstruísse silenciosamente uma superfície entregaria uma forma que você nunca escolheu, e nenhum jeito de saber que isso aconteceu.

O que faces do PLY com mais de três cantos viram

Listas de faces em PLY podem guardar qualquer número de índices, e ferramentas de geração de malha às vezes produzem quadriláteros. Qualquer face com mais de três cantos é triangulada em leque a partir do primeiro índice antes de ser escrita, o que é correto para polígonos convexos e pode se comportar mal em côncavos.

Malhas de escaneamento já são majoritariamente triângulos, então isso raramente se aplica. Onde se aplica, note que o OBJ que sai é só triângulos — o escritor emite três índices por linha f e nunca reconstrói quadriláteros. Se seu fluxo de retopologia quer uma malha base de quadriláteros, isso é algo que você constrói no aplicativo de modelagem, não algo que um escaneamento algum dia forneceria.

Densidade do escaneamento e o tamanho do OBJ resultante

Um PLY binário guarda uma coordenada float32 em quatro bytes. O mesmo número escrito num OBJ ocupa de oito a dezoito caracteres mais separadores, então um OBJ de texto de um escaneamento denso é várias vezes o tamanho do arquivo de origem, e uma malha de fotogrametria bruta com vários milhões de triângulos produz um arquivo de texto que vai fazer um editor sofrer.

Decimar antes é quase sempre a jogada certa, e é uma decisão melhor tomada no MeshLab contra o PLY do que no seu aplicativo de modelagem contra o OBJ, porque o colapso de arestas quadrático do MeshLab pode ser instruído a preservar limites e topologia. Chegar a algumas centenas de milhares de triângulos antes da conversão torna tudo rio abaixo mais rápido e não perde nada que um modelador vá sentir falta.

O que fazer com o OBJ uma vez dentro do seu aplicativo de modelagem

Espere uma superfície facetada. Nenhuma linha vn é escrita, então normais planas por face são calculadas na importação; sombreie suave ou aplique um ângulo de suavização automática e o escaneamento volta a parecer com ele mesmo. Espere nenhum material, e atribua um antes de qualquer outra coisa para que a malha fique visível contra o viewport.

Depois, o trabalho de escaneamento habitual: remova as ilhas soltas que o scanner captou do fundo, preencha os buracos onde ele não conseguiu ver, e retopologize se a malha tiver de ser animada ou subdividida. Nada disso é trabalho de conversão e nada disso pertence a um conversor — o ponto desta etapa é levar a geometria até a ferramenta onde essas operações são um comando cada.

Guarde o PLY depois de ter o OBJ

O OBJ é um arquivo derivado. Tem a forma e nenhuma cor, nenhum valor de confiança ou qualidade por vértice que um scanner escreve, e nenhuma normal se o PLY as carregava. Cada um desses itens é irrecuperável a partir do OBJ.

O padrão que funciona é tratar o PLY como a matriz e o OBJ como uma cópia de trabalho: modele contra o OBJ, e volte ao PLY sempre que a aparência ou os metadados do scanner forem necessários. Os dois arquivos ficam na sua máquina de qualquer jeito — esta conversão roda no navegador sem nada enviado, o que vale saber quando o escaneamento é de um objeto de cliente ou de uma pessoa.

Como converter PLY para OBJ

  1. Solte o seu arquivo PLY nesta página, ou clique para escolher um.
  2. Escolha OBJ como destino. A conversão acontece no seu navegador e o arquivo não é enviado.
  3. Baixe o arquivo OBJ pronto.

PLY ou OBJ: o que muda

PLY comparado com OBJ
PLYOBJ
Nome completoPolygon File FormatObjeto Wavefront
Extensão do arquivo.ply.obj
Tipo de mídiamodel/plymodel/obj
Publicado pela primeira vez19941992
Publicado porStanford UniversityWavefront Technologies
LicençaPadrão abertoPadrão aberto
Situação hojeAtualAtual
Abre no navegadorNenhum navegadorNenhum navegador
Considerado no lugarSTLGLTF, STL

Abrir o resultado

MeshLab e Blender leem tanto PLY quanto OBJ, então dá para comparar o resultado com o original sem um segundo programa.

Para que serve cada formato

OBJ vem da Wavefront Technologies é de 1992. Blender, MeshLab e Maya leem o formato.

De PLY para OBJ: perguntas frequentes

Meu arquivo PLY é enviado para algum lugar?

Não. Esta conversão acontece inteiramente no seu navegador, então o arquivo não sai do seu aparelho. Você mesmo pode conferir: abra a aba de rede das ferramentas de desenvolvedor e converta alguma coisa. Você verá a própria página e as requisições de estatística e de publicidade com que este serviço é pago, e nenhuma que leve o seu arquivo.

Converter PLY para OBJ é grátis?

É. Sem conta, sem marca d’água e sem cota diária para gastar: roda no seu próprio aparelho, então você pode voltar quantas vezes quiser. O navegador processa arquivos de até 100 MB, 100 por vez.

Perde qualidade ao converter PLY para OBJ?

PLY e OBJ descrevem o conteúdo de maneiras radicalmente diferentes. A conversão é, portanto, uma reconstrução e não uma cópia: fiel, mas não idêntica byte a byte. Só a geometria. Materiais, cores, texturas e animação não vão junto, e um modelo colocado várias vezes volta com cada cópia fixada na sua própria posição.

Preciso instalar alguma coisa para abrir um arquivo OBJ?

Para a conversão, não: ela acontece no navegador que você já tem aberto. Para abrir o resultado você precisa depois do programa com que o seu aparelho normalmente exibe Wavefront Object.

Mais sobre esses formatos