Aspose.3D FOSS for Java atbalsta piecus 3D failu formātus: OBJ, STL, glTF, GLB, un FBX (tikai importēšana).

Visi piemēri izmanto com.aspose.threed.* pakotne:

import com.aspose.threed.*;

Maven atkarība:

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

Formātu pārskats

Pirms iedziļināšanās, šeit ir īss pārskats par četriem atbalstītajiem formātiem un to tipiskajām lietošanas situācijām.

FormātsPaplašinājumsImportētEksportētMateriālu atbalstsAinas hierarhija
OBJ.objPamata (MTL faili)Plakans
STL.stlNavPlakans
glTF 2.0.gltfPBRPilns
GLB.glbPBRPilns
FBX.fbxBagātsPilns

OBJ, STL, glTF, un GLB atbalsta gan importu, gan eksportu. FBX tiek atbalstīts priekš tikai importam. GLB (binārais glTF) tiek radīts caur GltfSaveOptions ar setContentType(FileContentType.BINARY).

OBJ: Wavefront Object

OBJ ir viens no visplašāk atbalstītajiem 3D režģa formātiem. Tas saglabā ģeometriju kā vienkāršu tekstu, ar izvēles iespēju .mtl piederošu failu materiāliem.

OBJ failu ielāde

Visvienkāršākais veids ir nodot faila ceļu tieši:

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

Lai iegūtu lielāku kontroli, izmantojiet ObjLoadOptions:

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

Kad OBJ fails atsaucas uz MTL failu (caur mtllib norādījumu), bibliotēka mēģinās automātiski ielādēt materiālu definīcijas no tā. MTL failam jābūt tajā pašā direktorijā kā OBJ failam vai ceļā, kas norādīts norādījumā.

Saglabāšana kā OBJ

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

OBJ lietošanas gadījumi

  • Tīklu datu apmaiņa starp dažādiem 3D rīkiem.
  • Modeļu importēšana no aktīvu bibliotēkām, kas izplata OBJ formātā.
  • Ātra ģeometrijas pārbaude bez sarežģītām ainas hierarhijām.

STL: Stereolitogrāfija

STL ir standarta formāts 3D drukāšanai. Tas attēlo neapstrādātu trīsstūru ģeometriju bez materiāliem, krāsām vai ainas hierarhijas. STL faili ir pieejami divās versijās: ASCII (cilvēkam lasāms) un bināri (kompakts).

STL failu ielāde

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

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

Saglabāšana kā STL

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

Lai kontrolētu izvadi, izmantojiet StlSaveOptions:

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

STL apsvērumi

  • STL faili satur tikai trīsstūra ģeometriju. Materiāli, tekstūras un ainas hierarhija tiek zaudēti eksportēšanas laikā.
  • Binārais STL ir ievērojami mazāks nekā ASCII STL lieliem modeļiem.
  • STL ir izvēlētais formāts, ja mērķis ir 3D printeris vai slicera programmatūra.

glTF: GL pārraides formāts

glTF ir mūsdienīgs formāts, kas izstrādāts, lai nodrošinātu efektīvu 3D satura pārraidi un ielādi, īpaši tīmeklī un reāllaika lietojumprogrammās. Tas atbalsta PBR materiālus, ainas hierarhijas un animācijas.

Ielādē glTF failus

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

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

Saglabā kā glTF

Pamata saglabāšana izmanto faila paplašinājumu, lai noteiktu formātu:

scene.save("output.gltf");

Lai veiktu detalizētu kontroli, izmantojiet GltfSaveOptions:

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

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

GltfSaveOptions detaļas

MetodeMērķis
setFlipCoordinateSystem(boolean)Apgriezt koordinātu sistēmas asi eksportēšanas laikā. Noderīgi, pārvēršot no Y‑augšas uz Z‑augšu vai otrādi.
setPrettyPrint(boolean)Formatējiet izvades JSON ar atkāpēm, lai uzlabotu lasāmību. Iestatiet uz false lai ražošanas vidē būtu mazāks faila izmērs.

glTF lietošanas gadījumi

  • Tīmekļa balstīti 3D skatītāji (three.js, Babylon.js).
  • Reāllaika lietojumprogrammas un spēļu dzinēji.
  • PBR materiālu definīciju saglabāšana starp rīkiem.

FBX: Filmbox (tikai importēšana)

FBX ir Autodesk īpašnieka formāts, kas plaši tiek izmantots spēļu izstrādē un digitālā satura veidošanā. Tas atbalsta bagātīgas ainas hierarhijas, materiālus un animācijas. Aspose.3D FOSS for Java supports FBX for tikai importēt – eksportēšana uz FBX nav pieejama.

FBX failu ielāde

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

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

FBX konvertēšana uz citām formātām

Tā kā FBX eksportēšana nav atbalstīta, konvertējiet importētās FBX ainas uz glTF, GLB, OBJ vai STL:

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

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

FBX lietošanas gadījumi

  • Aktīvu importēšana no Autodesk rīkiem (Maya, 3ds Max) un to konvertēšana uz citām formātām.
  • Ielādē rigotas rakstzīmes un animētas ainas, lai tās atkārtoti eksportētu uz glTF/GLB.

Masveida konvertēšana

Bieži izmantota darbplūsma ir visu failu direktoriju konvertēšana no viena formāta uz citu. Šeit ir paraugs masveida konvertēšanai:

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

Tas ielādē katru .obj fails direktorijā, pārvērš katru uz glTF ar skaisti formatētu izvadi un saglabā rezultātus. Jūs varat pielāgot šo modeli jebkurai avota un mērķa formāta kombinācijai.

Starpformātu konvertēšanas atsauce

Zemāk esošā tabula parāda, ko sagaidīt, konvertējot starp formātiem.

NoUzĢeometrijaMateriāliHierarhijaPiezīmes
OBJSTLSaglabātsZaudētsN/ASTL nav materiālu atbalsta
OBJglTF/GLBSaglabātsPārveidots uz PBRPlakansMTL materiāli kartēti, ja iespējams
STLOBJSaglabātsNavN/AAvotā nav materiālu
STLglTF/GLBSaglabātsNoklusējumaPlakansPielietots noklusējuma materiāls
glTFOBJSaglabātsVienkāršotsPlaknotsPBR uz pamata materiālu
glTFSTLSaglabātsZaudētsSaplacinātsTikai ģeometrija
FBXOBJSaglabātsVienkāršotsIzlīdzinātsMateriāla vienkāršošana
FBXSTLSaglabātsZaudētsPlakotsĢeometrija tikai
FBXglTF/GLBSaglabātsPārveidots uz PBRSaglabātsLaba precizitāte

Vispārīgi konvertēšanas vadlīnijas

  • Ģeometrija vienmēr tiek saglabāts visos formātu pāros.
  • Materiāli labāk saglabājas starp glTF un FBX, kuri abi atbalsta bagātus materiālu modeļus. Pārvēršana uz STL vienmēr izmet materiālus. Pārvēršana uz OBJ vienkāršo materiālus uz pamata MTL modeli.
  • Ainas hierarhija tiek saglabāta starp glTF un FBX. OBJ un STL rada plakanu struktūru.

Apvienojot visu

Šeit ir pilns piemērs, kas ielādē OBJ failu, pārbauda tā mezglus un eksportē gan uz glTF, gan 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.");
    }
}

Kopsavilkums

Aspose.3D FOSS for Java nodrošina jums konsekventu API vairākos formātos. Galvenie punkti:

  • OBJ – vienkārša režģa apmaiņa ar pamata materiāliem.
  • STL – tikai ģeometrijas formāts 3D drukāšanas cauruļvadiem.
  • glTF / GLB – moderns PBR spējīgs formāts tīmekļa un reāllaika lietošanai. Izmantojiet GltfSaveOptions ar setContentType(FileContentType.BINARY) GLB izvadei.
  • FBX – tikai importēšana; bagāts formāts resursu ielādēšanai no spēļu dzinējiem un DCC rīkiem.

Izmantojiet formātam specifiskās ielādes un saglabāšanas opciju klases (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions) kad jums ir nepieciešama smalkā vadība pār importēšanas vai eksportēšanas procesu.

Lai iegūtu vairāk informācijas, apmeklējiet Aspose.3D dokumentācija vai pārlūkojiet avotu uz GitHub.