Aspose.3D FOSS for Java támogatja az öt 3D fájlformátumot: OBJ, STL, GTTF, GLB,és FBX Ez a bejegyzés egy praktikus, formátum-formátum útmutató, amely bemutatja, hogyan kell feltölteni és menteni mindegyikét, milyen lehetőségek állnak rendelkezésre, és hogyan lehet átváltani közöttük.

Minden példát használunk a com.aspose.threed.* A csomag:

import com.aspose.threed.*;

A Maven függőség:

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

Fénykép formázása

Mielőtt elaludnánk, itt egy gyors áttekintés a négy támogatott formátumról és azok tipikus használati eseteiről.

formátumkiterjesztésImportálvaexportAnyagi támogatásSzínház hierarchia
OBJ.objIgenIgenAlapfájlok (MTL fájl)Flat
STL.stlIgenIgenNincsFlat
GTTF 2.0.gltfIgenIgenPBRTeljes
GLB.glbIgenIgenPBRTeljes
FBX.fbxIgenNem nemgazdagokTeljes

Az OBJ, a STL, az GLTF és a GLB támogatja mind az importot, mind a exportot. Csak importálva.A GLB (bináris glTF) a gyártáson keresztül történik. GltfSaveOptions A setContentType(FileContentType.BINARY).

OBJ: A hullámfront objektum

Az OBJ az egyik legszélesebb körben támogatott 3D mesh formátum. A geometria egyenes szövegként tárolódik, opcionális .mtl társaságok a dokumentumokat.

OBJ fájlok feltöltése

A legegyszerűbb módszer az, hogy közvetlenül át a fájlút:

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

Több ellenőrzés, használata ObjLoadOptions:

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

Ha az OBJ fájl egy MTL füzetet mutat (a mtllib a könyvtár automatikusan megpróbálja feltölteni az anyag definícióit.A MTL fájlnak ugyanazon a címkében kell lennie, mint az OBJ fázis vagy az irányelvben meghatározott útvonalon.

Megtakarítások OBJ

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

Az OBJ használja az esetek

  • A mesh adatok cseréje a különböző 3D eszközök között.
  • Az eszközökből származó modellek importálása az OBJ formátumban forgalmazott könyvtárakból.
  • A geometria gyors ellenőrzése komplex jeleneti hierarchia nélkül.

STL: Stereolithográfia

STL a 3D nyomtatás szabványos formátumát képviseli, amely nyers háromszögű geometria anyagok, színek vagy jelenet hierarchiák nélkül. STl fájlok két változatban jelennek meg: ASCII (ember-olvasható) és bináris (kompakt).

STL fájlok letöltése

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

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

Megtakarítás STL

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

A termelés ellenőrzése, használata StlSaveOptions:

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

STL vélemények

  • A STL csak háromszög geometria tárol. anyagok, textúrák és jelenet hierarchiája nem támogatott, és exportra kerülnek.
  • Az STL exportja Nem A bináris STL csak az első 3 vertikumot írja fel minden poligon arcában; a négy és n-gon arcok csendesen törnek. Az ASCII ST L írásban minden vertekes indexet arconként, ami rossz formátú kimenetelű nem háromszög arcokra. Mindig használjon előtömeges mesét (mindenháromszöge arc) exportálva az STl-re.
  • A bináris STL jelentősen kisebb, mint az ASCII STl a nagy modellek esetében.
  • STL a választás formátum, amikor a cél egy 3D nyomtató vagy szeletelő szoftver.

GLTF: transzmissziós formátum

A glTF egy modern formátum, amely a 3D tartalom hatékony továbbítására és feltöltésére szolgál, különösen az interneten és valós idejű alkalmazásokban. támogatja a PBR anyagokat, jeleneti hierarchiákat és animációkat.

Fájlok letöltése GLTF

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

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

Megtakarítás mint glTF

Az alapmegtakarítás a fájl kiterjesztését használja, hogy meghatározzák a formátumot:

scene.save("output.gltf");

Részletes ellenőrzés, használata GltfSaveOptions:

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

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

GltfSaveOptions részletek

módszerekcélt
setFlipCoordinateSystem(boolean)A koordináták rendszer axis exportálása során. hasznos az Y-up és Z-Up átalakításakor vagy fordítva.
setPrettyPrint(boolean)A JSON kimenetel formázása az olvashatóság indentációjával. false A gyártásban kisebb méretű fájl.

GTTF használati esetek

  • Webes 3D nézők (three.js, Babylon.js).
  • Valós idejű alkalmazások és játékmotorok.
  • A PBR anyag definícióinak megőrzése az eszközökön keresztül.

FBX: Filmbox (csak import)

Az FBX az Autodesk tulajdonos formátum, amelyet széles körben használnak a játékfejlesztés és a digitális tartalomteremtés terén. Aspose.3D FOSS for Java támogatja az FBx-t a Csak importálva - az export a FBX nem elérhető.

Bináris FBX csak. Az FBX importőr csak bináris FBx fájlokat olvashat. az ASCII FB X füzet átadása ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). A csomópontok hierarchiája és az anyag kivonata a FBX-ről nem teljesen ellenőrizhető; összetett FB X jelenetek nem töltenek teljes mértékben.

FBX fájlok letöltése

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

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

FBX más formátumokba történő átalakítása

Mivel az FBX export nem támogatott, a behozott FBx jelenetek átalakítása glTF, GLB, OBJ vagy STL:

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

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

FBX használata ügyek

  • Statikus mész eszközök importálása az Autodesk eszközöktől (Maya, 3ds Max) és más formátumokba történő konvertálás.
  • Bővítse a bináris FBX geometria és újra exportálva glTF/GLB, OBJ vagy STL.

Batch átalakítás

Egy közös munkafolyamat az, hogy egy teljes fájl-direktorát egyik formátumból a másikba alakít. Itt van egy mintája a batch konverzióhoz:

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

Ez mindenkinek terheli a .obj fájl egy címkében, konvertálja mindegyik a glTF-re gyönyörű nyomtatott kimenetelű, és megmentette az eredményeket.

Cross-Format konverziós referenciák

Az alábbi táblázat megmutatja, mit kell várni a formátumok közötti konverzió során.

AAGeometriaanyagokHierarchiajegyzetek
OBJSTLmegőrzöttElveszettN/AA STL-nek nincs anyagi támogatása
OBJGTT / GLBmegőrzöttPBR-re átalakítottákFlatMTL anyagok mappázva, ahol lehetséges
STLOBJmegőrzöttNincsN/ANincs forrásban anyag
STLGTT / GLBmegőrzöttDefaultFlatAlkalmazott anyagok
GTTFOBJmegőrzöttEgyszerűsítettFlattenedPBR alapanyagokhoz
GTTFSTLmegőrzöttElveszettFlattenedCsak a geometria
FBXOBJmegőrzöttEgyszerűsítettFlattenedAnyagszelídítés
FBXSTLmegőrzöttElveszettFlattenedCsak a geometria
FBXGTT / GLBmegőrzöttPBR-re átalakítottákmegőrzöttJó hűség

Általános konverziós iránymutatások

  • Geometria Általában megőrzött formátum párok, egy fontos kivétel: amikor exportál STL, a mesheket kell állni teljesen háromszög arc. Bináris ST L csendben truncates négy és n-gon arcokat az első 3 vertikum; ASCII STl termel rosszul alakult kimenetel nem háromszoros arcok.
  • anyagok Legjobb túlélni a glTF és FBX importált jelenetek között, amelyek anyagadatokat tartalmaznak. STL-re való átalakítás mindig az anyagot dobja. OBJ-ra történő áthelyezés egyszerűsíti az alapvető MTL modellt.
  • Színházi hierarchia megőrzött között glTF formátumú fájlok. OBJ és STL termel egyenes struktúrák. FBX hierarchia és anyag kivonata nem teljesen ellenőrizte ebben a verzióban.

Összefogjuk az összeset

Íme egy teljes példa, amely feltölti az OBJ fájlt, ellenőrzi a csomópontjait és exportálja mind a glTF-t, mind pedig a GLB-et:

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

Összefoglaló

Aspose.3D FOSS for Java egy következetes API-t ad több formátumon keresztül.:

  • OBJ - egyszerű mező cseréje alapanyagokkal.
  • STL - geometriai formátum csak 3D nyomtatási csövekhez.
  • GLT / GLB - modern PBR-kapcsolható formátum webes és valós idejű használathoz. használja GltfSaveOptions A setContentType(FileContentType.BINARY) A GLB termeléséhez.
  • FBX - csak import; gazdag formátum a játékmotorokból és DCC eszközökből származó tételekhez.

A programok és a programokat használja (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionsha a behozatali vagy kiviteli folyamatot finom ellenőrzésnek kell lennie.

További részletekért látogasson el a 3D dokumentáció vagy a forráson keresztül keresse meg GitHub.