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

FormatFiländelseLäsSkrivAlternativklassAnteckningar
Wavefront OBJ.objJaJaObjLoadOptions.mtl materialinläsning stöds
STL (binär).stlJaJaStlSaveOptionsBinär och ASCII-läsning; sparar som standard i binär
STL (ASCII).stlJaJaStlSaveOptionsRundresan verifierad
glTF 2.0.gltfJaJaGltfSaveOptionsFull scengraf, material och animationer bevarade
GLB (binary glTF).glbJaJaGltfSaveOptionsEnfilig binär behållare
COLLADA.daeJaJaColladaLoadOptions / ColladaSaveOptionsScenhierarki och material
3MF.3mfJaJaThreeMfSaveOptionsAdditiv tillverkningsformat
FBX.fbxDelvisNejN/ATokenizer 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

EgenskapTypStandardBeskrivning
enable_materialsboolTrueAnalysera .mtl fil som refereras av OBJ-headern
flip_coordinate_systemboolFalseKonvertera från Y-upp högervriden till Z-upp högervriden
normalize_normalboolTrueNormalisera alla importerade ytnormaler till enhetslängd
scalefloat1.0Enhetlig 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 binary

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

3MF 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 .gltf extension när du vill ha binär GLB; använd .glb explicit. 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.
 Svenska