Aspose.3D FOSS for Java støtter fem 3D-filer: OBJ, STL, Glattef, GLB,og FBX Denne artikkelen er en praktisk, format-for-format guide som viser hvordan du lader og sparer hver av dem, hvilke alternativer som er tilgjengelige, og hvordan å konvertere mellom dem.
Alle eksempler bruker com.aspose.threed.* Pakke av:
import com.aspose.threed.*;
Maven avhengighet:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Format landskap
Før du dykker inn, her er en rask oversikt over de fire støttet formatene og deres typiske brukssaker.
| Formater | Utvidelse | Import av | Eksport | Materialstøtte | Skener i hierarkiet |
|---|---|---|---|---|---|
| OBJ | .obj | Ja ja | Ja ja | Basic (MTL filer) | Flat |
| STL | .stl | Ja ja | Ja ja | Ingen | Flat |
| GTTF 2.0 | .gltf | Ja ja | Ja ja | PBR | Fullt |
| GLB | .glb | Ja ja | Ja ja | PBR | Fullt |
| FBX | .fbx | Ja ja | Ikke | Rikere | Fullt |
OBJ, STL, glTF og GLB støtter både import og eksport. FBX er støttet for Import bare.GLB (binær glTF) er produsert via GltfSaveOptions Med setContentType(FileContentType.BINARY).
OBJ: Wavefront objektet
OBJ er en av de mest støttet 3D-mesh formatene. det lagrer geometri som flat tekst, med et valgfritt .mtl Kompanjonsfil for materialer.
Last ned OBJ filer
Den enkleste tilnærmingen er å passere filveien 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), biblioteket vil prøve å laste opp materielldefinisjoner fra det automatisk. MTL-filen bør være i samme katalog som OBJ-fil eller på veien angitt i direktiveret.
Sparer som OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
OBJ bruker tilfeller
- Utveksling av mesh data mellom forskjellige 3D verktøy.
- Importerer modeller fra eiendeler bibliotek som distribuerer i OBJ-format.
- Rask inspeksjon av geometri uten komplekse scene hierarkier.
STL: Stereolithografi
STL er standardformat for 3D-utskrift. Det representerer rå triangulert geometri uten materialer, farger eller scenerhierarki. STl filer kommer i to varianter: ASCII (menneskelig lesbar) og binær (kompakt).
Lading av STL filer
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
Sparer som STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
For å kontrollere produksjonen, bruk StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
STL vurderinger
- STL lagrer bare triangulær geometri. materialer, teksturer og scenerikjerrikk støttes ikke og kastes på eksport.
- STL eksporterer Ikke binær STL skriver bare de første 3 vertikalene av hver polygon ansikt; quad og n-gon ansikter er stille trunked. ASCII ST L skriver alle vertex indekser per ansikte, produserer forvrengte utgang for ikke triangle ansikten. Aldrig bruke pre-triangulerte meses (all-trangel ansiktet) når eksportering til STl.
- Binær STL er betydelig mindre enn ASCII STl for store modeller.
- STL er formaten av valg når målet er en 3D-skrivere 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 realtidsapplikasjoner. Det støtter PBR-materialer, scene hierarkier og animasjoner.
Lading av gltf filer
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
Sparer som gltf
Basisk lagring bruker filutvidelsen 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);
GltfSaveOptions detaljer
| Metode | Formål |
|---|---|
setFlipCoordinateSystem(boolean) | Flip koordinatsystemet øyes under eksport. Nyttig når konvertere fra Y-up til Z-ups eller omvendt. |
setPrettyPrint(boolean) | Formatere JSON-utgaven med indentasjon for lesbarhet. false For mindre filstørrelse i produksjon. |
GTTF bruker tilfeller
- Webbasert 3D-seere (three.js, Babylon.js).
- Real-time applikasjoner og spillmotorer.
- Oppbevaring av PBR-materiale definisjoner over verktøy.
FBX: Filmbox (Import bare)
FBX er et proprietært format av Autodesk som brukes mye i spillutvikling og digital innholdsskaping. Aspose.3D FOSS for Java støtter FBx for Import bare Eksport til FBX er ikke tilgjengelig.
Binære FBX bare. FBX importeren leser binære FB X-filer bare. passere en ASCII FB x-fil kastet
ImportException("ASCII FBX format not yet supported - only binary FBX is supported").Nodehierarki og materialekstraksjon fra FBX er ikke fullt verifisert; komplekse FB X scener kan ikke lastes helt.
Last ned FBX filer
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
Konverter FBX til andre formater
Siden FBX eksport ikke støttes, konverter importerte FB X 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 bruker tilfeller
- Importering av statiske mesh-verktøy fra Autodesk verktøy (Maya, 3ds Max) og konvertering til andre formater.
- Lasting binær FBX geometri og re-eksport til glTF/GLB, OBJ eller STL.
Batch konvertering
En vanlig arbeidsflyt er å konvertere en hel katalog av 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 byr på alle .obj fil i en katalog, konverterer hver til glTF med ganske utskriftsutsett, og sparer resultatene. Du kan tilpasse denne mønsteret for enhver kilde- og målformat kombinasjon.
Cross-Format konverteringsreferanse
Tabellen nedenfor viser hva du kan forvente når konvertere mellom formatene.
| Fra | til | Geometri | Materialer | Hierarkier | Noter |
|---|---|---|---|---|---|
| OBJ | STL | bevaret | tapt | N/A | STL har ingen materiell støtte |
| OBJ | GF / GLB | bevaret | Konvertert til PBR | Flat | MTL-materialer kartlagt hvor mulig |
| STL | OBJ | bevaret | Ingen | N/A | Ingen materialer i kilden |
| STL | GF / GLB | bevaret | Default | Flat | Default materiale som brukes |
| Glattef | OBJ | bevaret | forenklet | Flatte | PBR til grunnleggende materiale |
| Glattef | STL | bevaret | tapt | Flatte | Geometri bare |
| FBX | OBJ | bevaret | forenklet | Flatte | Materialforenkling |
| FBX | STL | bevaret | tapt | Flatte | Geometri bare |
| FBX | GF / GLB | bevaret | Konvertert til PBR | bevaret | God lojalitet |
Generelle konverteringsregler
- Geometri Generelt bevares over formatpar, med et viktig unntak: når du eksporterer til STL, må meshene bestå helt av triangle ansikter. binære ST L stille trunket quad og n-gon ansikt til sine første 3 vertikaler; ASCII STl produserer forvrengt utgang for ikke-triangles ansikte.
- Materialer overleve best mellom glTF og FBX-importerte scener som inkluderer materialdata. konvertering til STL alltid dropper materialet. Konvertering till OBJ forenkler materialene til grunnleggende MTL modell.
- Skener i hierarkiet er bevaret mellom glTF-format filer. OBJ og STL produserer fatte strukturer . FBX hierarki og materialekstraksjon er ikke fullt verifisert i denne versjonen.
Sett det hele 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.");
}
}
Samlinger
Aspose.3D FOSS for Java gir deg en konsekvent API over flere formater.:
- OBJ - enkel mesh utveksling med grunnleggende materialer.
- STL - Geometri-enbart format for 3D utskriftsrør.
- GF / GLB - moderne PBR-kapabel format for web og realtids bruk.
GltfSaveOptionsMedsetContentType(FileContentType.BINARY)for GLB produksjon. - FBX - kun import; rik format for lasting av eiendeler fra spillmotorer og DCC verktøy.
Bruk format-specifik last og lagre alternativer klasser (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionsNår du trenger fingrønn kontroll over import eller eksportprosessen.
For mer detaljer, besøk The Aspose.3D dokumentasjon eller gå til kilden på GitHub.