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 SceneEtapas 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ída | Extensão | Como especificar |
|---|---|---|
| glTF 2.0 binário | .glb | detecção automática da extensão (ou FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | detecção automática da extensão (ou FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | detecção automática da extensão |
| STL | .stl | detecção automática da extensão |
| Microsoft 3MF | .3mf | detecçã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.