Suporte de formato
Este guia abrange cada formato 3D que o Aspose.3D FOSS para Python suporta, com exemplos de carregamento e salvação e opções-chave para cada um. A biblioteca traduz cada formatos em uma linguagem comum. Scene objeto em carga e serializa esse objeto de volta ao formato alvo na salva, para que uma cena carregada do OBJ possa ser guardada diretamente no glTF.
Formatos suportados
| Formatos de imagem | Extensão | Leia. | Escrever . | Classe de opções | Notas |
|---|---|---|---|---|---|
| OBJ | .obj | - Sim , sim . | - Sim , sim . | ObjLoadOptions | Objetos de observação em frente a onda; .mtl material de carga suportado |
| STL | .stl | - Sim , sim . | - Sim , sim . | StlSaveOptions | Binário e ASCII lido; guardar padrões para AS CII (binary_mode=False) |
| GTF | .gltf / .glb | - Sim , sim . | - Sim , sim . | GltfSaveOptions | Container binário JSON e GLB glTF 2.0 |
| COLLADA | .dae | - Sim , sim . | - Sim , sim . | ColladaLoadOptions / ColladaSaveOptions | Hierarquia de cenas e materiais |
| 3MF | .3mf | - Sim , sim . | - Sim , sim . | ThreeMfSaveOptions | Formatos de fabrico aditivo |
| FBX | .fbx | Parcialmente | — | N/A | Tokenizer ASCII em funcionamento; análise completa está em andamento (tratado como experimental) |
Formatos de OBJ
O Wavefront OBJ é o formato de intercâmbio mais amplamente suportado para malhas estáticas. Aspose.3D FOSS carrega geometria (vertices, normais, coordenadas UV e faces poligonais) e opcionalmente a companheira .mtl Arquivo de material.
ObjLoadOptions
| Propriedade | Tipo de veículo: | Padrão | Descrição: |
|---|---|---|---|
enable_materials | bool | True | Analise o .mtl Arquivo referenciado pelo cabeçalho OBJ |
flip_coordinate_system | bool | False | Converte de Y-up com a mão direita para Z- up com o braço direito |
normalize_normal | bool | True | Normalizam todas as normais de superfície importadas para unidade de comprimento. |
scale | float | 1.0 | Factor de escala uniforme aplicado a todas as posições dos vértices |
Carregamento de um ficheiro OBJ
Passagem . ObjLoadOptions a) para o scene.open() para controlar a carga do material, a orientação das coordenadas e o nível dos vértices:
from aspose.threed import Scene
from aspose.threed.formats import ObjLoadOptions
options = ObjLoadOptions()
options.enable_materials = True
options.flip_coordinate_system = False
options.scale = 1.0
scene = Scene()
scene.open("model.obj", options)
print(f"Top-level nodes: {len(scene.root_node.child_nodes)}")Salvar para o OBJ.
Chama-me . scene.save() com um .obj Extensão para escrever a cena como um arquivo Wavefront OBJ:
scene.save("output.obj")O OBJ exportações escreve posições de vértices e faces de polígonos. Se a cena contém LambertMaterial ou a) PhongMaterial objetos, a biblioteca escreve um companheiro .mtl Arquivo automático.
Formatação STL
STL (STereoLithography) armazena malhas triangulares como uma lista de facetas não indexadas. Ambas as variantes binárias e ASCII são suportadas para leitura; a biblioteca padrão é AS CII na salvação (binary_mode=False) Conjunto binary_mode=True em: StlSaveOptions para saída binária.
StlSaveOptions
StlSaveOptions Não tem campos obrigatórios. Instantiate para passar a scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)Exemplo de ida e volta
Carregar um ficheiro STL com: Scene.from_file() e inspecionar as contagens de vértices antes de salvar para STL:
from aspose.threed import Scene
##Load
scene = Scene.from_file("model.stl")
##Inspect
for node in scene.root_node.child_nodes:
if node.entity:
print(f"{node.name}: {len(node.entity.control_points)} vertices")
##Save
scene.save("roundtrip.stl")O STL armazena apenas geometria de triângulo, sem normais além do normal da faceta, nenhuma coordenada UV, nenhum material e nenhuma hierarquia. Se a sua cena contém quads ou polígonos de ordem superior, eles são triangulados automaticamente na salvação.
Formatos de GLB / glTF
glTF 2.0 é o formato recomendado para a troca 3D moderna. Preserva o gráfico completo da cena (hierarquia de nós, nós nomeados, transformações), materiais (LambertMaterial, PhongMaterial → conversão PBR), e clipes de animação. GLB é a variante do contêiner binário com um único arquivo.
GltfSaveOptions
Instanciar GltfSaveOptions E passar para o scene.save() para escrever saída glTF; usar .glb para o recipiente binário autocontido:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
scene.save("output.gltf", opts) # JSON + external .bin
scene.save("output.glb", opts) # Self-contained binaryApoio material
Aspect.3D os materiais FOSS são mapeados para glTF pbrMetallicRoughness em matéria de exportação:
from aspose.threed import Scene
from aspose.threed.shading import PhongMaterial
from aspose.threed.utilities import Vector3
scene = Scene()
node = scene.root_node.create_child_node("object")
mat = PhongMaterial()
mat.diffuse_color = Vector3(0.8, 0.2, 0.2) # red
mat.specular_color = Vector3(1.0, 1.0, 1.0)
mat.shininess = 50.0
node.material = mat
scene.save("colored.gltf")Verificação da saída glTF
Após a salvação, abra o arquivo JSON e inspecione a versão do ativo, contagem de nós e contavam malha:
import json
with open("output.gltf") as f:
data = json.load(f)
print(f"Asset version : {data['asset']['version']}")
print(f"Nodes : {len(data.get('nodes', []))}")
print(f"Meshes : {len(data.get('meshes', []))}")COLLADA Formatos de imagem
COLLADA (.dae) é um formato baseado em XML que suporta hierarquias de cenas, materiais, múltiplos canais UV e animação esquelética. Aspose.3D FOSS lê e escreve a árvore completa do nó e as definições de material.
from aspose.threed import Scene
##Load a COLLADA file
scene = Scene.from_file("model.dae")
##Inspect top-level nodes
for node in scene.root_node.child_nodes:
print(f" {node.name}")
##Save back to COLLADA
scene.save("output.dae")COLLADA é uma boa escolha quando você precisa de ida e volta hierarquias com nós nomeados e materiais sem qualquer perda de dados.
3MF Format
3MF (3D Manufacturing Format) targets additive manufacturing (3D printing) workflows. It stores triangle geometry, colour, and print-specific metadata in a ZIP-based container.
from aspose.threed import Scene
from aspose.threed.formats import ThreeMfSaveOptions
scene = Scene.from_file("part.stl") # Load from STL
opts = ThreeMfSaveOptions()
scene.save("part.3mf", opts) # Write as 3MF3MF is the recommended export format when targeting slicer software (Cura, PrusaSlicer, Bambu Studio, etc.).
Formato FBX
Status: experimental nesta versão.
Aspose.3D FOSS lê arquivos ASCII FBX no nível de tokenizer. O tokenizador binário FBx pode analisar a estrutura do arquivo, mas o parser completo para nós, malhas e materiais tem erros conhecidos. Os resultados da leitura do FB X devem ser tratados como experimental e verificado antes de uso.
Se os dados de origem estiverem em FBX, converta para glTF ou OBJ primeiro usando um editor 3D antes de carregar com Aspose.3D FOSS. O FBx write não está disponível nesta versão.
Detecção automática de formato
Scene.from_file() e a) scene.open() Detetar o formato a partir da extensão de ficheiro e, se disponível, do cabeçalho binário:
from aspose.threed import Scene
##The library detects each format without being told explicitly
scene_obj = Scene.from_file("model.obj")
scene_glb = Scene.from_file("model.glb")
scene_stl = Scene.from_file("model.stl")
scene_dae = Scene.from_file("model.dae")
scene_3mf = Scene.from_file("model.3mf")Se a extensão estiver ausente ou ambígua, a biblioteca reverte-se para inspeção de cabeçalho (mágicos bytes). IOError com uma mensagem descritiva.
Dicas e melhores práticas
- Utilize glTF ou GLB para oleodutos modernos. glTF preserva o gráfico completo da cena, materiais e dados de animação. É o formato mais completo para interação com motores de jogo e espectadores na web.
- Utilize o OBJ para a máxima compatibilidade. O OBJ é suportado por praticamente todas as ferramentas 3D. É limitado a malhas estáticas, mas é extremamente portátil.
- Utilize 3MF para impressão. 3MF carries colour, orientation hints, and print-specific metadata that the STL format lacks.
- Trata o FBX como experimental. Verifique as notas de lançamento para a versão em que o parsing completo do FBX está concluído.
- Compare a extensão de salva ao formato. Não passe um
.gltfextensão quando você quer GLB binário; usar.glbA extensão determina qual serializador é utilizado. - Verifique a compatibilidade do polígono. STL e 3MF exigem triângulos. Quads e N-gons são triangulados automaticamente; chamada de
mesh.triangulate()antes de salvar para controlar a triangulação explicitamente.