Formatstøtte
Aspose.3D FOSS for Python kan lese og skrive syv 3D-formater ved hjelp av en enkelt minnebasert scenerepresentasjon. Biblioteket oversetter hvert format til en felles Scene objekt ved lasting og serialiserer det objektet tilbake til målformatet ved lagring. Dette betyr at en scene lastet fra OBJ kan lagres direkte til glTF uten noen mellomliggende konverteringssteg.
Støttede formater
| Format | Filtype | Les | Skriv | Alternativklasse | Notater |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Ja | Ja | ObjLoadOptions | .mtl materiallasting støttet |
| STL (binær) | .stl | Ja | Ja | StlSaveOptions | Binær og ASCII-lesing; lagring standard til binær |
| STL (ASCII) | .stl | Ja | Ja | StlSaveOptions | Rundtur verifisert |
| glTF 2.0 | .gltf | Ja | Ja | GltfSaveOptions | Fullt scenegraph, materialer og animasjoner bevart |
| GLB (binary glTF) | .glb | Ja | Ja | GltfSaveOptions | Enkeltfil binær beholder |
| COLLADA | .dae | Ja | Ja | ColladaLoadOptions / ColladaSaveOptions | Scenhierarki og materialer |
| 3MF | .3mf | Ja | Ja | ThreeMfSaveOptions | Additiv produksjonsformat |
| FBX | .fbx | Delvis | Nei | N/A | Tokenizer fungerer; full parser er under arbeidikke produksjonsklar) |
OBJ-format
Wavefront OBJ er det mest støttede utvekslingsformatet for statiske mesh-er. Aspose.3D FOSS laster inn geometri (vertikser, normaler, UV-koordinater og polygonale flater) og valgfritt den tilhørende .mtl materialfil.
ObjLoadOptions
| Egenskap | Type | Standard | Beskrivelse |
|---|---|---|---|
enable_materials | bool | True | Analyser .mtl filen som refereres av OBJ-headeren |
flip_coordinate_system | bool | False | Konverter fra Y-opp høyrehendt til Z-opp høyrehendt |
normalize_normal | bool | True | Normaliser alle importerte overflatenormale til enhetslengde |
scale | float | 1.0 | Uniform skaleringsfaktor brukt på alle vertex-posisjoner |
Laste inn 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)}")Lagrer til OBJ
scene.save("output.obj")OBJ-eksport skriver vertex‑posisjoner og polygonflater. Hvis scenen inneholder LambertMaterial eller PhongMaterial objekter, skriver biblioteket en tilhørende .mtl fil automatisk.
STL‑format
STL (STereoLithography) lagrer trekantnett som en uindeksert liste over flater. Både binære og ASCII‑varianter støttes for lesing; biblioteket bruker binær som standard ved lagring.
StlSaveOptions
StlSaveOptions har ingen obligatoriske felter. Instansier den for å sende til scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)Rundtur‑eksempel
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 lagrer kun trekantgeometri, uten normaler utover flatenormalen, ingen UV‑koordinater, ingen materialer og ingen hierarki. Hvis scenen din inneholder firkanter eller polygoner av høyere orden, blir de automatisk triangulert ved lagring.
glTF / GLB-format
glTF 2.0 er det anbefalte formatet for moderne 3D‑utveksling. Det bevarer hele scenegrafen (node‑hierarki, navngitte noder, transformasjoner), materialer (LambertMaterial, PhongMaterial → PBR‑konvertering), og animasjonsklipp. GLB er den enkeltfil‑binære beholdervarianten.
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øtte
Aspose.3D FOSS-materialer er kartlagt til glTF pbrMetallicRoughness ved eksport:
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")Verifisering av 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) er et XML-basert format som støtter scenehierarkier, materialer, flere UV-kanaler og skjelettanimasjon. Aspose.3D FOSS leser og skriver hele nodetreet og materialdefinisjonene.
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 er et godt valg når du trenger å gjøre en rundtur av hierarkier med navngitte noder og materialer uten datatap.
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: under arbeid (ikke klar for produksjon).
FBX (.fbx) støtte i Aspose.3D FOSS er for øyeblikket på tokeniseringsstadiet. Den binære FBX-tokenizeren kan analysere filstrukturen, men den fullstendige noden, mesh- og materialparseren har kjente feil og er ikke komplett. FBX-leseresultater bør behandles som eksperimentelle.
Ikke bruk FBX i produksjonspipelines med denne utgivelsen. Hvis kildedataene dine er i FBX, konverter dem først til glTF eller OBJ ved å bruke Blender eller FBX Review før du laster dem inn med Aspose.3D FOSS.
Skriving av FBX støttes ikke.
Automatisk formatgjenkjenning
Scene.from_file() og scene.open() oppdager formatet automatisk ved å bruke filendelsen og, der tilgjengelig, magiske byte i filhodet:
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")Hvis endelsen mangler eller er tvetydig, faller biblioteket tilbake på inspeksjon av hodet (magiske byte). Ikke‑støttede eller ukjente filer utløser en IOError med en beskrivende melding.
Tips og beste praksis
- Bruk glTF eller GLB for moderne pipelines. glTF bevarer hele scenegrafen, materialer og animasjonsdata. Det er det mest komplette formatet for utveksling med spillmotorer og web‑visere.
- Bruk OBJ for maksimal kompatibilitet. OBJ støttes av praktisk talt alle 3D‑verktøy. Det er begrenset til statiske mesher, men er ekstremt portabelt.
- Bruk 3MF for utskrift. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- Unngå FBX til den er klar for produksjon. Sjekk utgivelsesnotatene for versjonen der full FBX‑parsing er fullført.
- Match lagringsutvidelsen til formatet. Ikke send en
.gltfutvidelse når du vil ha binær GLB; bruk.glbeksplisitt. Utvidelsen bestemmer hvilken serialiserer som brukes. - Sjekk polygonkompatibilitet. STL og 3MF krever trekanter. Kvadrater og N-goner blir triangulert automatisk ved lagring, men antall vertexer vil øke. Hvis du trenger å kontrollere trianguleringen, kall
mesh.triangulate()før lagring.