Aspose.3D FOSS für Java unterstützt fünf 3D-Fileformate: OBJ, STL, Gltf, GLB,und FBX Dieser Beitrag ist ein praktischer, Format-für-Format-Gide, der zeigt, wie man jedes hochladen und speichert, welche Optionen verfügbar sind und wie zwischen ihnen umgewandelt werden kann.

Alle Beispiele verwenden die com.aspose.threed.* Paket ist:

import com.aspose.threed.*;

Maven Abhängigkeit:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.5.0</version>
</dependency>

Format Landschaft

Bevor Sie sich in eintauchen, hier ist eine schnelle Übersicht der vier unterstützten Formate und ihrer typischen Verwendungskräfte.

FormatierungErweiterungEinfuhrExportMaterial UnterstützungDie Hierarchie der Szene
OBJ.objJa jaJa jaBasic (MTL Dateien)Flat
STL.stlJa jaJa jaKeinerFlat
GTTF 2.0.gltfJa jaJa jaPBRVollständig
GLB.glbJa jaJa jaPBRVollständig
FBX.fbxJa jaNo nichtRichesVollständig

OBJ, STL, glTF und GLB unterstützen sowohl Import als auch Export. FBX wird unterstützt für Einwanderung nur.GLB (binare GlTF) wird durch GltfSaveOptions mit setContentType(FileContentType.BINARY).

OBJ: Wavefront Object

OBJ ist eines der am weitesten unterstützten 3D-Mesh-Formate. Es speichert Geometrie als reiches Text, mit einer optionalen .mtl Kompanionsdateien für Materialien.

Laden von OBJ Dateien

Der einfachste Ansatz ist, den Dateiweg direkt zu übergehen:

Scene scene = Scene.fromFile("model.obj");

Für mehr Kontrolle, Nutzung ObjLoadOptions:

ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);

Wenn die OBJ-Datei eine MTL-File bezieht (via a) mtllib Die Bibliothek wird versuchen, die Materialiendefinitionen automatisch von ihr zu laden.Die MTL-Datei sollte in der gleichen Kataloge wie die OBJ-File oder auf dem im Richtlinie angegebenen Weg liegen.

Sparen als Obj

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");

OBJ verwendet Fälle

  • Austausch von Mesh-Daten zwischen verschiedenen 3D-Tools.
  • Importieren von Modellen aus Vermögensbibliotheken, die in OBJ-Format verteilt werden.
  • Schnelle Überprüfung der Geometrie ohne komplexe Szenahergieraktionen.

STL: Stereolithographie

STL ist das Standardformat für 3D-Druck. Es stellt Rohgeometrie ohne Materialien, Farben oder Szenahergierik dar. STl Dateien kommen in zwei Varianten: ASCII (menschlich gelesen) und binäre (kompakte).

Laden von STL Dateien

// Simple load
Scene scene = Scene.fromFile("part.stl");

// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);

Sparen als STL

Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");

Um die Produktion zu kontrollieren, verwenden Sie StlSaveOptions:

StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);

STL Beachtung

  • STL speichert nur Dreieckgeometrie. Materialien, Texturen und Szenahergierik werden nicht unterstützt und auf den Export abgelehnt.
  • STL Export wird nicht Binäre STL schreibt nur die ersten 3 Vertikale jedes Polygon Gesicht; Quad und n-gon Gesichts sind still geschmückt. ASCII STl schreibe alle vertikalen Indizes pro Gericht, produziert verschwundenen Ausgang für nicht-triangle Gezichts. immer verwenden Sie vor-trigulierte Messen (all-Triangles Gedichts) beim Exportieren zu ST L.
  • Binäre STL ist wesentlich kleiner als ASCII STl für große Modelle.
  • STL ist das Format der Wahl, wenn das Ziel ein 3D-Printer oder Schleimer Software ist.

GLTF: Übertragungsformat

GlTF ist ein modernes Format, das für die effiziente Übertragung und Ladung von 3D-Inhalt, insbesondere im Web und in Echtzeitanwendungen entwickelt wird. es unterstützt PBR-Materialien, Szenenhierarchien und Animationen.

Laden von GlTF Dateien

Scene scene = Scene.fromFile("scene.gltf");

// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);

Sparen als GlTF

Die Basis-Save verwendet die Dateierweiterung, um das Format zu bestimmen:

scene.save("output.gltf");

Für detaillierte Kontrolle, Nutzung GltfSaveOptions:

GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);

scene.save("output.gltf", opts);

GltfSaveOptions Details

MethodeZweck
setFlipCoordinateSystem(boolean)Fliessen Sie die Koordinatsystem-Axe während des Exports. nützlich bei der Konvertierung von Y-up zu Z-Up oder umgekehrt.
setPrettyPrint(boolean)Formatieren Sie die JSON-Ausgabe mit Indentation für Lesbarkeit. false für kleinere Dateigröße in der Produktion.

GlTF Gebrauchsfälle

  • Webbasierte 3D-Speicher (three.js, Babylon.js).
  • Real-time Anwendungen und Spielautomaten.
  • Bewahren von PBR-Materialdefinitionen über Werkzeuge.

FBX: Filmbox (Import nur)

FBX ist ein proprietäres Format von Autodesk, das in der Game Development und Digital Content Creation weit verbreitet wird. Aspose.3D FOSS für Java unterstützt FBx für Einwanderung nur - Export auf FBX ist nicht verfügbar.

Binär FBX nur. Der FBX-Importer liest nur binäre FBx-Dateien. Durchgang einer ASCII FB X-File werft ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). Node-Hierarchie und Materialabbau von FBX sind nicht vollständig verifiziert; komplexe FB X Szenen können nicht komplett geladen werden. Animationen und Ringen werden nicht implementiert.

FBX Dateien herunterladen

Scene scene = Scene.fromFile("character.fbx");

// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);

Konvertieren FBX in andere Formate

Da FBX-Export nicht unterstützt wird, konvertieren Sie importierte FBx-Szenen in glTF, GLB, OBJ oder STL:

Scene scene = Scene.fromFile("character.fbx");

// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);

FBX Benutzung von Fällen

  • Importieren statischer Mesh-Vermögenswerte aus Autodesk Tools (Maya, 3ds Max) und Konvertierung in andere Formate.
  • Laden binäre FBX Geometrie und re-exportieren auf glTF/GLB, OBJ oder STL.

Batch Konvertierung

Ein gemeinsamer Workflow ist die Konvertierung eines gesamten Datei-Dokuments aus einem Format in ein anderes. Hier ist ein Muster für die Batchkonvertierung:

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");
        }
    }
}

Das belasten jeden .obj Dateien in einem Katalog, konvertiert jeder zu glTF mit gut gedruckten Ausgabe und speichert die Ergebnisse. Sie können dieses Muster für jede Quell-und Zielformatskombination anpassen.

Cross-Format Conversion Referenz

Die folgende Tabelle zeigt, was zu erwarten ist, wenn Sie zwischen den Formaten konvertieren.

VonzuGeometrieMaterialienHierarchieNotizen
OBJSTLbewahrtVerloreneN/ASTL hat keine materielle Unterstützung
OBJGTT / GLBbewahrtUmwandelt in PBRFlatMTL-Materialien, die möglichst geführt werden
STLOBJbewahrtKeinerN/AKeine Materialien in der Quelle
STLGTT / GLBbewahrtDefaultFlatStandardmaterial angewandt
GltfOBJbewahrtVereinfachungFlattenPBR zum Grundmaterial
GltfSTLbewahrtVerloreneFlattenGeometrie nur
FBXOBJbewahrtVereinfachungFlattenMaterialverstärkung
FBXSTLbewahrtVerloreneFlattenGeometrie nur
FBXGTT / GLBbewahrtUmwandelt in PBRbewahrtGute Treue

Allgemeine Konvertierungsrichtlinien

  • Geometrie ist in der Regel über Formatepaare erhalten, mit einer wichtigen Ausnahme: wenn es zu STL exportiert wird, müssen Messen vollständig aus Dreieck-Gesicht bestehen. binäre ST L silent trunkiert Quad und n-gon Gesicht auf ihre ersten 3 Vertikeln; ASCII STl produziert verformte Ausgabe für nicht dreiecker Gänse.
  • Materialien Überleben Sie am besten zwischen glTF und FBX importierten Szenen, die Materialdaten enthalten. Umwandlung in STL immer Materialien drückt. Konvertieren in OBJ vereinfacht Materiale zum grundlegenden MTL-Modell.
  • Die Hierarchie der Szene ist zwischen glTF-Formatdateien beibehalten. OBJ und STL produzieren flach Strukturen. FBX Hierarchie und Materialabbau sind in dieser Version nicht vollständig verifiziert.

Das alles zusammen setzen

Hier ein vollständiges Beispiel, das eine OBJ-Datei laden, seine Knoten überprüft und sowohl GlTF als auch GLB exportiert:

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.");
    }
}

Zusammenfassung

Aspose.3D FOSS für Java gibt Ihnen eine konsistente API über mehrere Formate.:

  • OBJ - einfache Messe mit Grundmaterialien austauschen.
  • STL - Geometrie-einfach Format für 3D Druckpipe.
  • GTT / GLB - moderner PBR-fähiger Format für Web und Echtzeit. GltfSaveOptions mit setContentType(FileContentType.BINARY) für die GLB-Produktion.
  • FBX - nur importiert; reiches Format für die Ladung von Vermögenswerten aus Spielautomaten und DCC-Tools.

Verwenden Sie Format-spezifische Ladung und speichern Optionsklassen (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionswenn Sie eine feine Kontrolle über den Einfuhr- oder Ausfugeprocess benötigen.

Für weitere Details besuchen Sie die Aspose.3D Dokumentation oder die Quelle auf GitHub.