Aspose.3D FOSS for Java støtter fem 3D‑filformater: OBJ, STL, glTF, GLB, og FBX (kun import).

Alle eksempler bruker com.aspose.threed.* pakke:

import com.aspose.threed.*;

Maven‑avhengighet:

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

Formatlandskap

Før du dykker ned, her er en rask oversikt over de fire støttede formatene og deres typiske bruksområder.

FormatFiltypeImportEksportMaterialstøtteScenhierarki
OBJ.objJaJaGrunnleggende (MTL-filer)Flat
STL.stlJaJaIngenFlat
glTF 2.0.gltfJaJaPBRFull
GLB.glbJaJaPBRFull
FBX.fbxJaNeiRikFull

OBJ, STL, glTF og GLB støtter både import og eksport. FBX støttes for kun import. GLB (binær glTF) produseres via GltfSaveOptions med setContentType(FileContentType.BINARY).

OBJ: Wavefront-objekt

OBJ er et av de mest støttede 3D-meshformatene. Det lagrer geometri som ren tekst, med en valgfri .mtl tilhørende fil for materialer.

Laste inn OBJ-filer

Den enkleste tilnærmingen er å sende filstien 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), vil biblioteket forsøke å laste inn materialdefinisjoner fra den automatisk. MTL-filen bør være i samme katalog som OBJ-filen eller på banen som er angitt i direktivet.

Lagrer som OBJ

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

OBJ-bruksområder

  • Utveksling av mesh-data mellom ulike 3D-verktøy.
  • Importere modeller fra ressursbiblioteker som distribuerer i OBJ-format.
  • Rask inspeksjon av geometri uten komplekse scenehierarkier.

STL: Stereolitografi

STL er standardformatet for 3D-utskrift. Det representerer rå triangulert geometri uten materialer, farger eller scenehierarki. STL-filer finnes i to varianter: ASCII (lesbar for mennesker) og binær (kompakt).

Laste STL-filer

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

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

Lagrer som STL

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

For å kontrollere utdataene, bruk StlSaveOptions:

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

STL‑betraktninger

  • STL‑filer inneholder kun triangulert geometri. Materialer, teksturer og scenehierarki går tapt under eksport.
  • Binær STL er betydelig mindre enn ASCII STL for store modeller.
  • STL er foretrukket format når målet er en 3D‑printer 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 sanntidsapplikasjoner. Det støtter PBR‑materialer, scenehierarkier og animasjoner.

Laster glTF-filer

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

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

Lagrer som glTF

Den grunnleggende lagringen bruker filendelsen 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);

Detaljer om GltfSaveOptions

MetodeFormål
setFlipCoordinateSystem(boolean)Vend koordinatsystemaksen under eksport. Nyttig når du konverterer fra Y-opp til Z-opp eller omvendt.
setPrettyPrint(boolean)Formater utdata-JSON med innrykk for lesbarhet. Sett til false for mindre filstørrelse i produksjon.

glTF-bruksområder

  • Nettbaserte 3D-visere (three.js, Babylon.js).
  • Sanntidsapplikasjoner og spillmotorer.
  • Bevare PBR-materialdefinisjoner på tvers av verktøy.

FBX: Filmbox (Kun import)

FBX er et proprietært format fra Autodesk som er mye brukt i spillutvikling og digital innholdsproduksjon. Det støtter rike scenehierarkier, materialer og animasjoner. Aspose.3D FOSS for Java støtter FBX for kun import – eksport til FBX er ikke tilgjengelig.

Laste inn FBX-filer

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

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

Konvertere FBX til andre formater

Siden FBX-eksport ikke støttes, konverter importerte FBX-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-brukstilfeller

  • Importere ressurser fra Autodesk-verktøy (Maya, 3ds Max) og konvertere til andre formater.
  • Laster inn riggede karakterer og animerte scener for re‑eksport til glTF/GLB.

Batch-konvertering

En vanlig arbeidsflyt er å konvertere en hel katalog med 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 laster hver .obj fil i en katalog, konverterer hver til glTF med pent formatert output, og lagrer resultatene. Du kan tilpasse dette mønsteret for enhver kilde- og målformatkombinasjon.

Referanse for kryssformatkonvertering

Tabellen nedenfor viser hva du kan forvente når du konverterer mellom formater.

FraTilGeometriMaterialerHierarkiNotater
OBJSTLBevartTaptN/ASTL har ingen materialstøtte
OBJglTF/GLBBevartKonvertert til PBRFlatMTL-materialer kartlagt der det er mulig
STLOBJBevartIngenN/AIngen materialer i kilden
STLglTF/GLBBevartStandardFlatStandardmateriale brukt
glTFOBJBevartForenkletFlattPBR til grunnleggende materiale
glTFSTLBevartTaptFlatetKun geometri
FBXOBJBevartForenkletFlatetMaterialforenkling
FBXSTLBevartTaptFlatetKun geometri
FBXglTF/GLBBevartKonvertert til PBRBevartGod nøyaktighet

Generelle retningslinjer for konvertering

  • Geometri bevares alltid på tvers av alle formatpar.
  • Materialer overlever best mellom glTF og FBX, som begge støtter rike materialmodeller. Konvertering til STL fjerner alltid materialer. Konvertering til OBJ forenkler materialer til den grunnleggende MTL-modellen.
  • Scenehierarki bevares mellom glTF og FBX. OBJ og STL gir flate strukturer.

Slik setter du alt 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.");
    }
}

Oppsummering

Aspose.3D FOSS for Java gir deg et konsistent API på tvers av flere formater. Hovedpunktene:

  • OBJ – enkel mesh-utveksling med grunnleggende materialer.
  • STL – kun geometri-format for 3D‑utskrifts‑pipelines.
  • glTF / GLB – moderne PBR‑dyktig format for web og sanntidsbruk. Bruk GltfSaveOptions med setContentType(FileContentType.BINARY) for GLB-utdata.
  • FBX – kun import; rikt format for lasting av ressurser fra spillmotorer og DCC-verktøy.

Bruk formatspesifikke last‑ og lagre‑alternativklasser (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions) når du trenger finjustert kontroll over import‑ eller eksportprosessen.

For mer informasjon, besøk Aspose.3D-dokumentasjon eller bla gjennom kildekoden på GitHub.