Aspose.3D FOSS pre Java podporuje päť formátov súboru 3D: OBJ, STL, Gltf, GLB,a , a FBX Tento príspevok je praktický, formát-by-formát sprievodca ukazuje, ako sa dať a uložiť každý z nich, aké možnosti sú k dispozícii a ako premeniť medzi nimi.

Všetky príklady používajú com.aspose.threed.* balíček :

import com.aspose.threed.*;

Maven závislosť:

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

Formát krajiny

Pred ponorom, tu je rýchly prehľad štyroch podporovaných formátov a ich typické prípady použitia.

formátovanierozšíreniedovozVývozMateriálna podporahierarchia scény
OBJ.objÁnoÁnoZákladné (MTL súbory)Plná
STL.stlÁnoÁnoŽiadnePlná
GTTF 2.0.gltfÁnoÁnoPBRplnohodnotný
GLB.glbÁnoÁnoPBRplnohodnotný
FBX.fbxÁnoNo niebohatýplnohodnotný

OBJ, STL, glTF a GLB podporujú import aj export. FBX je podporovaný pre import iba.GLB (binárna glTF) sa vyrába prostredníctvom GltfSaveOptions s setContentType(FileContentType.BINARY).

OBJ: Wavefront objekty

OBJ je jedným z najširšie podporovaných formátov 3D mesh. Uloží geometrie ako plochý text, s voľným .mtl Spolupracovacie súbory pre materiály.

Objektívny súbor OBJ

Najjednoduchším prístupom je prejsť súborovou trasou priamo:

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

Pre väčšiu kontrolu, používanie ObjLoadOptions:

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

Keď súbor OBJ odkazuje na súbory MTL (prostredníctvom mtllib smernica), knižnica sa bude pokúsiť automaticky nahrať definície materiálu z nej. súbor MTL by mal byť v rovnakom katalógu ako OBJ súbory alebo na ceste stanovené v smernici.

Ušetriť ako OBJ

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

OBJ používa prípady

  • Výmena dát medzi rôznymi 3D nástrojmi.
  • Importovať modely z knižníc aktív, ktoré distribuujú v OBJ formáte.
  • Rýchla inšpekcia geometry bez komplexných hierarchie scény.

Štítok: stereolithography

STL je štandardný formát pre 3D tlač. Predstavuje surovú triangulovanú geometriu bez materiálov, farieb alebo hierarchie scény. STl súbory sa vyskytujú v dvoch variantách: ASCII (človek čitateľný) a binárne (kompaktné).

Stiahnuť STL súbory

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

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

Ušetriť ako STL

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

Na kontrolu výstupu, používať StlSaveOptions:

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

STL prihliadky

  • STL skladuje iba trojuholníkovú geometriu. materiály, textúry a hierarchia scény nie sú podporované a vyhodené na export.
  • Vývoz STL sa Nie je binárne STL píše iba prvé 3 vertikály každej polygónovej tváre; štvorcové a n-gonové tváry sú ticho trunčované. ASCII ST L píši všetky vertické indexy na tvári, produkuje zlomový výstup pre ne-triangulárnych tvárov. Vždy používať predtriungulované mesie (všetko triangularné tváře) pri exportovaní do STl.
  • Binárne STL je výrazne menší ako ASCII STl pre veľké modely.
  • STL je formát voľby, keď cieľom je 3D tlačiareň alebo softvér na zliatiny.

GLTF: formát pre prenosové programy

glTF je moderný formát určený pre efektívnu prenos a nahrávanie 3D obsahu, najmä na webe a v aplikáciách v reálnom čase. podporuje PBR materiály, hierarchie scény a animácie.

Stiahnuť GLTF súbory

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

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

Ušetriť ako glTF

Základné úložisko používa rozšírenie súboru na určenie formátu:

scene.save("output.gltf");

Pre podrobnú kontrolu, použitie GltfSaveOptions:

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

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

GltfSaveOptions Podrobnosti

MetódaÚčel
setFlipCoordinateSystem(boolean)Flip koordinátový systém axis počas exportu. užitočné pri konverzii z Y-up na Z-Up alebo naopak.
setPrettyPrint(boolean)Formátovanie výstupu JSON s indentáciou pre čitateľnosť. false pre menšie veľkosti súborov v produkcii.

GLTF používa prípady

  • Webové 3D prehliadače (three.js, Babylon.js).
  • Reálne aplikácie a herné motory.
  • Udržiavanie definícií materiálu PBR cez nástroje.

FBX: Filmbox (samozrejme iba import)

FBX je vlastný formát spoločnosti Autodesk, ktorý sa široko používa v oblasti vývoja hier a digitálneho obsahu. Aspose.3D FOSS for Java podporuje FBx pre import iba - export na FBX nie je k dispozícii.

Binárne FBX iba. FBX importér číta len binárne súbory FB X. Prechod ASCII FB x súbor sa hodí ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). hierarchia uzlín a materiálové extrakcie z FBX nie sú plne overené; komplexné scény FB X nemôžu byť úplne naložené.

Stiahnuť fbx súbory

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

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

Konverzia FBX do iných formátov

Keďže FBX export nie je podporovaný, konvertujte dovezené FBx scény na glTF, GLB, OBJ alebo STL:

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

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

FBX používa prípady

  • Import statických mäsových aktív z nástrojov Autodesk (Maya, 3ds Max) a konverzia do iných formátov.
  • Naložiť binárnu geometria FBX a re-exportovať na glTF/GLB, OBJ alebo STL.

Batch konverzia

Spoločný pracovný tok je konverzia celého katalógu súborov z jedného formátu do druhého. tu je vzor pre konverziu 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");
        }
    }
}

To sa zaťažuje každým .obj súbory v katalógu, konvertovať každý na glTF s výstupom dobre vytlačený a ušetriť výsledky. Môžete prispôsobiť tento vzor pre akúkoľvek kombináciu zdrojového a cieľového formátu.

Cross-formát konverzie referencie

Nasledujúca tabuľka zobrazuje, čo očakávať pri konverzii medzi formátmi.

odnaGeometriaMateriályhierarchiapoznámky
OBJSTLzachovanéstratenýN/ASTL nemá žiadnu materiálnu podporu
OBJGTTF / GLBzachovanéPremenené na PBRPlnáMTL materiály mapované kde je to možné
STLOBJzachovanéŽiadneN/AŽiadne materiály v zdroji
STLGTTF / GLBzachovanéPodvodnéPlnáVyužitý materiál
GltfOBJzachovanéZjednodušenéPlnivoPBR na základný materiál
GltfSTLzachovanéstratenýPlnivoGeometria iba
FBXOBJzachovanéZjednodušenéPlnivoMateriálna zjednodušenie
FBXSTLzachovanéstratenýPlnivoGeometria iba
FBXGTTF / GLBzachovanéPremenené na PBRzachovanéDobrá vernosť

Všeobecné smernice pre konverziu

  • Geometria je všeobecne zachované cez formátové páry, s jedným dôležitým výnimkou: pri exporte do STL musí byť mäsy úplne pozostávajúce z trojstranných tvárí. binárny ST L ticho trunkaté štvorcové a n-gon tváre na svoje prvé 3 vrstiev; ASCII STl produkuje malformovaný výsledok pre non-triangle tvárov.
  • Materiály prežiť najlepšie medzi glTF a FBX-importované scény, ktoré obsahujú materiálne údaje. Konvertovanie na STL vždy kvapky materiálov. Converting na OBJ zjednodušuje materiály do základného modelu MTL.
  • hierarchia scény je zachovaná medzi súbormi formátu glTF. OBJ a STL produkujú ploché štruktúry. hierarchia FBX a materiálové extrakcie nie sú v tejto verzii plne overené.

Postavte to všetko spoločne

Tu je kompletný príklad, ktorý nahráva súbor OBJ, kontroluje jeho uzly a vyváža sa na glTF a 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.");
    }
}

Zhrnutie

Aspose.3D FOSS pre Java vám dáva konzistentnú API v viacerých formátoch.:

  • OBJ - jednoduchá výmena mäsov s základnými materiálmi.
  • STL - geometrický formát pre 3D tlačovú potrubie.
  • GST / GLB - moderný formát PBR-vhodný pre web a reálne použitie. GltfSaveOptions s setContentType(FileContentType.BINARY) Výroba GLB.
  • FBX - import iba; bohatý formát pre nabíjanie aktív z herných motorov a nástrojov DCC.

Použite formát špecifický zaťaženie a uložiť možnosti triedy (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionskeď potrebujete jemnú kontrolu nad dovozom alebo vývozným procesom.

Pre viac informácií navštívte Aspose.3D dokumentácia alebo prejdite na zdroj GitHub.