Υποστήριξη Μορφών
Aspose.3D FOSS για Python μπορεί να διαβάσει και να γράψει επτά 3D μορφές χρησιμοποιώντας μια ενιαία αναπαράσταση σκηνής στη μνήμη. Η βιβλιοθήκη μετατρέπει κάθε μορφή σε ένα κοινό Scene αντικείμενο κατά τη φόρτωση και σειριοποιεί αυτό το αντικείμενο πίσω στη μορφή-στόχο κατά την αποθήκευση. Αυτό σημαίνει ότι μια σκηνή που φορτώθηκε από OBJ μπορεί να αποθηκευτεί απευθείας σε glTF χωρίς κανένα ενδιάμεσο βήμα μετατροπής.
Υποστηριζόμενες Μορφές
| Μορφή | Επέκταση | Ανάγνωση | Εγγραφή | Κλάση Options | Σημειώσεις |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Ναι | Ναι | ObjLoadOptions | .mtl υποστηρίζεται η φόρτωση υλικού |
| STL (binary) | .stl | Ναι | Ναι | StlSaveOptions | Δυαδική και ASCII ανάγνωση· η αποθήκευση προεπιλογή είναι δυαδική |
| STL (ASCII) | .stl | Ναι | Ναι | StlSaveOptions | Επαλήθευση πλήρους διαδρομής |
| glTF 2.0 | .gltf | Ναι | Ναι | GltfSaveOptions | Πλήρης γράφος σκηνής, υλικά και κινούμενα σχέδια διατηρούνται |
| GLB (binary glTF) | .glb | Ναι | Ναι | GltfSaveOptions | Δυαδικό κοντέινερ ενός αρχείου |
| COLLADA | .dae | Ναι | Ναι | ColladaLoadOptions / ColladaSaveOptions | Ιεραρχία σκηνής και υλικά |
| 3MF | .3mf | Ναι | Ναι | ThreeMfSaveOptions | Μορφή προσθετικής κατασκευής |
| FBX | .fbx | Μερικό | Όχι | N/A | Tokenizer λειτουργεί· ο πλήρης parser βρίσκεται σε εξέλιξημη έτοιμο για παραγωγή) |
Μορφή OBJ
Το Wavefront OBJ είναι η πιο ευρέως υποστηριζόμενη μορφή ανταλλαγής για στατικά πλέγματα. Aspose.3D FOSS φορτώνει τη γεωμετρία (κορυφές, κανονικές, συντεταγμένες UV και πολυγωνικές όψεις) και προαιρετικά το συνοδευτικό .mtl αρχείο υλικού.
ObjLoadOptions
| Ιδιότητα | Τύπος | Προεπιλογή | Περιγραφή |
|---|---|---|---|
enable_materials | bool | True | Αναλύστε το .mtl αρχείο που αναφέρεται από την κεφαλίδα OBJ |
flip_coordinate_system | bool | False | Μετατροπή από Y-up δεξιόχειρη σε Z-up δεξιόχειρη |
normalize_normal | bool | True | Κανονικοποίηση όλων των εισαγόμενων κανονικών επιφάνειας σε μονάδα μήκους |
scale | float | 1.0 | Ομοιόμορφος συντελεστής κλίμακας που εφαρμόζεται σε όλες τις θέσεις κορυφών |
Φόρτωση αρχείου OBJ
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)}")Αποθήκευση σε OBJ
scene.save("output.obj")Η εξαγωγή OBJ γράφει τις θέσεις των κορυφών και τις πολυγωνικές όψεις. Εάν η σκηνή περιέχει LambertMaterial ή PhongMaterial αντικείμενα, η βιβλιοθήκη γράφει ένα συνοδευτικό .mtl αρχείο αυτόματα.
Μορφή STL
Το STL (STereoLithography) αποθηκεύει τριγωνικά πλέγματα ως μια μη ευρετηριασμένη λίστα προσώπων. Υποστηρίζονται τόσο οι δυαδικές όσο και οι ASCII εκδόσεις για ανάγνωση· η βιβλιοθήκη προεπιλέγει τη δυαδική μορφή κατά την αποθήκευση.
StlSaveOptions
StlSaveOptions δεν έχει υποχρεωτικά πεδία. Δημιουργήστε το για να το περάσετε σε scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)Παράδειγμα round‑trip
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 αποθηκεύει μόνο τριγωνική γεωμετρία, χωρίς κανόνες εκτός του κανονικού προσώπου, χωρίς συντεταγμένες UV, χωρίς υλικά και χωρίς ιεραρχία. Εάν η σκηνή σας περιέχει τετράπλευρα ή πολυγωνικά υψηλότερης τάξης, αυτά τριγωνοποιούνται αυτόματα κατά την αποθήκευση.
Μορφή glTF / GLB
Το glTF 2.0 είναι η προτεινόμενη μορφή για σύγχρονη ανταλλαγή 3D. Διατηρεί το πλήρες γράφημα σκηνής (ιεραρχία κόμβων, ονομασμένοι κόμβοι, μετασχηματισμοί), υλικά (LambertMaterial, PhongMaterial → μετατροπή PBR), και κλιπ κίνησης. Το GLB είναι η παραλλαγή ενός αρχείου δυαδικού κοντέινερ.
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Υποστήριξη υλικών
Aspose.3D FOSS υλικά αντιστοιχίζονται στο glTF pbrMetallicRoughness κατά την εξαγωγή:
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")Επαλήθευση εξόδου glTF
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
COLLADA (.dae) είναι μια μορφή βασισμένη σε XML που υποστηρίζει ιεραρχίες σκηνής, υλικά, πολλαπλά κανάλια UV και σκελετική κίνηση. Aspose.3D FOSS διαβάζει και γράφει το πλήρες δέντρο κόμβων και τους ορισμούς υλικών.
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 είναι μια καλή επιλογή όταν χρειάζεται να κάνετε round‑trip ιεραρχίες με ονομαστικούς κόμβους και υλικά χωρίς καμία απώλεια δεδομένων.
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
Κατάσταση: σε εξέλιξη (δεν είναι έτοιμο για παραγωγή).
FBX (.fbx) η υποστήριξη στο Aspose.3D FOSS βρίσκεται επί του παρόντος στο στάδιο του tokenizer. Ο δυαδικός tokenizer FBX μπορεί να αναλύσει τη δομή του αρχείου, αλλά ο πλήρης parser κόμβων, πλέγματος και υλικών έχει γνωστά σφάλματα και δεν είναι ολοκληρωμένος. Τα αποτελέσματα ανάγνωσης FBX θα πρέπει να θεωρούνται πειραματικά.
Μην χρησιμοποιείτε το FBX σε παραγωγικές αλυσίδες με αυτήν την έκδοση. Αν τα πηγαία δεδομένα σας είναι σε FBX, μετατρέψτε τα πρώτα σε glTF ή OBJ χρησιμοποιώντας το Blender ή το FBX Review πριν τη φόρτωση με Aspose.3D FOSS.
Η εγγραφή FBX δεν υποστηρίζεται.
Αυτόματη Ανίχνευση Μορφής
Scene.from_file() και scene.open() ανιχνεύει τη μορφή αυτόματα χρησιμοποιώντας την επέκταση του αρχείου και, όπου είναι διαθέσιμα, τα magic bytes στην κεφαλίδα του αρχείου:
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")Εάν η επέκταση λείπει ή είναι ασαφής, η βιβλιοθήκη επιστρέφει στην επιθεώρηση της κεφαλίδας (magic bytes). Τα μη υποστηριζόμενα ή μη αναγνωρισμένα αρχεία προκαλούν ένα IOError με ένα περιγραφικό μήνυμα.
Συμβουλές και Καλές Πρακτικές
- Χρησιμοποιήστε glTF ή GLB για σύγχροπες γραμμές παραγωγής. Το glTF διατηρεί το πλήρες γράφημα σκηνής, τα υλικά και τα δεδομένα κίνησης. Είναι η πιο πλήρης μορφή για ανταλλαγή με μηχανές παιχνιδιών και προβολείς ιστού.
- Χρησιμοποιήστε OBJ για μέγιστη συμβατότητα. Το OBJ υποστηρίζεται σχεδόν από κάθε εργαλείο 3D. Είναι περιορισμένο σε στατικά πλέγματα, αλλά είναι εξαιρετικά φορητό.
- Χρησιμοποιήστε το 3MF για εκτύπωση. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- Αποφύγετε το FBX μέχρι να είναι έτοιμο για παραγωγή. Ελέγξτε τις σημειώσεις έκδοσης για την έκδοση στην οποία η πλήρης ανάλυση FBX είναι ολοκληρωμένη.
- Ταιριάξτε την επέκταση αποθήκευσης με τη μορφή. Μην περάσετε ένα
.gltfεπέκταση όταν θέλετε δυαδικό GLB· χρησιμοποιήστε.glbρητά. Η επέκταση καθορίζει ποιος σειριακοποιητής χρησιμοποιείται. - Ελέγξτε τη συμβατότητα των πολυγώνων. Τα STL και 3MF απαιτούν τρίγωνα. Τα Quads και N-gons τριγωνοποιούνται αυτόματα κατά την αποθήκευση, αλλά ο αριθμός των κορυφών θα αυξηθεί. Εάν χρειάζεστε έλεγχο της τριγωνοποίησης, καλέστε
mesh.triangulate()πριν την αποθήκευση.