Formatstöd
Aspose.3D FOSS för Python kan läsa och skriva sju 3D-format med en enda minnesbaserad scenrepresentation. Biblioteket översätter varje format till ett gemensamt Scene objekt vid inläsning och serialiserar det objektet tillbaka till målformatet vid sparning. Detta innebär att en scen som lästs in från OBJ kan sparas direkt till glTF utan några mellansteg för konvertering.
Stödda format
| Format | Filändelse | Läs | Skriv | Alternativklass | Anteckningar |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Ja | Ja | ObjLoadOptions | .mtl materialinläsning stöds |
| STL (binär) | .stl | Ja | Ja | StlSaveOptions | Binär och ASCII-läsning; sparar som standard i binär |
| STL (ASCII) | .stl | Ja | Ja | StlSaveOptions | Rundresan verifierad |
| glTF 2.0 | .gltf | Ja | Ja | GltfSaveOptions | Full scengraf, material och animationer bevarade |
| GLB (binary glTF) | .glb | Ja | Ja | GltfSaveOptions | Enfilig binär behållare |
| COLLADA | .dae | Ja | Ja | ColladaLoadOptions / ColladaSaveOptions | Scenhierarki och material |
| 3MF | .3mf | Ja | Ja | ThreeMfSaveOptions | Additiv tillverkningsformat |
| FBX | .fbx | Delvis | Nej | N/A | Tokenizer fungerar; full parser är under utvecklinginte produktionsklar) |
OBJ-format
Wavefront OBJ är det mest allmänt stödda utbytesformatet för statiska meshar. Aspose.3D FOSS laddar geometri (vertexar, normaler, UV-koordinater och polygonala ytor) och valfritt den medföljande .mtl materialfil.
ObjLoadOptions
| Egenskap | Typ | Standard | Beskrivning |
|---|---|---|---|
enable_materials | bool | True | Analysera .mtl fil som refereras av OBJ-headern |
flip_coordinate_system | bool | False | Konvertera från Y-upp högervriden till Z-upp högervriden |
normalize_normal | bool | True | Normalisera alla importerade ytnormaler till enhetslängd |
scale | float | 1.0 | Enhetlig skalningsfaktor som tillämpas på alla vertexpositioner |
Laddar en OBJ-fil
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)}")Sparar till OBJ
scene.save("output.obj")OBJ export skriver vertexpositioner och polygonytor. Om scenen innehåller LambertMaterial eller PhongMaterial objekt, skriver biblioteket en medföljande .mtl fil automatiskt.
STL-format
STL (STereoLithography) lagrar triangelnät som en oindexerad lista av fasetter. Både binära och ASCII-varianter stöds för läsning; biblioteket använder binärt som standard vid sparande.
StlSaveOptions
StlSaveOptions har inga obligatoriska fält. Instansiera den för att skicka till scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)Exempel på rundresa
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 lagrar endast triangulär geometri, utan några normaler förutom facetnormalen, utan UV-koordinater, utan material och utan hierarki. Om din scen innehåller fyrhörningar eller polygoner av högre ordning, trianguleras de automatiskt vid sparande.
glTF / GLB-format
glTF 2.0 är det rekommenderade formatet för modern 3D-utbyte. Det bevarar hela scengrafen (nodhierarki, namngivna noder, transformationer), material (LambertMaterial, PhongMaterial → PBR-konvertering), och animationsklipp. GLB är den enkelfilsbinära behållarvarianten.
GltfSaveOptions
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
scene.save("output.gltf", opts) # JSON + external .bin
scene.save("output.glb", opts) # Self-contained binaryMaterialstöd
Aspose.3D FOSS-material mappas till glTF pbrMetallicRoughness vid export:
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")Verifiera glTF-utdata
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-format
COLLADA (.dae) är ett XML-baserat format som stödjer scenhierarkier, material, flera UV-kanaler och skelettanimation. Aspose.3D FOSS läser och skriver hela nodträdet och materialdefinitionerna.
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 är ett bra val när du behöver göra rundresor av hierarkier med namngivna noder och material utan någon dataförlust.
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.).
FBX-format
Status: pågående (inte produktionsklar).
FBX (.fbx) stöd i Aspose.3D FOSS är för närvarande i tokeniseringsstadiet. Den binära FBX-tokenizern kan tolka filstrukturen, men den fullständiga nod-, mesh- och materialtolkaren har kända buggar och är inte komplett. FBX-läsresultat bör behandlas som experimentella.
Använd inte FBX i produktionspipelines med denna version. Om dina källdata är i FBX, konvertera dem först till glTF eller OBJ med Blender eller FBX Review innan du laddar dem med Aspose.3D FOSS.
Skrivning av FBX stöds inte.
Automatisk formatdetektering
Scene.from_file() och scene.open() detektera formatet automatiskt med hjälp av filändelsen och, där det är tillgängligt, magiska byte i filhuvudet:
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")Om filändelsen saknas eller är tvetydig, faller biblioteket tillbaka på huvudinspektion (magiska byte). Filformat som inte stöds eller känns igen ger ett IOError med ett beskrivande meddelande.
Tips och bästa praxis
- Använd glTF eller GLB för moderna pipelines. glTF bevarar hela scengrafen, material och animationsdata. Det är det mest kompletta formatet för utbyte med spelmotorer och webbvisare.
- Använd OBJ för maximal kompatibilitet. OBJ stöds av praktiskt taget alla 3D‑verktyg. Det är begränsat till statiska meshar men är extremt portabelt.
- Använd 3MF för utskrift. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- Undvik FBX tills det är produktionsklart. Kontrollera versionsanteckningarna för den version där fullständig FBX‑parsing är klar.
- Matcha sparningsändelsen med formatet. Skicka inte en
.gltfextension när du vill ha binär GLB; använd.glbexplicit. Extensionen bestämmer vilken serialiserare som används. - Kontrollera polygonkompatibilitet. STL och 3MF kräver trianglar. Fyrkanter och N-goner trianguleras automatiskt vid sparande, men antalet vertexer ökar. Om du behöver kontrollera trianguleringen, anropa
mesh.triangulate()innan du sparar.