Εισαγωγή
Η εργασία με 3D περιεχόμενο στη Java απαιτεί συνήθως την επιλογή μεταξύ βαρέων βαρών. μηχανές παιχνιδιών και βιβλιοθήκες μαθηματικών bar-bones. aspose-3d-foss Το πακέτο προσφέρει ένα μεσαία γη: ένα εστιασμένο API γραφικών σκηνής που χειρίζεται τα αρχεία I/O, τις ιεραρχίες κόμβων, κατασκευής μαστού, και συντονίζει μετασχηματισμούς χωρίς να τραβήξει σε μια εκδοχή Τύπος ή αλυσίδα εθισμού.
Aspose.3D FOSS για Java είναι μια βιβλιοθήκη ανοικτού κώδικα που διανέμεται κάτω από την άδεια MIT. παρέχει 80 τάξεις εκτεταμένη τη διαχείριση σκηνής, γεωμετρία, υλικά και μετατροπή μορφών. Η βιβλία διαβάζει FBX, glTF/GLB, Wavefront OBJ και STL, και γράφει gltF / GLB , OBG και Stl (Η εξαγωγή FBx δεν εφαρμόζεται), καθιστώντας πρακτική για επεξεργασία 3D με το server-side, ενσωμάτωση εργαλείων κατασκευής και σωλήνες μετατροπής δεδομένων που τρέχουν στο Java 21 ή αργότερα.
Αυτό το άρθρο περνά μέσα από τις δυνατότητες διαχείρισης σκηνής στη βιβλιοθήκη: πώς να χτίσετε μια σκάνδαλο από τη σφραγίδα, να την πληθυσίσετε με γεωμετρία και μετασχηματισμούς και να εξάγετε το αποτέλεσμα στο δίσκο.
Τι περιλαμβάνεται
Σενάριο γραφικών βάσεων
Η Scene Η τάξη είναι το βασικό δοχείο για κάθε 3D έγγραφο. Node, μεταδεδομένα περιουσιακών στοιχείων, κλιπ κινουμένων σχεδίων και υποσενάρια. μπορείτε να δημιουργήσετε ένα άδειο σκηνή και στη συνέχεια να το πληθυσμό, ή φορτίστε ένα υπάρχον αρχείο με Scene.fromFile.
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
Scene scene = new Scene();
Node root = scene.getRootNode();
// Add named child nodes to build a hierarchy
Node chassis = root.createChildNode("Chassis");
Node wheel = chassis.createChildNode("FrontLeftWheel");
ΟΛΟΙ Node Μπορεί να κρατήσει ένα Entity (όπως και η Mesh ή Camera) Α) Η Transform, μια λίστα υλικών, και περαιτέρω παιδικά κόμβους. η δομή του δέντρου καθρέφεται από το πρότυπο γραφικών σκηνής που χρησιμοποιείται από τα περισσότερα εργαλεία 3D συγγραφής.
Μασχ Κτίριο
Η Mesh Η τάξη σας επιτρέπει να ορίσετε τη γεωμετρία από τα σημεία ελέγχου και την πολυγόνο. Εισαγωγή: Προσθέστε τις καμπύλες με addControlPoint,και να τα συνδέσει με πρόσωπα Με createPolygon.
import com.aspose.threed.Mesh;
Mesh box = new Mesh("Box");
// Define eight corners of a cube
box.addControlPoint(0, 0, 0);
box.addControlPoint(1, 0, 0);
box.addControlPoint(1, 1, 0);
box.addControlPoint(0, 1, 0);
box.addControlPoint(0, 0, 1);
box.addControlPoint(1, 0, 1);
box.addControlPoint(1, 1, 1);
box.addControlPoint(0, 1, 1);
// Create quad faces
box.createPolygon(0, 1, 2, 3); // back
box.createPolygon(4, 5, 6, 7); // front
box.createPolygon(0, 4, 7, 3); // left
box.createPolygon(1, 5, 6, 2); // right
box.createPolygon(3, 2, 6, 7); // top
box.createPolygon(0, 1, 5, 4); // bottom
scene.getRootNode().createChildNode("Box", box);
Η φωτιά του Μασά περιλαμβάνει triangulate(), optimize(removeVertices),και το Boolean Οι επιχειρήσεις (union, difference, intersect(α) οι μέθοδοι αυτές είναι σκληρές σε την τρέχουσα κυκλοφορία — επιστρέφουν ένα κλόουν της μάζας εισόδου χωρίς να εκτελούν Η λεγόμενη επιχείρηση.
Μετασχηματισμός και θέσεις
Κάθε ένα Node Παρουσιάζει A Transform που ελέγχει την τοπική μετάφρασή της, τη ροτασία, Αυτά συνθέτουν μέσα από τη ιεραρχία, έτσι ώστε να μετακινούνται ένα γονικό κόμβο. Κινούνται όλα τα παιδιά τους.
import com.aspose.threed.Transform;
import com.aspose.threed.Node;
Node node = scene.getRootNode().createChildNode("Shifted");
Transform t = node.getTransform();
t.setTranslation(5.0, 0.0, -3.0);
t.setScale(2.0, 2.0, 2.0);
t.setEulerAngles(0, 45.0, 0);
Για απόλυτη θέση ερωτήσεων, καλέστε node.getGlobalTransform() Να ανακτήσουν Η σύνθεση GlobalTransform,ή node.evaluateGlobalTransform(true) Για να πάρει ένα Matrix4 Αυτό περιλαμβάνει γεωμετρικά offset.
ΠΡΕΠΤΙΚΑ ΥΛΙΚΑ
Η PbrMaterial Η τάξη παρέχει φυσικά βασισμένες ιδιότητες rendering: albedo χρώμα, μεταλλικό παράγοντα, σκληρότητα, εκπομπές χρώματος και διαφάνεια. Προσδιορίστε ένα υλικό σε ένα κόμβο κατά τη δημιουργία του παιδιού.
import com.aspose.threed.PbrMaterial;
import com.aspose.threed.Vector4;
import com.aspose.threed.Vector3;
PbrMaterial mat = new PbrMaterial("RedMetal");
mat.setAlbedo(new Vector4(0.9, 0.1, 0.1, 1.0));
mat.setMetallicFactor(0.8);
mat.setRoughnessFactor(0.3);
mat.setEmissiveColor(new Vector3(0, 0, 0));
scene.getRootNode().createChildNode("Part", box, mat);
ΠΡΟΜΗΜΑΤΑ ΑΝΑΚΑΛΥΨΗΣ
Η FileFormat Η τάξη παρέχει στατικές αναζητήσεις και αναγνωριστικά εργαλεία. μπορείτε να λύση μιας μορφής με επέκταση αρχείου ή εξετάζοντας μια ροή για να εντοπίσει άγνωστα αρχεία.
import com.aspose.threed.FileFormat;
FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();
Συντονιστικά συστήματα μετατροπής
AxisSystem να σας επιτρέψει να ορίσετε την ανώτερη άξονα, το μπροστινό άξον και τη διαχειριστικότητα ενός συντονισμένο σύστημα, στη συνέχεια υπολογίζει το Matrix4 Μετασχηματισμός της γεωμετρίας μεταξύ των Σύμβαση (π.χ., από ένα σύστημα δεξί χέρι Z-up σε ένα Y-Up) Αριστερά με ένα χέρι).
import com.aspose.threed.AxisSystem;
import com.aspose.threed.Axis;
import com.aspose.threed.CoordinateSystem;
import com.aspose.threed.Matrix4;
AxisSystem source = new AxisSystem(
CoordinateSystem.RIGHT_HANDED, Axis.Z_AXIS, Axis.Y_AXIS);
AxisSystem target = new AxisSystem(
CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.Z_AXIS);
Matrix4 conversion = source.transformTo(target);
Γρήγορη έναρξη
Προσθέστε την εξάρτηση από το Maven:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Δημιουργήστε μια απλή σκηνή και εξάγετε την:
import com.aspose.threed.Scene;
import com.aspose.threed.Mesh;
import com.aspose.threed.Node;
import com.aspose.threed.StlSaveOptions;
import com.aspose.threed.FileContentType;
Scene scene = new Scene();
Mesh mesh = new Mesh("Triangle");
mesh.addControlPoint(0, 0, 0);
mesh.addControlPoint(1, 0, 0);
mesh.addControlPoint(0, 1, 0);
mesh.createPolygon(0, 1, 2);
scene.getRootNode().createChildNode("Shape", mesh);
StlSaveOptions opts = new StlSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("output.stl", opts);
Υποστηριζόμενες μορφές
| ΤΕΧΝΗ | ΕΠΙΤΡΟΦΗ | Διαβάστε | Γράψε |
|---|---|---|---|
| FBX (ASCII και Binary, 6.x-7.x) | .fbx | ΝΑΙ | ΟΧΙ |
| ΓΕΝΤΦ 1.0 / 2.0 | .gltf | ΝΑΙ | ΝΑΙ |
| Δυοδυναμική GTTF | .glb | ΝΑΙ | ΝΑΙ |
| ΟΜΠΡΟΣΦΡΟΝΤΟΣ OBJ | .obj | ΝΑΙ | ΝΑΙ |
| STL (ASCII και δυαδικό) | .stl | ΝΑΙ | ΝΑΙ |
Κάθε μορφή έχει αφιερωθεί σε LoadOptions και SaveOptions Οι υποκείμενοι (για Για παράδειγμα, FbxLoadOptions, GltfSaveOptions, StlSaveOptions(Αυτό που εκθέτει ρυθμίσεις ειδικών σε μορφή, όπως η συντονιστική-συστήματα και ο τύπος περιεχομένου Η επιλογή.
Ανοικτή Πηγή & Άδεια Χρήσης
Aspose.3D FOSS για Java κυκλοφορεί υπό την άδεια MIT. Ο κώδικας πηγής είναι: Διαθέσιμο στο GitHub Σημειώσεις: 3D-FOSS-for-Java. Μπορείτε να χρησιμοποιήσετε, να τροποποιήσουν και να αναδιανέμουν τη βιβλιοθήκη σε εμπορικό και μη εμπορικών έργων χωρίς περιορισμούς.
Ξεκινώντας
- Οδηγός Ανάπτυξης - Πυροβολισμοί και Χρησιμοποιήστε τα πρότυπα
- Γνώση βάσης Πώς να γράψετε άρθρα και FAQs
- Πυροβολισμοί αναφοράς - πλήρης τάξη και Μέθοδος τεκμηρίωσης