Aspose.3D FOSS for Java støtter fem 3D-filer: OBJ, STL, Glattef, GLB,og FBX Denne artikkelen er en praktisk, format-for-format guide som viser hvordan du lader og sparer hver av dem, hvilke alternativer som er tilgjengelige, og hvordan å konvertere mellom dem.

Alle eksempler bruker com.aspose.threed.* Pakke av:

import com.aspose.threed.*;

Maven avhengighet:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-3d-foss</artifactId>
    <version>26.1.0</version>
</dependency>

Format landskap

Før du dykker inn, her er en rask oversikt over de fire støttet formatene og deres typiske brukssaker.

FormaterUtvidelseImport avEksportMaterialstøtteSkener i hierarkiet
OBJ.objJa jaJa jaBasic (MTL filer)Flat
STL.stlJa jaJa jaIngenFlat
GTTF 2.0.gltfJa jaJa jaPBRFullt
GLB.glbJa jaJa jaPBRFullt
FBX.fbxJa jaIkkeRikereFullt

OBJ, STL, glTF og GLB støtter både import og eksport. FBX er støttet for Import bare.GLB (binær glTF) er produsert via GltfSaveOptions Med setContentType(FileContentType.BINARY).

OBJ: Wavefront objektet

OBJ er en av de mest støttet 3D-mesh formatene. det lagrer geometri som flat tekst, med et valgfritt .mtl Kompanjonsfil for materialer.

Last ned OBJ filer

Den enkleste tilnærmingen er å passere filveien direkte:

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

For mer kontroll, bruk ObjLoadOptions:

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

Når OBJ-filen refererer til en MTL-fil (via en mtllib direktiv), biblioteket vil prøve å laste opp materielldefinisjoner fra det automatisk. MTL-filen bør være i samme katalog som OBJ-fil eller på veien angitt i direktiveret.

Sparer som OBJ

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

OBJ bruker tilfeller

  • Utveksling av mesh data mellom forskjellige 3D verktøy.
  • Importerer modeller fra eiendeler bibliotek som distribuerer i OBJ-format.
  • Rask inspeksjon av geometri uten komplekse scene hierarkier.

STL: Stereolithografi

STL er standardformat for 3D-utskrift. Det representerer rå triangulert geometri uten materialer, farger eller scenerhierarki. STl filer kommer i to varianter: ASCII (menneskelig lesbar) og binær (kompakt).

Lading av STL filer

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

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

Sparer som STL

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

For å kontrollere produksjonen, bruk StlSaveOptions:

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

STL vurderinger

  • STL lagrer bare triangulær geometri. materialer, teksturer og scenerikjerrikk støttes ikke og kastes på eksport.
  • STL eksporterer Ikke binær STL skriver bare de første 3 vertikalene av hver polygon ansikt; quad og n-gon ansikter er stille trunked. ASCII ST L skriver alle vertex indekser per ansikte, produserer forvrengte utgang for ikke triangle ansikten. Aldrig bruke pre-triangulerte meses (all-trangel ansiktet) når eksportering til STl.
  • Binær STL er betydelig mindre enn ASCII STl for store modeller.
  • STL er formaten av valg når målet er en 3D-skrivere eller slicer programvare.

GLTF: GL Transmission Format

GlTF er et moderne format designet for effektiv overføring og lasting av 3D-innhold, spesielt på nettet og i realtidsapplikasjoner. Det støtter PBR-materialer, scene hierarkier og animasjoner.

Lading av gltf filer

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

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

Sparer som gltf

Basisk lagring bruker filutvidelsen for å bestemme formatet:

scene.save("output.gltf");

For detaljert kontroll, bruk GltfSaveOptions:

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

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

GltfSaveOptions detaljer

MetodeFormål
setFlipCoordinateSystem(boolean)Flip koordinatsystemet øyes under eksport. Nyttig når konvertere fra Y-up til Z-ups eller omvendt.
setPrettyPrint(boolean)Formatere JSON-utgaven med indentasjon for lesbarhet. false For mindre filstørrelse i produksjon.

GTTF bruker tilfeller

  • Webbasert 3D-seere (three.js, Babylon.js).
  • Real-time applikasjoner og spillmotorer.
  • Oppbevaring av PBR-materiale definisjoner over verktøy.

FBX: Filmbox (Import bare)

FBX er et proprietært format av Autodesk som brukes mye i spillutvikling og digital innholdsskaping. Aspose.3D FOSS for Java støtter FBx for Import bare Eksport til FBX er ikke tilgjengelig.

Binære FBX bare. FBX importeren leser binære FB X-filer bare. passere en ASCII FB x-fil kastet ImportException("ASCII FBX format not yet supported - only binary FBX is supported").Nodehierarki og materialekstraksjon fra FBX er ikke fullt verifisert; komplekse FB X scener kan ikke lastes helt.

Last ned FBX filer

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

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

Konverter FBX til andre formater

Siden FBX eksport ikke støttes, konverter importerte FB X scener til glTF, GLB, OBJ eller STL:

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

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

FBX bruker tilfeller

  • Importering av statiske mesh-verktøy fra Autodesk verktøy (Maya, 3ds Max) og konvertering til andre formater.
  • Lasting binær FBX geometri og re-eksport til glTF/GLB, OBJ eller STL.

Batch konvertering

En vanlig arbeidsflyt er å konvertere en hel katalog av filer fra ett format til et annet. her er et mønster for batch konvertering:

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

Dette byr på alle .obj fil i en katalog, konverterer hver til glTF med ganske utskriftsutsett, og sparer resultatene. Du kan tilpasse denne mønsteret for enhver kilde- og målformat kombinasjon.

Cross-Format konverteringsreferanse

Tabellen nedenfor viser hva du kan forvente når konvertere mellom formatene.

FratilGeometriMaterialerHierarkierNoter
OBJSTLbevarettaptN/ASTL har ingen materiell støtte
OBJGF / GLBbevaretKonvertert til PBRFlatMTL-materialer kartlagt hvor mulig
STLOBJbevaretIngenN/AIngen materialer i kilden
STLGF / GLBbevaretDefaultFlatDefault materiale som brukes
GlattefOBJbevaretforenkletFlattePBR til grunnleggende materiale
GlattefSTLbevarettaptFlatteGeometri bare
FBXOBJbevaretforenkletFlatteMaterialforenkling
FBXSTLbevarettaptFlatteGeometri bare
FBXGF / GLBbevaretKonvertert til PBRbevaretGod lojalitet

Generelle konverteringsregler

  • Geometri Generelt bevares over formatpar, med et viktig unntak: når du eksporterer til STL, må meshene bestå helt av triangle ansikter. binære ST L stille trunket quad og n-gon ansikt til sine første 3 vertikaler; ASCII STl produserer forvrengt utgang for ikke-triangles ansikte.
  • Materialer overleve best mellom glTF og FBX-importerte scener som inkluderer materialdata. konvertering til STL alltid dropper materialet. Konvertering till OBJ forenkler materialene til grunnleggende MTL modell.
  • Skener i hierarkiet er bevaret mellom glTF-format filer. OBJ og STL produserer fatte strukturer . FBX hierarki og materialekstraksjon er ikke fullt verifisert i denne versjonen.

Sett det hele sammen

Her er et komplett eksempel som laster en OBJ-fil, inspiserer nodene og eksporterer til både glTF og 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.");
    }
}

Samlinger

Aspose.3D FOSS for Java gir deg en konsekvent API over flere formater.:

  • OBJ - enkel mesh utveksling med grunnleggende materialer.
  • STL - Geometri-enbart format for 3D utskriftsrør.
  • GF / GLB - moderne PBR-kapabel format for web og realtids bruk. GltfSaveOptions Med setContentType(FileContentType.BINARY) for GLB produksjon.
  • FBX - kun import; rik format for lasting av eiendeler fra spillmotorer og DCC verktøy.

Bruk format-specifik last og lagre alternativer klasser (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionsNår du trenger fingrønn kontroll over import eller eksportprosessen.

For mer detaljer, besøk The Aspose.3D dokumentasjon eller gå til kilden på GitHub.