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
| Format | Erweiterung | Lesen | Schreiben | Optionsklasse | Notizen |
|---|---|---|---|---|---|
| OBJ | .obj | Ja Ja | Ja Ja | ObjLoadOptions | Wavefront OBJ; .mtl Materiallastung unterstützt |
| STL | .stl | Ja Ja | Ja Ja | StlSaveOptions | Binär und ASCII lesen; Speichern Sie die Vorfälle auf binär |
| Gltf | .gltf / .glb | Ja Ja | Ja Ja | GltfSaveOptions | GlTF 2.0 JSON und GLB binäre Container |
| COLLADA | .dae | Ja Ja | Ja Ja | ColladaLoadOptions / ColladaSaveOptions | Hierarchie und Materialien |
| 3MF | .3mf | Ja Ja | Ja Ja | ThreeMfSaveOptions | Additive Produktionsformate |
| FBX | .fbx | Teilweise | No nicht | N/A | Der 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
| Eigentum | Typ | Default | Beschreibung |
|---|---|---|---|
enable_materials | bool | True | Parse die .mtl Datei, die von der OBJ Header bezogen wird |
flip_coordinate_system | bool | False | Umwandlung von Y-up rechten Hand zu Z-up rechten Hand |
normalize_normal | bool | True | Normalisieren Sie alle importierten Oberflächennormale bis zur Einheitslänge |
scale | float | 1.0 | Uniformskalafaktor 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 binaryMaterial 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 3MF3MF 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
.gltfErweiterung, wenn Sie binäre GLB wollen; verwenden.glbAusdruck: 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.