Aspose.3D FOSS για Java υποστηρίζει πέντε μορφές αρχείων 3D: OBJ, STL, ΓΚΛΤΦ, GLB,και FBX Αυτό το άρθρο είναι ένα πρακτικό, μορφο-σε-τυπολογία οδηγό που δείχνει πώς να φορτώσετε και να αποθηκεύσετε κάθε μία από αυτές, ποιες επιλογές είναι διαθέσιμες και πώς θα μετατρέψετε μεταξύ τους.
Όλα τα παραδείγματα χρησιμοποιούν το com.aspose.threed.* Πάρκο :
import com.aspose.threed.*;
Η εξάρτηση από το Maven:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Σχεδιασμός τοπίου
Πριν από τη βυθίσετε, εδώ είναι μια γρήγορη επισκόπηση των τεσσάρων υποστηριζόμενων μορφών και τα τυπικά τους περιπτώσεις χρήσης.
| ΤΕΧΝΗ | ΕΠΙΤΡΟΦΗ | εισαγωγών | Εξαγωγή | Υλικό υποστήριξη | Η ιεραρχία της σκηνής |
|---|---|---|---|---|---|
| OBJ | .obj | ΝΑΙ | ΝΑΙ | Βασικά αρχεία (MTL) | Φάτα |
| STL | .stl | ΝΑΙ | ΝΑΙ | Κανένα | Φάτα |
| ΓΚΤΠ 2.0 | .gltf | ΝΑΙ | ΝΑΙ | PBR | Πλήρης |
| GLB | .glb | ΝΑΙ | ΝΑΙ | PBR | Πλήρης |
| FBX | .fbx | ΝΑΙ | ΟΧΙ | πλούσιοι | Πλήρης |
OBJ, STL, glTF και GLB υποστηρίζουν τόσο εισαγωγές όσο και εξαγωγικές. Μόνο εισαγωγικά.GLB (binary glTF) παράγεται μέσω της GltfSaveOptions Με setContentType(FileContentType.BINARY).
OBJ: Ο αντικείμενο Wavefront
Το OBJ είναι ένα από τα πιο ευρέως υποστηριζόμενα 3D μορφές μασχ. Αποθηκεύει τη γεωμετρία ως απλό κείμενο, με μια επιλεγμένη .mtl Εταιρεία για τα υλικά.
Κατεβάστε OBJ αρχεία
Η πιο απλή προσέγγιση είναι να περάσετε το αρχείο διαδρομή άμεσα:
Scene scene = Scene.fromFile("model.obj");
Για περισσότερη χρήση, έλεγχο ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
Όταν το αρχείο OBJ αναφέρεται σε ένα αρχείου MTL (μέσω ενός mtllib Η βιβλιοθήκη θα προσπαθήσει να φορτώσει αυτόματα ορισμούς υλικού από αυτήν.Το αρχείο MTL πρέπει να βρίσκεται στο ίδιο κατάλογο με το αρχείου OBJ ή στην πορεία που καθορίζεται στη οδηγία.
Σωστή ως OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
ΟΙ ΚΑΘΕΣΕΙΣ ΧΡΗΣΙΜΑΣΤΕ
- Ανταλλαγή δεδομένων μετρητών μεταξύ διαφορετικών εργαλείων 3D.
- Εισαγωγή μοντέλων από βιβλιοθήκες περιουσιακών στοιχείων που διανέμονται σε μορφή OBJ.
- Σύντομη επιθεώρηση της γεωμετρίας χωρίς σύνθετες ιεραρχίες σκηνής.
Στερεολίτογραφία: Stereolithography
STL είναι η τυποποιημένη μορφή για 3D εκτύπωση. αντιπροσωπεύει ριζική τριγωνιστική γεωμετρία χωρίς υλικά, χρώματα ή ιεραρχία σκηνής. τα αρχεία STl έρχονται σε δύο παραλλαγές: ASCII (ανθρώπινο-διαβάσιμο) και δυαδικό (πικάντικη).
Κατεβάστε αρχεία STL
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
Σωστή ως STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
Για να ελέγξετε την παραγωγή, χρησιμοποιήστε StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
ΣΤΛ ΣΧΕΔΙΑΣΕΙΣ
- Το STL αποθηκεύει μόνο τριγωνική γεωμετρία. τα υλικά, οι κλωστοϋφαντουργίες και η ιεραρχία σκηνής δεν υποστηρίζονται και εκτοξεύονται στην εξαγωγή.
- Η ΕΣΤΕΕ ΕΞΑΓΩΓΗ Όχι Το binary STL γράφει μόνο τις πρώτες 3 κατώτερες γραμμές κάθε πολυγώνου πρόσωπο. τα quad και n-gon πρόσωπα είναι σιωπηλά κρυμμένα. ASCII STl γράφει όλους τους δεξιότητες ανά πρόσωπό, παράγοντα που προκαλούν παραμορφωμένη απόδοση για μη τριγωνικά πρόσωπά. Πάντα χρησιμοποιήστε προ-triangulated μασέ (πλήρως τριγόνες πρόσωποι) όταν εξάγεται στο ST L.
- Το binary STL είναι σημαντικά μικρότερο από το ASCII STl για τα μεγάλα μοντέλα.
- STL είναι η μορφή επιλογής όταν ο στόχος είναι ένα 3D εκτυπωτή ή λογισμικό σκιέρ.
GLTF: Πληροφοριακό Τάγμα
Το glTF είναι ένα σύγχρονο μορφότυπο που έχει σχεδιαστεί για αποτελεσματική μετάδοση και φόρτιση περιεχομένου 3D, ιδιαίτερα στο διαδίκτυο και σε εφαρμογές πραγματικού χρόνου. υποστηρίζει υλικά PBR, ιεραρχίες σκηνής και κινούμενες εικόνες.
Κατεβάστε αρχεία GLTF
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
Σωστή ως GLTF
Η βασική αποθήκευση χρησιμοποιεί την επέκταση αρχείου για να καθορίσει τη μορφή:
scene.save("output.gltf");
Για λεπτομερή χρήση, έλεγχο GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Γλυφτερίδα Λεπτομέρειες
| Μέθοδος | Σκοπός |
|---|---|
setFlipCoordinateSystem(boolean) | Φλέβετε την άξονα του συστήματος συντονισμού κατά τη διάρκεια της εξαγωγής. Χρήσιμο όταν μετατρέπεται από Y-up σε Z-Up ή αντίστροφα. |
setPrettyPrint(boolean) | Διαμορφώστε την έκδοση JSON με ένταξη για ανάγνωση. false Για μικρότερη μέγεθος αρχείου στην παραγωγή. |
GST χρησιμοποιεί περιπτώσεις
- 3D προβολείς σε ιστό (three.js, Babylon.js).
- Εφαρμογές σε πραγματικό χρόνο και κινητήρες παιχνιδιών.
- Διατήρηση των ορισμών υλικού PBR σε όλα τα εργαλεία.
FBX: Filmbox (Μόνο εισαγωγικά)
Το FBX είναι μια ιδιόκτητη μορφή από το Autodesk που χρησιμοποιείται ευρέως στην ανάπτυξη παιχνιδιών και τη δημιουργία ψηφιακού περιεχομένου. Aspose.3D FOSS για Java υποστηρίζει το FBx για: Μόνο εισαγωγικά - Η εξαγωγή στο FBX δεν είναι διαθέσιμη.
Μοναδικό FBX μόνο. Ο εισαγωγέας FBX διαβάζει μόνο τα διδάγματα αρχείων FB X. Μετά από ένα ASCII, το αρχείο FBx ρίχνει
ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). Η ιεραρχία των νωτών και η εξόρυξη υλικού από το FBX δεν επαληθεύονται πλήρως. σύνθετες σκηνές του FB X μπορεί να μην φορτίζονται εντελώς.
Φόρτωση αρχείων FBX
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
Μετατροπή FBX σε Άλλα μορφότυπα
Δεδομένου ότι η εξαγωγή FBX δεν υποστηρίζεται, μετατρέψτε τις εισαγόμενες σκηνές FB X σε glTF, GLB, OBJ ή STL:
Scene scene = Scene.fromFile("character.fbx");
// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);
FBX Χρησιμοποιεί περιπτώσεις
- Εισαγωγή στατικών περιουσιακών στοιχείων από τα εργαλεία Autodesk (Maya, 3ds Max) και μετατροπή σε άλλες μορφές.
- Κατεβάστε τη δυαδική γεωμετρία FBX και επανεξαγωγή σε glTF/GLB, OBJ ή STL.
Batch μετατροπή
Μια κοινή ροή εργασίας είναι η μετατροπή ολόκληρου του καταλόγου αρχείων από μια μορφή σε άλλη. Εδώ είναι ένα πρότυπο για τη μετατροπία συσκευών:
import com.aspose.threed.*;
import java.io.File;
public class BatchConvert {
public static void main(String[] args) throws Exception {
File inputDir = new File("models/obj");
File outputDir = new File("models/gltf");
outputDir.mkdirs();
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setPrettyPrint(true);
File[] objFiles = inputDir.listFiles(
(dir, name) -> name.toLowerCase().endsWith(".obj")
);
if (objFiles == null) return;
for (File objFile : objFiles) {
String baseName = objFile.getName()
.replaceFirst("\\.obj$", "");
Scene scene = Scene.fromFile(objFile.getAbsolutePath());
String outPath = new File(outputDir, baseName + ".gltf")
.getAbsolutePath();
scene.save(outPath, saveOpts);
System.out.println("Converted: " + objFile.getName()
+ " -> " + baseName + ".gltf");
}
}
}
Αυτό χρεώνει κάθε .obj αρχείο σε ένα δελτίο, μετατρέπεται κάθε ένα στο glTF με μια πολύ εκτυπωμένη έκδοση και αποθηκεύει τα αποτελέσματα. μπορείτε να προσαρμόσετε αυτό το πρότυπο για οποιοδήποτε συνδυασμό μορφής πηγή και στόχο.
Κροσ-Μορμάτινα Μετατροπή Αναφοράς
Ο παρακάτω πίνακας δείχνει τι να περιμένετε όταν μετατρέψετε μεταξύ μορφών.
| Από | Για το | Γεωμετρία | Υλικά | Ιεραρχία | Σημειώσεις |
|---|---|---|---|---|---|
| OBJ | STL | Διατηρημένο | Χάθηκε | N/A | Η STL δεν έχει υλική υποστήριξη |
| OBJ | ΓΚΤ / GLB | Διατηρημένο | Μετατρέψτε το σε PBR | Φάτα | Το υλικό MTL χαρτογραφείται όπου είναι δυνατόν |
| STL | OBJ | Διατηρημένο | Κανένα | N/A | Δεν υπάρχουν υλικά στην πηγή |
| STL | ΓΚΤ / GLB | Διατηρημένο | Υπολογισμοί | Φάτα | Εφαρμοσμένο υλικό |
| ΓΚΛΤΦ | OBJ | Διατηρημένο | απλοποιημένη | Φάτεν | ΠΡΕΒΑ ΣΤΟ ΒΑΣΙΚΟ ΥΛΙΚΑ |
| ΓΚΛΤΦ | STL | Διατηρημένο | Χάθηκε | Φάτεν | Μόνο η γεωμετρία |
| FBX | OBJ | Διατηρημένο | απλοποιημένη | Φάτεν | Υλικό απλούστευση |
| FBX | STL | Διατηρημένο | Χάθηκε | Φάτεν | Μόνο η γεωμετρία |
| FBX | ΓΚΤ / GLB | Διατηρημένο | Μετατρέψτε το σε PBR | Διατηρημένο | Καλή πιστότητα |
Γενικές κατευθυντήριες γραμμές μετατροπής
- Γεωμετρία συνήθως διατηρείται σε ζεύγη μορφής, με μια σημαντική εξαίρεση: όταν εξάγονται στο STL, τα μασέ πρέπει να αποτελούνται εντελώς από τριγωνικά πρόσωπα. binary STT σιωπηλά τρυπώνει τα τετράγωνα και n-gon πρόσωπά τους στις πρώτες 3 κατώτερες γραμμές τους. ASCII STS παράγει παραμορφωμένη παραγωγή για μη τριγώνια πρόσωπο.
- Υλικά να επιβιώσει καλύτερα μεταξύ των γκλΤΦ και FBX-εγκατασταθεί σκηνές που περιλαμβάνουν δεδομένα υλικού. μετατροπή σε STL πάντα πηγαίνει τα υλικά. Μετατροπή στο OBJ απλοποιεί τα ύλη για το βασικό μοντέλο MTL.
- Η ιεραρχία της σκηνής διατηρείται μεταξύ των αρχείων μορφής glTF. OBJ και STL παράγουν επίπεδα δομών. η ιεραρχία FBX και η εξόρυξη υλικού δεν επαληθεύονται πλήρως σε αυτή την έκδοση.
Πάρτε τα όλα μαζί
Εδώ είναι ένα πλήρες παράδειγμα που φορτώνει ένα αρχείο OBJ, ελέγχει τους κόμβους του και εξάγει τόσο στο glTF όσο και στην GLB:
import com.aspose.threed.*;
public class FormatWorkflow {
public static void main(String[] args) throws Exception {
// Load
Scene scene = Scene.fromFile("input.obj");
// Inspect
System.out.println("Nodes in scene:");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println(" " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: "
+ t.getTranslation());
}
// Export to glTF with options
GltfSaveOptions gltfOpts = new GltfSaveOptions();
gltfOpts.setPrettyPrint(true);
scene.save("output.gltf", gltfOpts);
// Export to GLB (binary glTF)
GltfSaveOptions glbOpts = new GltfSaveOptions();
glbOpts.setContentType(FileContentType.BINARY);
scene.save("output.glb", glbOpts);
System.out.println("Export complete.");
}
}
Συνοπτικά
Aspose.3D FOSS για Java σας δίνει μια συνεπή API σε πολλαπλές μορφές.:
- OBJ - απλή ανταλλαγή μαστού με βασικά υλικά.
- STL - γεωμετρία-μόνο μορφή για 3D τροφοδοσίες εκτύπωσης.
- ΓΚΠ / GLB - σύγχρονη μορφή PBR-κατευθυνόμενη για χρήση στο web και σε πραγματικό χρόνο.
GltfSaveOptionsΜεsetContentType(FileContentType.BINARY)για την παραγωγή της GLB. - FBX - μόνο εισαγωγή. πλούσια μορφή για φορτίο περιουσιακών στοιχείων από κινητήρες παιχνιδιών και εργαλεία DCC.
Χρησιμοποιήστε φόρτιση ειδικού μορφής και αποθηκεύστε τις κατηγορίες επιλογών (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionsόταν χρειάζεστε λεπτό-κλαδισμένο έλεγχο της εισαγωγικής ή εξαγωγής διαδικασίας.
Για περισσότερες λεπτομέρειες, επισκεφθείτε το 3D τεκμηρίωση ή να ανακαλύψετε την πηγή GitHub.