Format Unterstützung

Aspose.3D FOSS für Python kann sieben 3D-Formate lesen und schreiben, indem eine einzige in-memory-Szenan-Repräsentation verwendet wird. Scene Objekt auf Ladung und Serien, die Gegenstand zurück zum Zielformat auf Speichern.Dies bedeutet, dass eine Szenen von OBJ aufgeladen direkt auf GlTF ohne mittlere Konvertierungsschritte gespeichert werden kann.


Unterstützte Formate

FormatErweiterungLesenSchreibenOptionsklasseNotizen
OBJ.objJa JaJa JaObjLoadOptionsWavefront OBJ; .mtl Materiallastung unterstützt
STL.stlJa JaJa JaStlSaveOptionsBinär und ASCII lesen; Speichern Sie die Vorfälle auf binär
Gltf.gltf / .glbJa JaJa JaGltfSaveOptionsGlTF 2.0 JSON und GLB binäre Container
COLLADA.daeJa JaJa JaColladaLoadOptions / ColladaSaveOptionsHierarchie und Materialien
3MF.3mfJa JaJa JaThreeMfSaveOptionsAdditive Produktionsformate
FBX.fbxTeilweiseNo nichtN/ADer Tokenizer arbeitet; der vollständige Parser ist in Fortschritt (nicht produziert)

OBJ Format

Wavefront OBJ ist das am weitesten unterstützte Wechselformat für statische Messe. Aspose.3D FOSS laden Geometrie (Vertikale, Normale, UV-Koordinate und polygonale Gesichtspunkte) und optionell die Begleiterin .mtl Material Datei zu finden.

ObjLoadOptions

EigentumTypDefaultBeschreibung
enable_materialsboolTrueParse die .mtl Datei, die von der OBJ Header bezogen wird
flip_coordinate_systemboolFalseUmwandlung von Y-up rechten Hand zu Z-up rechten Hand
normalize_normalboolTrueNormalisieren Sie alle importierten Oberflächennormale bis zur Einheitslänge
scalefloat1.0Uniformskalafaktor für alle Vertex-Positionen

Laden eines OBJ-Datei

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

Sparen Sie auf OBJ

scene.save("output.obj")

OBJ Export schreibt vertex Positionen und polygon Gesicht. LambertMaterial oder PhongMaterial Objekt, die Bibliothek schreibt einen Begleiter .mtl Dateien automatisch.


STL Format

STL (STereoLithography) speichert Dreieck-Messen als eine unindexierte Liste von Facetten. Bestimmte binäre und ASCII-Varianten werden für Lesen unterstützt; die Bibliothek verschwindet für binäre auf Einsparung.

StlSaveOptions

StlSaveOptions keine Pflichtfelder haben.Sie müssen sofort über scene.save():

from aspose.threed.formats import StlSaveOptions

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

Round-Trip Beispiel

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 speichert nur Dreieckgeometrie, mit keine Normalen über die normale Seite, keine UV-Koordinate, keine Materialien und keine Hierarchie. Wenn Ihre Szenen Quad oder höhere Ordnung Polygone enthalten, werden sie automatisch auf Speicherung trianguliert.


GLT / GLB Format

GlTF 2.0 ist das empfohlene Format für moderne 3D-Austausch. Es bewahrt das vollständige Scene-Grafik (Node-Hierarchie, benannte Node, Transformationen), Materialien (LambertMaterial, PhongMaterial → PBR Conversion), und Animation Clips. GLB ist die ein-Datei-Binarein-Variante.

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

Material Unterstützung

Aspose.3D FOSS Materialien sind auf glTF geführt pbrMetallicRoughness auf den 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")

Überprüfung der GLTF-Ausgabe

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 (.daeEs ist ein XML-basiertes Format, das Szenenhierarchien, Materialien, mehrere UV-Kanäle und Skeletal-Animation unterstützt. Aspose.3D FOSS liest und schreibt die vollständigen Node-Tree und Materialiendefinitionen.

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 ist eine gute Wahl, wenn Sie hierarchische Runden mit benannten Knoten und Materialien ohne Datenverlust durchführen müssen.


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: in Fortschritt (nicht produziert bereit).

FBX (.fbxDer binäre FBX-Tokenizer kann die Dateistruktur vertreiben, aber der vollständige Knoten, Messer und Material-Partner hat Fehler bekannt und ist nicht vollständig.

Verwenden Sie FBX nicht in Produktionsröhren mit diesem Release. Wenn Ihre Quelldaten in FBX sind, konvertieren Sie sie zu glTF oder OBJ zuerst mit Blender oder FBX Review, bevor Sie mit Aspose.3D FOSS laden.

FBX Schreiben wird nicht unterstützt.


Format Auto-Detektion

Scene.from_file() und scene.open() die Format automatisch mit der Dateierweiterung und, wenn verfügbar, magische Byte im Dateiheader zu erkennen:

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

Wenn die Erweiterung fehlt oder zweifellos ist, fällt die Bibliothek zurück zur Headerinspektion (magische Byte). IOError mit einem beschreibenden Nachricht.


Tipps und beste Praktiken

  • Verwenden Sie GlTF oder GLB für moderne Pipelines. GlTF bewahrt die vollständige Scene-Grafik, Materialien und Animationsdaten. Es ist das vollständige Format für den Austausch mit Spielautomaten und Web-Speicher.
  • Verwenden Sie OBJ für maximale Kompatibilität. OBJ wird von fast jedem 3D-Tool unterstützt. Es ist auf statische Messen beschränkt, aber extrem tragbare.
  • 3MF für Druck. 3MF carries colour, orientation hints, and print settings that STL cannot express.
  • Vermeiden Sie FBX, bis es fertig ist. Überprüfen Sie die Release-Note für die Version, in der die vollständige FBX-Partung abgeschlossen ist.
  • Match speichert Erweiterung zum Format. Nicht über die A .gltf Erweiterung, wenn Sie binäre GLB wollen; verwenden .glb Ausdruck: Die Erweiterung bestimmt, welcher Seriener verwendet wird.
  • Überprüfen Sie die Polygonkompatibilität. STL und 3MF benötigen Dreieck. Quads und N-Gons werden automatisch auf den Speicher trianguliert, aber die Vertex-Zahl wird erhöht. Wenn Sie die Dreieckung kontrollieren müssen, rufen Sie mesh.triangulate() Vor dem Sparen.
 Deutsch