Είμαστε ενθουσιασμένοι να ανακοινώσουμε την διαθεσιμότητα των 3D FOSS για Java - μια δωρεάν, ανοικτή βιβλιοθήκη για να εργαστεί με 3D μορφές αρχείων σε εφαρμογές Java. Κατασκευασμένο ως καθαρή λύση Java χωρίς εγγενείς εξαρτήσεις, η βιβλία λειτουργεί στο Java 21 και αργότερα, καθιστώντας την προσβάσιμη σε ένα ευρύ φάσμα έργων και περιβάλλοντων.
Αυτό το άρθρο περνά μέσα από αυτό που προσφέρει η βιβλιοθήκη, πώς να ξεκινήσετε και πού να πάτε εδώ.
Τι είναι το 3D FOSS για Java;?
Aspose.3D FOSS για Java είναι μια ελαφριά 3D βιβλιοθήκη επεξεργασίας αρχείων που δημοσιεύεται κάτω από το ΜΙΤ ΑΔΕΙΑΣ.Παρέχει ένα API γραφικών σκηνής που σας επιτρέπει να φορτώσετε, να ελέγξετε, μετατρέψετε και να αποθηκεύσετε 3D μοντέλα σε διάφορες ευρέως χρησιμοποιούμενες μορφές. Η βιβλιοθήκη είναι πλήρως γραμμένη στη Java και δεν απαιτεί εξωτερικές εγχώριες δυαδικές ή πλατφόρμες-σχετικές διαμορφώσεις.
Ο κώδικας προέλευσης είναι διαθέσιμος στο GitHub: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Κλειδιά Βαθμολογίου
- Τη καθαρή Java - χωρίς JNI, μη εγχώριες βιβλιοθήκες, κανένα περιορισμό πλατφόρμας.
- ΚΕΦΑΛΑΙΟ 21+ συμβατότητα .
- ΜΙΤ ΑΔΕΙΑΣΕΙΣ - να χρησιμοποιείται σε προσωπικά, εμπορικά ή ιδιοκτησιακά έργα χωρίς περιορισμούς.
- Σενάριο-γγραφική αρχιτεκτονική - ένα γνωστό δέντρο με κόμβους, μασέλες, κάμερες και υλικά.
- Multi-Format Υποστήριξη - διαβάστε και γράψτε τα αρχεία OBJ, STL, glTF 2.0 και GLB.
Γρήγορη έναρξη
Maven εγκατάσταση
Προσθέστε την εξάρτηση στο δικό σας pom.xml:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Η πρώτη σας μετατροπή
Το απλούστερο ζήτημα χρήσης είναι η φόρτωση ενός αρχείου 3D σε μια μορφή και η αποθήκευση του σε άλλη. Εδώ είναι μια διπλή μετατροπή από το OBJ στο STL:
import com.aspose.threed.*;
public class QuickConvert {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("cube.obj");
scene.save("output.stl");
}
}
Η Scene Η τάξη είναι το κεντρικό σημείο εισόδου. κάλεσε Scene.fromFile() με μια διαδρομή αρχείου για να φορτώσετε ένα μοντέλο, στη συνέχεια καλέστε save() Η βιβλιοθήκη εισάγει τη μορφή από την επέκταση αρχείου.
Δημιουργία σκηνής από το Scratch
Μπορείτε επίσης να δημιουργήσετε σκηνές προγραμματικά:
import com.aspose.threed.*;
public class BuildScene {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("Box");
Transform t = node.getTransform();
t.setTranslation(1, 2, 3);
scene.save("scene.gltf");
}
}
Αυτό δημιουργεί μια νέα σκηνή, προσθέτει ένα παιδικό κόμβο που ονομάζεται “Box” κάτω από την ρίζα, το τοποθετεί σε συντονισμούς (1, 2, 3), και εξάγει το αποτέλεσμα ως αρχείο glTF.
Κατεβάστε με επιλογές ειδικού μορφής
Όταν χρειάζεστε καλύτερο έλεγχο της διαδικασίας φόρτωσης, κάθε μορφή παρέχει μια αφιερωμένη κατηγορία επιλογών. Για παράδειγμα, φορτίζοντας ένα αρχείο STL με σαφείς επιλογές:
import com.aspose.threed.*;
public class LoadWithOptions {
public static void main(String[] args) throws Exception {
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
// Inspect the loaded scene
System.out.println("Root children: "
+ scene.getRootNode().getChildNodes().size());
// Re-export as OBJ
scene.save("part.obj");
}
}
Η Scene.fromFile() Η στατική μέθοδος αποδέχεται οποιοδήποτε από τα είδη επιλογής φόρτισης: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,ή FbxLoadOptions.
Πέρασε το γραφείο της σκηνής
Μόλις μια σκηνή φορτίζεται, μπορείτε να περπατήσετε στο δέντρο κόμβου για να ελέγξετε ή να τροποποιήσετε το περιεχόμενό του:
import com.aspose.threed.*;
public class TraverseScene {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("model.gltf");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println("Node: " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: " + t.getTranslation());
Entity entity = child.getEntity();
if (entity instanceof Mesh) {
Mesh mesh = (Mesh) entity;
System.out.println(" Vertices: "
+ mesh.getControlPoints().size());
}
}
}
}
Αυτό το πρότυπο είναι χρήσιμο για την αποσύνθεση, τη δημιουργία αναφορών σχετικά με το περιεχόμενο μοντέλου ή επιλεκτικά τροποποιώντας τμήματα μιας σκηνής πριν από την επανεξαγωγή.
Εφαρμογή μετασχηματισμών
Η τοποθέτηση των κόμβων στο 3D χώρο γίνεται μέσω της Transform αντικείμενο σε κάθε Node:
import com.aspose.threed.*;
public class TransformExample {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node parent = scene.getRootNode().createChildNode("Parent");
parent.getTransform().setTranslation(10, 0, 0);
Node child = parent.createChildNode("Child");
child.getTransform().setTranslation(5, 0, 0);
child.getTransform().setScale(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.save("transformed.gltf");
}
}
Οι μετασχηματισμοί ακολουθούν το τυποποιημένο μοντέλο κληρονομιάς γονέων-παιδιών: η θέση του παιδιού στον κόσμο-στημό είναι ο συνδυασμός της τοπικής μετατροπής του και όλοι οι πρόγονοι μεταμορφώνονται μέχρι την ρίζα.
Τι περιλαμβάνεται
Η βιβλιοθήκη σκάφη με ένα εστιασμένο σύνολο ικανοτήτων σχεδιασμένα γύρω από το μοντέλο 3D σκηνής-γραφογραφία.
Σκηνή Γκράφι
Το γραφείο σκηνής είναι το πίσω μέρος του API. Κάθε αρχείο 3D αντιπροσωπεύεται ως δομή δέντρου:
| Κλάση | Ρόλος |
|---|---|
Scene | Κορυφαία επίπεδα δοχείο; η ρίζα του γραφείου σκηνής |
Node | Μια ονομαστική θέση στο δέντρο, κρατά μετασχηματισμούς και παιδικά κόμβους |
Entity | Αβραδική βάση για οπτικά αντικείμενα που συνδέονται με κόμβους |
Mesh | Πολυγωνική γεωμετρία - κάθετες, πρόσωπα, κανονικές |
Camera | Εικονική Καμερα Definitions |
Transform | Τοπική μετάφραση, περιστροφή και κλίμακα για ένα κόμβο |
GlobalTransform | Υπολογιστής μετασχηματισμός του κόσμου-στημότητας |
Υλικά
Η βιβλιοθήκη παρέχει ένα υλικό μοντέλο PBR (Φυσικά βασισμένο Rendering):
- PbrMaterial - υλικό με φυσική βάση, με αλμπέτο, μεταλλικότητα, σκληρότητα και διαφάνεια.Αυτό είναι το μόνο είδος υλικού που υπάρχει στην έκδοση Java.
Μαθηματικά χρήματα
Η com.aspose.threed Το πακέτο περιλαμβάνει βασικά μαθηματικά πρωτόγοντα:
- ΒΕΤΡΟΣ3 - 3 συστατικά vector για θέσεις, κατευθύνσεις και χρώματα.
- Ματρίκος 4 4x4 μετασχηματιστική ματρίκα.
- Καρταριάς Η αντιπροσωπεία της περιστροφής.
- BoundingBox - οξυδενωμένο πλαίσιο για διαστημικές ερωτήσεις.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Κατεβάστε και αποθηκεύστε τις επιλογές
Κάθε μορφή έχει αφιερωμένες τάξεις επιλογών που σας επιτρέπουν να ελέγχετε την συμπεριφορά εισαγωγής και εξαγωγής:
| ΤΕΧΝΗ | ΕΠΙΛΟΓΕΣ ΚΑΤΑΣΚΕΥΗΣ | Αποθηκεύστε τις επιλογές |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| ΓΚΠ / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (Μόνο για την εισαγωγή) |
Για παράδειγμα, για να εξάγει glTF με αρκετά εκτυπωμένο JSON και ένα σύστημα συντονισμών που είναι παγιδευμένα:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Υποστηριζόμενες μορφές
Ο παρακάτω πίνακας συνοψίζει τις μορφές που Aspose.3D FOSS για Java μπορεί να διαβάσει και να γράψει.
| ΤΕΧΝΗ | ΕΠΙΤΡΟΦΗ | εισαγωγών | Εξαγωγή | Σημειώσεις |
|---|---|---|---|---|
| OBJ | .obj | ΝΑΙ | ΝΑΙ | Με υλικά MTL |
| STL | .stl | ΝΑΙ | ΝΑΙ | Δυο + ASCII |
| ΓΚΤΠ 2.0 | .gltf | ΝΑΙ | ΝΑΙ | Τίτλος JSON |
| GLB | .glb | ΝΑΙ | ΝΑΙ | Δυαδική GlTF μέσω GltfSaveOptions |
| FBX | .fbx | ΝΑΙ | ΟΧΙ | Μόνο εισαγωγικά |
Ο OBJ, STL, glTF και GLB υποστηρίζουν τόσο φόρτιση όσο και εξοικονόμηση. FBX υποστηρίζεται μόνο για εισαγωγές.
Οδηγός επιλογής μορφοποίησης
Η επιλογή του σωστού μορφής εξαρτάται από την περίπτωση χρήσης σας:
- OBJ Είναι ιδανικό όταν χρειάζεστε μέγιστη συμβατότητα σε 3D εργαλεία.Πολλά σχεδόν κάθε εφαρμογή μοντελοποίησης μπορεί να διαβάσει και να γράψει OBJ. Λειτουργεί καλά για την ανταλλαγή δεδομένων mesh αλλά φέρνει μόνο τις βασικές πληροφορίες υλικού μέσω των συντρόφων αρχείων MTL.
- STL Είναι η μορφή επιλογής για τις ροές εργασίας εκτύπωσης 3D. Αποθηκεύει ριζική τριγωνισμένη γεωμετρία χωρίς υλικά ή ιεραρχία σκηνής, το οποίο είναι ακριβώς αυτό που περιμένει το λογισμικό σκουπιδιών. Αν ο σωλήνας σας τελειώνει με έναν εκτυπωτή 3d, STL είναι η απλή επιλογή.
- ΓΚΛΤΦ είναι το σύγχρονο πρότυπο για web και πραγματικό χρόνο 3D. Υποστηρίζει υλικά PBR, πλήρεις ιεραρχίες σκηνής, και έχει σχεδιαστεί για αποτελεσματική μετάδοση. Χρησιμοποιήστε glTF όταν χτίζετε προβολείς με βάση το Web, εργάζεστε με τρία.js ή Babylon.js, ή στοχεύοντας οποιοδήποτε σωλήνα rendering σε πραγματικά χρόνια.
- FBX είναι βαθιά ενσωματωμένη στην ανάπτυξη παιχνιδιών και τις ροές εργασίας δημιουργίας ψηφιακού περιεχομένου. υποστηρίζει πλούσια δεδομένα σκηνής, συμπεριλαμβανομένων των ιεραρχιών и υλικών. Aspose.3D FOSS για Java υποστηρίζεται FBX Μόνο εισαγωγικά - χρησιμοποιήστε το για να φορτώσετε τα περιουσιακά στοιχεία FBX και να τα μετατρέψετε σε άλλες μορφές.
Γνωστές Περιορισμοί
Είναι σημαντικό να σημειωθεί ότι Scene.render() Είναι Δεν υποστηρίζεται Στον κώδικα του Φορέντ, η χρήση αυτής της μεθόδου θα αποσπάσει ένα UnsupportedOperationException.Η βιβλιοθήκη έχει σχεδιαστεί για επεξεργασία 3D με βάση τα αρχεία - φορτίο, χειρισμό, μετατροπή και αποθηκεύσεις μοντέλων - αντί να παραδίδει σε πραγματικό χρόνο σε μια οθόνη.
Ανοικτή Πηγή και Άδεια Χρήσης
Aspose.3D FOSS για Java κυκλοφορεί κάτω από το ΜΙΤ Αδειοδότηση.Αυτό σημαίνει ότι είστε ελεύθεροι να:
- Χρησιμοποιήστε τη βιβλιοθήκη σε εμπορικές και ιδιοκτησιακές εφαρμογές.
- Αλλαγή του κώδικα πηγής για να ταιριάζει στις ανάγκες σας.
- Διανέμετε τη βιβλιοθήκη ως μέρος του δικού σας λογισμικού.
Δεν υπάρχουν χρεώσεις βασιλείας, δεν υπάρχουν όρια χρήσης και δεν υπάρχει καμία απαίτηση απονομής πέρα από αυτό που ορίζεται στη άδεια MIT.
Ο πλήρης κώδικας προέλευσης φιλοξενείται στο GitHub και οι συνεισφορές είναι ευπρόσδεκτες: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Συστημικές απαιτήσεις
| ΑΠΑΙΤΗΣΕΙΣ | Λεπτομέρειες |
|---|---|
| Java έκδοση | 21 or later |
| εξάρτηση | Κανένα (από καθαρή Java) |
| Πλατφόρμες | Οποιαδήποτε πλατφόρμα που τρέχει ένα JVM |
| Κτίστε εργαλείο | ΜΑΒΕΝ (Συνεχίζεται) |
Ξεκινώντας
Εδώ είναι οι πόροι για να σας βοηθήσει να σηκωθείτε και να τρέξετε:
- ΕΝΔΟΜΑΤΙΣΜΟΣ - ολοκληρωμένοι οδηγοί και API walkthroughs είναι διαθέσιμα στο Τοποθεσία 3D για την τεκμηρίωση.
- Γνώση βάσης - πρακτικά πώς να γράφουν άρθρα και συμβουλές επίλυσης προβλημάτων στο Σημειώσεις 3D KB.
- Πυροβολισμοί αναφοράς - λεπτομερή ταξική και μεθοδολογική αναφορά στην 3D API αναφοράς.
- Κωδικός πηγής - να περιηγηθείτε και να συμβάλει σε GitHub.
- Κεντρικό ΜΑΕΝ - το πακέτο δημοσιεύεται ως
org.aspose:aspose-3d-foss:26.5.0Στον κεντρικό Μάντο.
Συχνές περιπτώσεις χρήσης
Εδώ είναι μερικά πρακτικά σενάρια όπου Aspose.3D FOSS για Java ταιριάζει καλά:
Τρόποι μετατροπής των σωλήνων
Πολλές ομάδες λαμβάνουν 3D περιουσιακά στοιχεία σε μια μορφή, αλλά χρειάζονται αυτά σε άλλη. Μια ομάδα σχεδιασμού μπορεί να εργαστεί στο FBX ενώ η ομάδα web χρειάζεται glTF. Η βιβλιοθήκη σας επιτρέπει να δημιουργήσετε αυτόματους σωλήνες μετατροπής:
// Convert all incoming FBX assets to GLB for the web team
Scene scene = Scene.fromFile("asset.fbx");
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("asset.glb", opts);
3D Model Inspection and Validation
Πριν από την ενσωμάτωση ενός 3D περιουσιακού στοιχείου στην εφαρμογή σας, μπορεί να θέλετε να επικυρώσετε το περιεχόμενό του - ελέγξτε τους αριθμούς κόμβων, επαληθεύστε τη γεωμετρία ή επιβεβαιώστε ότι τα αναμενόμενα στοιχεία είναι παρόντα:
Scene scene = Scene.fromFile("model.obj");
int nodeCount = scene.getRootNode().getChildNodes().size();
System.out.println("Top-level nodes: " + nodeCount);
for (Node child : scene.getRootNode().getChildNodes()) {
if (child.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) child.getEntity();
System.out.println(child.getName() + ": "
+ mesh.getControlPoints().size() + " vertices");
}
}
Σκηνή Συνέλευσης
Μπορείτε να φορτίσετε πολλαπλά μοντέλα και να τα συνδυάσετε σε μια ενιαία σκηνή:
Scene scene = new Scene();
Scene part1 = Scene.fromFile("chassis.obj");
Scene part2 = Scene.fromFile("wheels.obj");
// Add nodes from each part into the combined scene
for (Node child : part1.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
for (Node child : part2.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
scene.save("assembled.gltf");
Τι είναι το επόμενο
Σε προσεχείς δημοσιεύσεις θα καλύψουμε:
- Μια βαθιά βυθίζοντας στα βασικά χαρακτηριστικά του API σκηνικού γραφείου, των υλικών και των μαθηματικών εργαλείων.
- Ένας πρακτικός οδηγός για να εργαστείτε με κάθε υποστηριζόμενη μορφή 3D - OBJ, STL, glTF και FBX - συμπεριλαμβανομένων των επιλογών φόρτωσης / αποθήκευσης και των μοντέλων μετατροπής συσκευών.
Μείνετε εντυπωσιασμένοι και νιώστε ελεύθεροι να εξερευνήσετε τη βιβλιοθήκη και να μοιραστείτε τα σχόλια σας στο GitHub.