Χαρακτηριστικά και Λειτουργίες

Χαρακτηριστικά και Λειτουργίες

Χαρακτηριστικά και Λειτουργίες

Αυτή η σελίδα καλύπτει κάθε κύρια περιοχή λειτουργίας του 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Κατάλογος και ανιχνευτής μορφών
 Ελληνικά