Como Converter FBX para glTF em Python

Como Converter FBX para glTF em Python

Problema

Os desenvolvedores precisam converter arquivos de modelo 3D FBX para o formato glTF ou GLB para uso em visualizadores web, motores de jogo e pipelines de renderização modernos. Aspose.3D lida com isso usando Scene.from_file() para carregar o arquivo FBX e scene.save() para gravar a saída glTF.

Nota sobre o suporte a FBX: Aspose.3D FOSS tem suporte a FBX experimental. O tokenizador FBX está implementado, mas o analisador tem bugs estruturais conhecidos: tratamento incorreto de CLOSE_BRACKET e recursão ilimitada em escopos FBX aninhados complexos. Arquivos FBX complexos ou grandes podem acionar RecursionError. FBX simples de geometria plana pode funcionar. Para uso em produção, prefira COLLADA, OBJ ou glTF em vez de FBX. Consulte o FAQ para mais detalhes.

Pré-requisitos

  • Python 3.7 ou posterior
  • Instale via pip: pip install aspose-3d-foss
from aspose.threed import Scene

Etapas de Conversão

Etapa 1: Carregar o arquivo FBX

Use Scene.from_file() para carregar o arquivo FBX. O formato é detectado automaticamente a partir da extensão .fbx.

from aspose.threed import Scene

scene = Scene.from_file("input.fbx")

Etapa 2: Salvar como glTF Binário (GLB)

Chame scene.save() com a extensão .glb para gravar a saída como um arquivo binário glTF compacto. O formato é inferido automaticamente a partir da extensão. Esta é a abordagem recomendada: de arquivo único, compacto e amplamente compatível.

# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")

Nota: FileFormat.GLTF2_BINARY e FileFormat.GLTF são None stub constants na versão atual da biblioteca e não devem ser passados para scene.save(). Use a detecção automática de extensão de arquivo ou o método de fábrica FileFormat.GLTF2() em vez disso.

Para salvar como JSON glTF em vez disso:

scene.save("output.gltf")

Etapa 3: (Opcional) Use GltfSaveOptions

Para ter mais controle sobre a saída glTF, passe um objeto GltfSaveOptions:

from aspose.threed.formats import GltfSaveOptions

opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)

Exemplo de Código

Conversão completa de FBX para GLB em três linhas:

from aspose.threed import Scene

scene = Scene.from_file("input.fbx")
scene.save("output.glb")  # .glb extension triggers binary GLB output automatically

print("Conversion complete: input.fbx -> output.glb")

Formatos de Saída Compatíveis

Ao converter a partir de FBX, os seguintes formatos de saída funcionam de forma confiável:

Formato de SaídaExtensãoComo especificar
glTF 2.0 binário.glbdetecção automática da extensão (ou FileFormat.GLTF2())
glTF 2.0 JSON.gltfdetecção automática da extensão (ou FileFormat.GLTF2())
Wavefront OBJ.objdetecção automática da extensão
STL.stldetecção automática da extensão
Microsoft 3MF.3mfdetecção automática da extensão (ou FileFormat.MICROSOFT_3MF_FORMAT())

Nota: FileFormat.GLTF2_BINARY, FileFormat.GLTF e FileFormat.MICROSOFT_3MF são constantes stub None e não devem ser passadas para scene.save(). Use a detecção automática de extensão de arquivo ou os métodos de fábrica mostrados acima.

Veja também

 Português