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

FormatFiltypeLesSkrivAlternativklasseNotater
Wavefront OBJ.objJaJaObjLoadOptions.mtl materiallasting støttet
STL (binær).stlJaJaStlSaveOptionsBinær og ASCII-lesing; lagring standard til binær
STL (ASCII).stlJaJaStlSaveOptionsRundtur verifisert
glTF 2.0.gltfJaJaGltfSaveOptionsFullt scenegraph, materialer og animasjoner bevart
GLB (binary glTF).glbJaJaGltfSaveOptionsEnkeltfil binær beholder
COLLADA.daeJaJaColladaLoadOptions / ColladaSaveOptionsScenhierarki og materialer
3MF.3mfJaJaThreeMfSaveOptionsAdditiv produksjonsformat
FBX.fbxDelvisNeiN/ATokenizer 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

EgenskapTypeStandardBeskrivelse
enable_materialsboolTrueAnalyser .mtl filen som refereres av OBJ-headeren
flip_coordinate_systemboolFalseKonverter fra Y-opp høyrehendt til Z-opp høyrehendt
normalize_normalboolTrueNormaliser alle importerte overflatenormale til enhetslengde
scalefloat1.0Uniform 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 binary

Materialstø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 3MF

3MF 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 kilde­dataene 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 fil­endelsen og, der tilgjengelig, magiske byte i fil­hodet:

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 .gltf utvidelse når du vil ha binær GLB; bruk .glb eksplisitt. 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.
 Norsk