Στήριξη μορφοποίησης
Το Aspose.3D FOSS για το Python μπορεί να διαβάσει και να γράψει επτά μορφές 3D χρησιμοποιώντας μια ενιαία απεικόνιση σκηνής στη μνήμη. Scene αντικείμενο φορτίου και σειριώσεις που αντικρούουν πίσω στην μορφή στόχου στο αποθηκεύεται. Αυτό σημαίνει ότι μια σκηνή φορτωμένη από το OBJ μπορεί να αποσταλεί απευθείας στη glTF χωρίς οποιαδήποτε μεσαία μετατροπή βήματα.
Υποστηριζόμενες μορφές
| ΤΕΧΝΗ | ΕΠΙΤΡΟΦΗ | Διαβάστε | Γράψε | ΕΠΙΛΟΓΕΣ ΚΛΑΔΑΣ | Σημειώσεις |
|---|---|---|---|---|---|
| OBJ | .obj | ΝΑΙ | ΝΑΙ | ObjLoadOptions | Ο Πυροβόλος OBJ.; .mtl Υλικό φορτίο υποστηρίζεται |
| STL | .stl | ΝΑΙ | ΝΑΙ | StlSaveOptions | Δυαδικές και ASCII ανάγνωση; αποθηκεύστε τις παραμέτρους για το δυαδικό |
| ΓΚΛΤΦ | .gltf / .glb | ΝΑΙ | ΝΑΙ | GltfSaveOptions | GLTF 2.0 JSON και GLB δυαδικός δοχείο |
| COLLADA | .dae | ΝΑΙ | ΝΑΙ | ColladaLoadOptions / ColladaSaveOptions | Η ιεραρχία της σκηνής και τα υλικά |
| 3MF | .3mf | ΝΑΙ | ΝΑΙ | ThreeMfSaveOptions | Επαγγελματική μορφή παραγωγής |
| FBX | .fbx | Μερική | ΟΧΙ | N/A | Το εργοστάσιο είναι σε εξέλιξη (Δεν είναι έτοιμη παραγωγή) |
Τίτλος OBJ
Το Wavefront OBJ είναι το ευρύτερα υποστηριζόμενο μορφότυπο ανταλλαγής για στατικές μασές.Το Aspose.3D FOSS φορτίζει τη γεωμετρία (βουρίδια, κανονικά, συντονιστικά UV και πολυγώνια πρόσωπα) και επιλεκτικά την συνοδεία του .mtl υλικό αρχείο.
ObjLoadOptions
| Ιδιοκτησία | Τύπος | Υπολογισμοί | Περιγραφή |
|---|---|---|---|
enable_materials | bool | True | Συμμετέχει το .mtl Το αρχείο που αναφέρεται από το OBJ header |
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)Παράδειγμα του γύρου
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, δεν υπάρχουν υλικά και δεν υπάρχει ιεραρχία. Αν η σκηνή σας περιέχει τετράγωνες ή πολυγόνα υψηλότερης τάξεως, είναι αυτόματα τριγωνισμένες σε αποθήκευση.
ΓΚΛΤ / GLB μορφή
Το GST είναι το συνιστώμενο μορφότυπο για την σύγχρονη 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 κανάλια και την κηλιδική animation. 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 είναι μια καλή επιλογή όταν χρειάζεται να περιηγηθείτε σε ιεραρχίες με ονομαστικούς κόμβους και υλικά χωρίς απώλεια δεδομένων.
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. ο δυαδικός FBX tokens μπορεί να διαλύσει τη δομή αρχείου, αλλά το πλήρες κόμβο, η μάζα και το υλικό parser έχει γνωστά bugs και δεν είναι ολοκληρωμένο. τα αποτελέσματα ανάγνωσης FB X θα πρέπει να αντιμετωπιστούν ως πειραματικά.
Μην χρησιμοποιείτε το FBX στα σωλήνα παραγωγής με αυτή την έκδοση. Εάν τα δεδομένα πηγής σας είναι στο FBX, μετατρέψτε το σε glTF ή OBJ πρώτα χρησιμοποιώντας Blender ή FBx Review πριν φορτίσετε με Aspose.3D FOSS.
Το FBX δεν υποστηρίζεται.
Ετικέτες Auto-Detektion
Scene.from_file() και scene.open() Ανακαλύψτε αυτόματα τη μορφή χρησιμοποιώντας την επέκταση αρχείου και, όπου είναι διαθέσιμα, μαγικά byte στο αρχείο τίτλο:
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")Εάν η επέκταση είναι απουσία ή αμφίβολη, η βιβλιοθήκη πέφτει πίσω στην επιθεώρηση επικεφαλής (μαγικά bytes). IOError Με ένα περιγραφικό μήνυμα.
Συμβουλές και βέλτιστες πρακτικές
- Χρησιμοποιήστε GLTF ή GLB για σύγχρονες αγωγές. Το glTF διατηρεί τα πλήρη δεδομένα γραφικών σκηνής, υλικού και κινούμενων στοιχείων. είναι η πιο ολοκληρωμένη μορφή για ανταλλαγή με κινητήρες παιχνιδιών και web viewers.
- Χρησιμοποιήστε το OBJ για μέγιστη συμβατότητα. Το OBJ υποστηρίζεται από σχεδόν κάθε εργαλείο 3D. περιορίζεται σε στατικές μασές, αλλά είναι εξαιρετικά φορητό.
- Χρησιμοποιήστε 3MF για εκτύπωση. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- Αποφύγετε το FBX μέχρι να είναι έτοιμο για παραγωγή. Ελέγξτε τα σημειώματα κυκλοφορίας για την έκδοση στην οποία είναι πλήρης η παρσινγκ FBX.
- Το παιχνίδι αποθηκεύει την επέκταση σε μορφή. Μην περάσετε το A
.gltfεπεκτάσεις όταν θέλετε δυαδικό GLB. χρησιμοποιήστε.glbΗ επέκταση καθορίζει ποιο σειριακό χρησιμοποιείται. - Ελέγξτε τη συμβατότητα των πολυγώνων. STL και 3MF απαιτούν τριγώνια. Quads και N-gons είναι τριγωνισμένα αυτόματα σε αποθήκευση, αλλά ο αριθμός των σπονδύλων θα αυξηθεί. Αν χρειαστεί να ελέγξετε την τριangulation, καλέστε
mesh.triangulate()Πριν από την εξοικονόμηση.