Compatibilitat de formats

Aspose.3D FOSS per a Python pot llegir i escriure set formats 3D utilitzant una única representació d’escena en memòria. La biblioteca tradueix cada format a un objecte comú Scene objecte en carregar i serialitza aquest objecte de nou al format de destinació en desar. Això vol dir que una escena carregada des d’OBJ es pot desar directament a glTF sense cap pas de conversió intermediari.


Formats compatibles

FormatExtensióLecturaEscripturaClasse d’opcionsNotes
Wavefront OBJ.objObjLoadOptions.mtl càrrega de material compatible
STL (binari).stlStlSaveOptionsLectura binària i ASCII; per defecte, el desament és binari
STL (ASCII).stlStlSaveOptionsCicle complet verificat
glTF 2.0.gltfGltfSaveOptionsGraf complet de l’escena, materials i animacions preservats
GLB (binary glTF).glbGltfSaveOptionsContenidor binari d’un sol fitxer
COLLADA.daeColladaLoadOptions / ColladaSaveOptionsJerarquia de l’escena i materials
3MF.3mfThreeMfSaveOptionsFormat de fabricació additiva
FBX.fbxParcialNoN/AEl tokenitzador funciona; el parser complet està en procés (no està llest per a producció)

Format OBJ

Wavefront OBJ és el format d’intercanvi més àmpliament compatible per a malles estàtiques. Aspose.3D FOSS carrega geometria (vèrtexs, normals, coordenades UV i cares poligonals) i opcionalment el companion .mtl fitxer de material.

ObjLoadOptions

PropietatTipusPer defecteDescripció
enable_materialsboolTrueAnalitza el .mtl fitxer referenciat per la capçalera OBJ
flip_coordinate_systemboolFalseConvertir de Y-up amb mà dreta a Z-up amb mà dreta
normalize_normalboolTrueNormalitzar totes les normals de superfície importades a una longitud unitària
scalefloat1.0Factor d’escala uniforme aplicat a totes les posicions dels vèrtexs

Carregant un fitxer OBJ

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)}")

Desant a OBJ

scene.save("output.obj")

L’exportació OBJ escriu les posicions dels vèrtexs i les cares dels polígons. Si l’escena conté LambertMaterial o PhongMaterial objectes, la biblioteca escriu un fitxer complementari .mtl fitxer automàticament.


Format STL

STL (STereoLithography) emmagatzema malles de triangles com una llista no indexada de facetes. Es suporten tant les variants binàries com les ASCII per a la lectura; la biblioteca utilitza per defecte el format binari en desar.

StlSaveOptions

StlSaveOptions no té camps obligatoris. Instancia’l per passar a scene.save():

from aspose.threed.formats import StlSaveOptions

opts = StlSaveOptions()
scene.save("output.stl", opts)

Exemple d’anada i tornada

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")

STL només emmagatzema geometria de triangles, sense normals més enllà de la normal de la faceta, sense coordenades UV, sense materials i sense jerarquia. Si la vostra escena conté quads o polígons d’ordre superior, es triangulen automàticament en desar.


Format glTF / GLB

glTF 2.0 és el format recomanat per a l’intercanvi 3D modern. Conserva el gràfic complet de l’escena (jerarquia de nodes, nodes amb nom, transformacions), materials (LambertMaterial, PhongMaterial → conversió PBR), i clips d’animació. GLB és la variant del contenidor binari d’un sol fitxer.

GltfSaveOptions

from aspose.threed.formats import GltfSaveOptions

opts = GltfSaveOptions()
scene.save("output.gltf", opts)   # JSON + external .bin
scene.save("output.glb",  opts)   # Self-contained binary

Suport de materials

Els materials Aspose.3D FOSS es mapen a glTF pbrMetallicRoughness en exportació:

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")

Verificant la sortida glTF

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', []))}")

Format COLLADA

COLLADA (.dae) és un format basat en XML que admet jerarquies d’escena, materials, múltiples canals UV i animació esquelètica. Aspose.3D FOSS llegeix i escriu l’arbre complet de nodes i les definicions de materials.

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 és una bona elecció quan necessites fer un viatge d’anada i tornada de jerarquies amb nodes i materials amb nom sense cap pèrdua de dades.


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.).


Format FBX

Estat: en curs (no està llest per a producció).

FBX (.fbx) el suport a Aspose.3D FOSS es troba actualment a la fase de tokenitzador. El tokenitzador binari FBX pot analitzar l’estructura del fitxer, però l’analitzador complet de nodes, malles i materials té errors coneguts i no està complet. Els resultats de lectura FBX s’han de considerar experimentals.

No utilitzeu FBX en les cadenes de producció amb aquesta versió. Si les vostres dades d’origen són en FBX, convertiu-les primer a glTF o OBJ utilitzant Blender o FBX Review abans de carregar-les amb Aspose.3D FOSS.

No s’admet l’escriptura de FBX.


Detecció automàtica del format

Scene.from_file() i scene.open() detecta el format automàticament utilitzant l’extensió del fitxer i, quan estiguin disponibles, els bytes màgics a la capçalera del fitxer:

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")

Si l’extensió és absent o ambigua, la biblioteca recorre a la inspecció de la capçalera (magic bytes). Els fitxers no compatibles o no reconeguts generen una IOError amb un missatge descriptiu.


Consells i bones pràctiques

  • Utilitzeu glTF o GLB per a pipelines moderns. glTF conserva el gràfic complet de l’escena, els materials i les dades d’animació. És el format més complet per a l’intercanvi amb motors de joc i visualitzadors web.
  • Utilitzeu OBJ per a la màxima compatibilitat. OBJ és compatible amb pràcticament totes les eines 3D. És limitat a malles estàtiques però és extremadament portable.
  • Utilitzeu 3MF per a la impressió. 3MF carries colour, orientation hints, and print settings that STL cannot express.
  • Eviteu FBX fins que estigui llest per a producció. Consulteu les notes de la versió per a la versió en què l’anàlisi completa de FBX ja està disponible.
  • Feu coincidir l’extensió de desament amb el format. No passeu un .gltf extensió quan vols GLB binari; usa .glb explícitament. L’extensió determina quin serialitzador s’utilitza.
  • Comprova la compatibilitat de polígons. STL i 3MF requereixen triangles. Quads i N-gons es triangulen automàticament en desar, però el recompte de vèrtexs augmentarà. Si necessites controlar la triangulació, crida mesh.triangulate() abans de desar.
 Català