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 imagemExtensãoLeia.Escrever .Classe de opçõesNotas
OBJ.obj- Sim , sim .- Sim , sim .ObjLoadOptionsObjetos de observação em frente a onda; .mtl material de carga suportado
STL.stl- Sim , sim .- Sim , sim .StlSaveOptionsBinário e ASCII lido; guardar padrões para AS CII (binary_mode=False)
GTF.gltf / .glb- Sim , sim .- Sim , sim .GltfSaveOptionsContainer binário JSON e GLB glTF 2.0
COLLADA.dae- Sim , sim .- Sim , sim .ColladaLoadOptions / ColladaSaveOptionsHierarquia de cenas e materiais
3MF.3mf- Sim , sim .- Sim , sim .ThreeMfSaveOptionsFormatos de fabrico aditivo
FBX.fbxParcialmenteN/ATokenizer 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

PropriedadeTipo de veículo:PadrãoDescrição:
enable_materialsboolTrueAnalise o .mtl Arquivo referenciado pelo cabeçalho OBJ
flip_coordinate_systemboolFalseConverte de Y-up com a mão direita para Z- up com o braço direito
normalize_normalboolTrueNormalizam todas as normais de superfície importadas para unidade de comprimento.
scalefloat1.0Factor 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 binary

Apoio 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 3MF

3MF 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 .gltf extensão quando você quer GLB binário; usar .glb A 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.

Ver também:

 Português