Aspose.3D FOSS voor Java ondersteunt vijf 3D bestandsformaat: OBJ, STL, GTTF, GLB, en FBX Dit bericht is een praktische, format-by-format gids die laat zien hoe je elk op te laden en te beveiligen, welke opties beschikbaar zijn, en hoe om te converteren tussen hen.

Alle voorbeelden gebruiken de com.aspose.threed.* Het pakket:

import com.aspose.threed.*;

Maven afhankelijkheid:

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

Format landschap

Voordat u in de duik gaat, is hier een snelle overzicht van de vier ondersteunde formaten en hun typische gebruiksaandoeningen.

FormatUitbreidingInvoerExportenMateriële ondersteuningHierarchie scène
OBJ.objJa jaJa jaBasic (MTL bestanden)Flat
STL.stlJa jaJa jaGeenFlat
GTTF 2.0.gltfJa jaJa jaPBRVolledige
GLB.glbJa jaJa jaPBRVolledige
FBX.fbxJa janietRijkVolledige

OBJ, STL, glTF en GLB ondersteunen zowel import als export. FBX wordt ondersteund voor Alleen invoer.GLB (binaire glTF) wordt geproduceerd via GltfSaveOptions met setContentType(FileContentType.BINARY).

OBJ: Wavefront object

OBJ is een van de meest ondersteunde 3D mesh formaten. het opslaat geometrie als vlak tekst, met een optionele .mtl Companie bestanden voor materialen.

Het opladen van OBJ-bestanden

De eenvoudigste benadering is om de bestandpad direct te passeren:

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

Voor meer controle, gebruik ObjLoadOptions:

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

Wanneer het OBJ-bestand verwijst naar een MTL- bestand (via a) mtllib de richtlijn), zal de bibliotheek proberen om materiële definities van het automatisch te laden. de MTL-bestand moet in dezelfde directory als de OBJ- bestand of op de weg die is aangegeven in de Richtlijnen.

Bespaar als OBJ

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

OBJ gebruik van gevallen

  • Het uitwisselen van mesh-gegevens tussen verschillende 3D-tools.
  • Importeer modellen uit activabibliotheken die in OBJ-formaat worden verspreid.
  • Snelle inspectie van geometrie zonder complexe scène hiërarchieën.

STL: Stereolithografie

STL is het standaardformaat voor 3D-printing. Het vertegenwoordigt grondige triangulaire geometrie zonder materialen, kleuren of scène hiërarchie. STl bestanden komen in twee varianten: ASCII (menselijk leesbaar) en binaire (compact).

Stel STL bestanden op

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

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

Besparen als STL

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

Om de productie te controleren, gebruik StlSaveOptions:

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

STL overwegingen

  • STL opslaat alleen triangulaire geometrie. materialen, textuur en scène hiërarchie worden niet ondersteund en worden naar de export gegooid.
  • STL export is niet Binaire STL schrijft alleen de eerste 3 vertices van elk polygon gezicht; quad en n-gon gezichten zijn stil gesneden. ASCII ST L schrijf alle verticaal index per gezichts, het produceren van een misvormde uitkomst voor niet-triangle gezieten. Altijd gebruik vooraf triangulate meshes (alle-triangele gezichte) bij export naar STl.
  • Binaire STL is aanzienlijk kleiner dan ASCII STl voor grote modellen.
  • STL is het format van keuze wanneer de doelstelling een 3D printer of slicer software is.

GLTF: het transmissieformaat van de GL

GlTF is een modern format ontworpen voor efficiënte overdracht en opladen van 3D-inhoud, met name op het web en in realtime toepassingen.Het ondersteunt PBR materialen, scène hiërarchieën en animaties.

Gletten van de gltf-bestanden

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

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

Sparen als gltf

De basisspeiling gebruikt de bestanduitbreiding om het formaat te bepalen:

scene.save("output.gltf");

Voor gedetailleerde controle, gebruik GltfSaveOptions:

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

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

GltfSaveOptions Details

MethodeDoel
setFlipCoordinateSystem(boolean)Flip de coördinatie-systeem axiet tijdens export. handig bij het omzetten van Y-up naar Z-Up of vice versa.
setPrettyPrint(boolean)Formateren van de JSON-uitgang met indentatie voor leesbaarheid. false Voor een kleinere bestandgrootte in productie.

GLTF gebruik van cases

  • Webgebaseerde 3D-speakers (three.js, Babylon.js).
  • Realtime applicaties en game-motoren.
  • Behoud van de definities van PBR materiaal over tools.

FBX: Filmbox (alleen invoer)

FBX is een eigen format van Autodesk dat veel wordt gebruikt in game-ontwikkeling en digitale content creatie. Aspose.3D FOSS voor Java ondersteunt FBx voor Alleen invoer - de export naar FBX is niet beschikbaar.

Binaire FBX alleen. De FBX importeur leest alleen binaire FBx bestanden. doorgaan een ASCII FB X bestand gooien ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). de nodehiërarchie en materiaaluitvinding van FBX zijn niet volledig gecontroleerd; complexe FB X scènes kunnen niet helemaal worden geladen.

FBX bestanden downloaden

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

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

Converteren van FBX naar andere formaten

Aangezien FBX-export niet wordt ondersteund, converteren de ingevoerde FBx scènes naar glTF, GLB, OBJ of STL:

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

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

FBX gebruik van cases

  • Import statische mesh-activa uit Autodesk tools (Maya, 3ds Max) en converteren naar andere formaten.
  • Blader binaire FBX geometrie en her-exporteert naar glTF/GLB, OBJ of STL.

Batch Conversie

Een gemeenschappelijk werkstrom is het converteren van een hele bestanddirectorie uit één format naar een andere. hier is een patroon voor de conversie van de set:

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

Dit loopt elke .obj bestand in een directory, converteert elk naar glTF met mooi gedrukte uitkomst, en slaat de resultaten. u kunt deze patroon aanpassen voor elke bron- en doelformaat combinatie.

Cross-Format Conversie Referentie

De volgende tabel toont wat te verwachten is bij het converteren tussen formaten.

vanToenGeometrieMaterialenHierarchienotities
OBJSTLbewaardVerlorenN/ASTL heeft geen materiële ondersteuning
OBJGTTF / GLBbewaardOmgezet in PBRFlatMTL-materiaal waar mogelijk geïntroduceerd
STLOBJbewaardGeenN/AGeen materiaal in de bron
STLGTTF / GLBbewaardDefaultFlatDe standaard materiaal toegepast
GTTFOBJbewaardVereenvoudigdVloerbaarPBR naar basismaterialen
GTTFSTLbewaardVerlorenVloerbaarGeometrie alleen
FBXOBJbewaardVereenvoudigdVloerbaarMateriële vereenvoudiging
FBXSTLbewaardVerlorenVloerbaarGeometrie alleen
FBXGTTF / GLBbewaardOmgezet in PBRbewaardGoede trouw

Algemene Conversie Guidelines

  • Geometrie is over het algemeen bewaard in de vorm van koppels, met één belangrijke uitzondering: bij export naar STL, moet mesjes geheel bestaan uit driehoekige gezicht. Binaire ST L stil trunkt quad en n-gon gezichten tot hun eerste 3 vertices; ASCII STl produceert een malformed output voor niet-triangele gezichts.
  • Materialen overleven best tussen glTF en FBX-importeerde scènes die materiële gegevens bevatten. Converting naar STL droog altijd materiaal. Konverteren naar OBJ vereenvoudigt de materialen tot het basismodel van MTL.
  • Hierarchie scène bewaard tussen de glTF-formaat bestanden. OBJ en STL produceren vlakke structuren. FBX hiërarchie en materiaal uitvinding zijn niet volledig gecontroleerd in deze versie.

Het allemaal samen zetten

Hier is een complete voorbeeld dat een OBJ-bestand opneemt, de noden inspecteert en naar zowel glTF als GLB exporteert:

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

Samenvatting

Aspose.3D FOSS voor Java geeft u een consistente API over meerdere formaten.:

  • OBJ - eenvoudige mesh uitwisseling met basismateriaal.
  • STL - geometrisch alleen format voor 3D-drukpubbels.
  • GST / GLB - moderne PBR-capable format voor web en realtime gebruik. GltfSaveOptions met setContentType(FileContentType.BINARY) voor de GLB-uitgaven.
  • FBX - alleen invoer; rijke formaten voor het laden van activa uit gamemotoren en DCC-tools.

Gebruik een opslag en bewaar opties (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionswanneer u een goedgekeurde controle over de invoer- of exportproces nodig heeft.

Voor meer details, bezoek de Aspose.3D documentatie of de bron op GitHub.