Table of Contents

Preparação e otimização de modelos 3D

Este artigo explica em detalhes como preparar modelos 3D que atendam aos requisitos do EasyAR, cobrindo especificações de formato, tools recomendadas e troubleshooting comum, ajudando developers a melhorar o sucesso do tracking desde a origem.

Formato e especificações do modelo

EasyAR 3D object tracking oferece suporte apenas ao formato Wavefront OBJ. Ao usá-lo, siga os requisitos e especificações abaixo.

Estrutura de arquivos do modelo

Um modelo 3D completo deve incluir os seguintes arquivos:

  • Arquivo .obj: dados geométricos do modelo, incluindo vertices, faces, coordenadas UV etc.
  • Arquivo .mtl: definições de material, incluindo cores e caminhos de texture map.
  • Texture maps: pelo menos uma imagem JPEG ou PNG. Recomenda-se resolução de 512×512 a 2048×2048.

Requisitos de arquivo

  • Todos os arquivos devem ser colocados na mesma pasta e referenciados com caminhos relativos, como texture.jpg. Caminhos absolutos como C:\Models\texture.jpg não são permitidos.
  • Nomes de arquivo e caminhos dentro dos arquivos não devem conter espaços. Recomenda-se usar letras inglesas ou números.
  • A codificação dos arquivos deve ser UTF-8 para evitar falhas de carregamento causadas por texto corrompido.

Requisitos mínimos para arquivos OBJ (.obj)

  • Deve conter vertex
    Vertices geométricos, representados por coordenadas \((x, y, z [, w])\). \(w\) é opcional e o padrão é 1.0. Parâmetros de cor dos vertices não são necessários; se fornecidos, o sistema não os carregará.
  • Deve conter texture coordinates
    Coordenadas de textura, representadas por coordenadas \((u, v [,w])\). \(w\) é opcional e o padrão é 0. Em geral, os valores de \(u\) e \(v\) devem ficar entre 0 e 1. Para valores menores que 0 ou maiores que 1, o sistema os processa por padrão no modo REPEAT: a parte inteira da coordenada é ignorada e então é construído um padrão de repetição infinita, igual ao processamento GL_REPEAT em OpenGL.
  • Deve conter face
    Elementos face devem incluir pelo menos índices de vertices e índices de coordenadas de textura. Estruturas de face poligonal com mais de 3 vertices, como quadriláteros, também são suportadas.
  • Deve conter mtllib
    Referência a um arquivo de material. Pelo menos um arquivo de material MTL externo deve ser especificado, e o caminho do arquivo deve ser relativo, não absoluto.
  • Deve conter usemtl
    O material referenciado pelos elementos do modelo deve especificar um nome de material, e esse nome deve corresponder ao nome do material definido no arquivo de material MTL externo.

Requisitos mínimos para arquivos MTL (.mtl)

  • Um arquivo MTL deve definir pelo menos um material.
  • Texture maps são obrigatórios.
    Em geral, basta especificar o texture map ambiente ou difuso (map_Ka, map_Kd);
    O caminho do texture map deve ser relativo, não absoluto.
  • Outros parâmetros opcionais do texture map não são necessários; se fornecidos, o sistema não os usará.

Preparação do modelo

Você pode preparar arquivos de modelo OBJ que atendam às especificações de várias formas.

  1. Exportar a partir de um modelo existente
    Use tools profissionais como Autodesk Maya / 3ds Max para importar um modelo FBX existente ou de outro formato, selecione “OBJ Export” ao exportar e certifique-se de que as opções “Materials” e “UVs” estejam ativadas.

  2. Criar um novo modelo
    Use tools de modelagem como Autodesk Maya / 3ds Max para criar ou desenhar um modelo 3D e exportá-lo em formato OBJ.

  3. Escanear um objeto real e realizar reconstrução 3D
    Use software de escaneamento e modelagem 3D como Autodesk ReCap ou Bentley ContextCapture, ou um scanner a laser, para realizar reconstrução 3D de um objeto real e exportar o resultado em formato OBJ.

Importante

As texturas do modelo devem reproduzir com precisão as características visuais do objeto real; caso contrário, recognition e tracking não funcionarão corretamente.

Boas práticas para modelos

A seguir estão alguns problemas e exemplos comuns encontrados ao preparar modelos, para referência rápida e verificação.

  1. Garanta detalhes de textura ricos
    A texture do modelo deve ter detalhes de textura ricos.

    Imagem de referência à esquerda: pode ser detectada e rastreada pelo EasyAR. Imagem de referência à direita: não pode ser detectada nem rastreada porque há pouca textura.

  2. Forma do modelo
    O modelo suporta diferentes formas, mas a estrutura principal deve ser convex.

    Ambos os objetos podem ser detectados e rastreados pelo EasyAR.

  3. Verifique os path referenciados no arquivo
    Os path referenciados no arquivo do modelo devem ser relative paths, não absolute paths.

    O modelo à direita não pode ser carregado porque o EasyAR não consegue encontrar o arquivo que usa absolute path.

    Os path referenciados no arquivo do modelo não podem conter espaços ou caracteres especiais.

    O modelo à direita não pode ser carregado porque o path referenciado contém espaços.

  1. Verificar o formato de encoding do arquivo
    Os arquivos de modelo devem usar encoding UTF-8.

    O modelo à direita não pode ser carregado porque seu encoding de arquivo causa um decoding error durante a leitura.

  2. Verificar as normais do modelo
    A direção positiva do normal vector das faces do modelo deve seguir a right-hand rule.

    Os normal vectors das faces sombreadas no segundo cubo têm orientação negativa. Essas faces serão tratadas como invisible faces no EasyAR. Se vistas de dentro do modelo, aparecerão como o terceiro cubo.
    O modelo deve evitar todas as faces com orientação normal negativa.

  3. Número de faces do modelo
    O número de faces do modelo deve ser o menor possível mantendo a forma geométrica do objeto, e normalmente não deve exceder 100.000 triangle faces. Faces demais podem causar:

    • Tempo de carregamento do modelo excessivamente longo, afetando a user experience ao iniciar o aplicativo
    • Aumento do cálculo de face texture projection, afetando o frame rate do aplicativo durante tracking

A qualidade do modelo 3D determina diretamente o sucesso do tracking. Developers devem seguir rigorosamente as especificações de formato, focar na otimização dos detalhes de textura e garantir que o formato dos arquivos esteja correto.