Χαρακτηριστικά και Λειτουργίες
Χαρακτηριστικά και Λειτουργίες
Αυτή η σελίδα καλύπτει κάθε κύρια περιοχή λειτουργίας του aspose-3d-foss 26.1.0 με λειτουργικά παραδείγματα Java.
Φόρτωση και Αποθήκευση Σκηνών
scene.open() φορτώνει ένα αρχείο; scene.save() το εξάγει:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Εναλλακτική στατική κατασκευή:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Επιλογές ειδικές για μορφή
Περάστε LoadOptions ή SaveOptions υποκλάσεις για λεπτομερή έλεγχο:
import com.aspose.threed.*;
Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);Σημείωση: Το FBX υποστηρίζεται μόνο για εισαγωγή· η εξαγωγή FBX δεν έχει υλοποιηθεί στη FOSS έκδοση. Μόνο δυαδικό FBX τα αρχεία υποστηρίζονται για εισαγωγή — το ASCII FBX αποτυγχάνει ImportException.
Δημιουργία Γραφήματος Σκηνής
Δημιουργήστε κόμβους και συνδέστε οντότητες:
Scene scene = new Scene();
Node root = scene.getRootNode();
Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);
Node meshNode = root.createChildNode("triangle", mesh);Λειτουργίες Πλέγματος
Δημιουργήστε ένα Mesh προγραμματιστικά με σημεία ελέγχου και πολύγωνα:
Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);Μετασχηματισμοί
Κάθε Node μεταφέρει ένα Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Διαβάστε το χώρο-κόσμου μέσω node.getGlobalTransform().getMatrix().
Υλικά
Αναθέστε υλικά σε κόμβους:
PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);
scene.getRootNode().createChildNode("red_mesh", mesh, mat);Τύποι υλικού: Material (βάση), PbrMaterial (PBR metallic-roughness).
Συμβουλές και Καλές Πρακτικές
- Χρησιμοποιήστε
Scene.fromFile()για φόρτωση μίας γραμμής όταν δεν χρειάζονται προσαρμοσμένες επιλογές - Δομήστε πλέγματα προγραμματιστικά με
createPolygon()για προσαρμοσμένη γεωμετρία - Χρησιμοποιήστε
.glbεπέκταση για συμπαγή δυαδική έξοδο glTF - Ελέγξτε
node.getEntity() != nullπριν από τη μετατροπή - Η εξαγωγή STL δεν τριγωνοποιεί αυτόματα τις πολυγωνικές όψεις. Η δυαδική εξαγωγή STL γράφει μόνο τις πρώτες 3 κορυφές κάθε πολυγωνικής όψης — οι τετράγωνες ή n‑γωνικές όψεις περικόπτονται σιωπηρά. Η εξαγωγή STL σε μορφή ASCII γράφει όλους τους δείκτες κορυφών, κάτι που παράγει κατεστραμμένα μπλοκ πλευρών για μη τριγωνικές όψεις. Πάντα να παρέχετε προ‑τριγωνοποιημένα πλέγματα (όλες οι όψεις τριγώνες) στην εξαγωγή STL για να αποφύγετε απώλεια δεδομένων ή άκυρη έξοδο.
Κοινά Προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
| Εξαίρεση κατά τη φόρτωση | Μη υποστηριζόμενο ή κατεστραμμένο αρχείο | Επαληθεύστε ότι το αρχείο ανοίγει σε προβολέα 3D |
| Λείπουν υλικά μετά τη φόρτωση του OBJ | .mtl Αρχείο δεν βρέθηκε | Θέση .mtl δίπλα στο .obj; βεβαιωθείτε ότι τα υλικά είναι ενεργοποιημένα |
| Ασυμφωνία κλίμακας μετά την εισαγωγή | Διαφορετικά συστήματα μονάδων | Εφαρμόστε ένα Transform κλίμακα μετά τη φόρτωση |
FAQ
Πώς μπορώ να εντοπίσω τη μορφή ενός αρχείου;?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Μπορώ να φορτώσω από ροή;?
Ναι. scene.open() δέχεται ένα InputStream.
Ποιες μορφές υποστηρίζουν τόσο εισαγωγή όσο και εξαγωγή;?
Τα OBJ, STL και glTF/GLB υποστηρίζουν και τις δύο κατευθύνσεις. Το FBX είναι μόνο για εισαγωγή· η εξαγωγή δεν έχει υλοποιηθεί στην έκδοση FOSS.
Περίληψη Αναφοράς API
| Κλάση / Μέθοδος | Περιγραφή |
|---|---|
Scene | Κοντέινερ 3Δ σκηνής ανώτερου επιπέδου |
scene.open() | Φορτώστε ένα αρχείο 3Δ με βάση τη διαδρομή ή τη ροή |
scene.save() | Εξαγωγή σκηνής σε αρχείο ή ροή |
Scene.fromFile() | Στατική εργοστασιακή μέθοδος για φόρτωση και επιστροφή ενός Scene |
Node | Κόμβος ιεραρχίας σκηνής |
node.createChildNode() | Δημιουργήστε και συνδέστε έναν υποκόμβο |
Mesh | Πολυγωνικό πλέγμα με σημεία ελέγχου και λίστες προσώπων |
mesh.createPolygon() | Ορίστε ένα πολυγωνικό πρόσωπο |
Mesh.toMesh() | Μετατρέψτε ή κλωνοποιήστε τη γεωμετρία του πλέγματος |
Transform | Τοπική μετατόπιση, περιστροφή και κλίμακα |
FileFormat | Κατάλογος και ανιχνευτής μορφών |