Πώς να φορτώσετε 3D μοντέλα στο Java
Το aspose-3d-foss για Java παρέχει ένα απλό API για το άνοιγμα αρχείων 3D. Μετά τη φόρτωση ενός αρχείου σε ένα Scene αντικείμενο, μπορείτε να περιηγηθείτε στην ιεραρχία των κόμβων και να διαβάσετε τα γεωμετρικά δεδομένα.
Οδηγός βήμα προς βήμα
Βήμα 1: Εγκατάσταση του πακέτου
Προσθέστε την εξάρτηση Maven:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>Βήμα 2: Εισαγωγή της κλάσης Scene
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;Βήμα 3: Φόρτωση αρχείου
Scene scene = new Scene();
scene.open("model.obj");Ή χρησιμοποιήστε το στατικό εργοστάσιο:
Scene scene = Scene.fromFile("model.obj");Υποστηριζόμενες μορφές: OBJ, STL, glTF 2.0 / GLB, FBX (μόνο δυαδικά — το ASCII FBX δεν υποστηρίζεται και προκαλεί ImportException).
Βήμα 4: Διάσχιση κόμβων της σκηνής
void walk(Node node, int depth) {
String indent = " ".repeat(depth * 2);
System.out.println(indent + "Node: " + node.getName());
for (Node child : node.getChildNodes()) {
walk(child, depth + 1);
}
}
walk(scene.getRootNode(), 0);Βήμα 5: Πρόσβαση σε δεδομένα πλέγματος
for (Node node : scene.getRootNode().getChildNodes()) {
if (node.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) node.getEntity();
System.out.println("Mesh '" + node.getName() + "': " +
mesh.getControlPoints().size() + " vertices, " +
mesh.getPolygonCount() + " polygons");
}
}Κοινά προβλήματα και διορθώσεις
Εξαίρεση κατά τη φόρτωση
Επαληθεύστε ότι το αρχείο δεν είναι κατεστραμμένο και ότι η μορφή υποστηρίζεται (OBJ, STL, glTF, FBX).
NullPointerException κατά την πρόσβαση στην οντότητα
Δεν κάθε κόμβος περιέχει γεωμετρία. Πάντα ελέγξτε node.getEntity() instanceof Mesh πριν από τη μετατροπή.
Ασυμφωνία συστήματος συντεταγμένων
Χρησιμοποιήστε ObjLoadOptions.setFlipCoordinateSystem(true) ή εφαρμόστε μια περιστροφή μετά τη φόρτωση.
Συχνές Ερωτήσεις (FAQ)
Ποια μορφές μπορώ να φορτώσω;?
OBJ, STL (δυαδικά και ASCII), glTF 2.0 / GLB, και FBX. Για το FBX, μόνο δυαδικό FBX υποστηρίζεται. Τα αρχεία ASCII FBX θα προκαλέσουν ImportException("ASCII FBX format not yet supported - only binary FBX is supported").
Μπορώ να φορτώσω από InputStream;?
Ναι. scene.open() δέχεται ένα InputStream.
Η βιβλιοθήκη είναι ασφαλής ως προς νήματα;?
Κάθε Scene η παρουσία είναι ανεξάρτητη. Η φόρτωση ξεχωριστών αρχείων σε ξεχωριστές παρουσίες από ξεχωριστά νήματα είναι ασφαλής.