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 με μια πολύ εκτυπωμένη έκδοση και αποθηκεύει τα αποτελέσματα. μπορείτε να προσαρμόσετε αυτό το πρότυπο για οποιοδήποτε συνδυασμό μορφής πηγή και στόχο.

Κροσ-Μορμάτινα Μετατροπή Αναφοράς

Ο παρακάτω πίνακας δείχνει τι να περιμένετε όταν μετατρέψετε μεταξύ μορφών.

ΑπόΓια τοΓεωμετρίαΥλικάΙεραρχίαΣημειώσεις
OBJSTLΔιατηρημένοΧάθηκεN/AΗ STL δεν έχει υλική υποστήριξη
OBJΓΚΤ / GLBΔιατηρημένοΜετατρέψτε το σε PBRΦάταΤο υλικό MTL χαρτογραφείται όπου είναι δυνατόν
STLOBJΔιατηρημένοΚανέναN/AΔεν υπάρχουν υλικά στην πηγή
STLΓΚΤ / GLBΔιατηρημένοΥπολογισμοίΦάταΕφαρμοσμένο υλικό
ΓΚΛΤΦOBJΔιατηρημένοαπλοποιημένηΦάτενΠΡΕΒΑ ΣΤΟ ΒΑΣΙΚΟ ΥΛΙΚΑ
ΓΚΛΤΦSTLΔιατηρημένοΧάθηκεΦάτενΜόνο η γεωμετρία
FBXOBJΔιατηρημένοαπλοποιημένηΦάτενΥλικό απλούστευση
FBXSTLΔιατηρημένοΧάθηκεΦάτενΜόνο η γεωμετρία
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.