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.
| Format | Filtype | Import | Eksport | Materialstøtte | Scenhierarki |
|---|---|---|---|---|---|
| OBJ | .obj | Ja | Ja | Grunnleggende (MTL-filer) | Flat |
| STL | .stl | Ja | Ja | Ingen | Flat |
| glTF 2.0 | .gltf | Ja | Ja | PBR | Full |
| GLB | .glb | Ja | Ja | PBR | Full |
| FBX | .fbx | Ja | Nei | Rik | Full |
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
| Metode | Formå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.
| Fra | Til | Geometri | Materialer | Hierarki | Notater |
|---|---|---|---|---|---|
| OBJ | STL | Bevart | Tapt | N/A | STL har ingen materialstøtte |
| OBJ | glTF/GLB | Bevart | Konvertert til PBR | Flat | MTL-materialer kartlagt der det er mulig |
| STL | OBJ | Bevart | Ingen | N/A | Ingen materialer i kilden |
| STL | glTF/GLB | Bevart | Standard | Flat | Standardmateriale brukt |
| glTF | OBJ | Bevart | Forenklet | Flatt | PBR til grunnleggende materiale |
| glTF | STL | Bevart | Tapt | Flatet | Kun geometri |
| FBX | OBJ | Bevart | Forenklet | Flatet | Materialforenkling |
| FBX | STL | Bevart | Tapt | Flatet | Kun geometri |
| FBX | glTF/GLB | Bevart | Konvertert til PBR | Bevart | God 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
GltfSaveOptionsmedsetContentType(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.