Aspose.3D FOSS för Java stöder fem 3D-filerformat: OBJ, STL, GTTF, GLB,och FBX Denna post är en praktisk, format-by-format guide som visar hur man laddar och sparar var och en, vilka alternativ finns tillgängliga och hur du konverterar mellan dem.
Alla exempel använder sig av com.aspose.threed.* Förpackning :
import com.aspose.threed.*;
Maven beroende:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Format landskap
Innan du dykar in, här är en snabb översikt över de fyra format som stöds och deras typiska användningsfall.
| Formatera | Utvidgningen | Import av | Exporten | Materialstöd | scen hierarki |
|---|---|---|---|---|---|
| OBJ | .obj | Ja ja | Ja ja | Basiska (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 | Nej inte | Rika | Fullt |
OBJ, STL, glTF och GLB stöds både import och export. FBX stödjs för Endast import.GLB (binär glTF) produceras via GltfSaveOptions med setContentType(FileContentType.BINARY).
OBJ: Wavefront objekt
OBJ är en av de mest stödda 3D-mäs format. Det lagrar geometri som platt text, med ett valfritt .mtl Kompanion filer för material.
Ladda upp OBJ filer
Det enklaste sättet är att passera filvägen direkt:
Scene scene = Scene.fromFile("model.obj");
För mer kontroll, användning ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
När OBJ-filen refererar till en MTL-fil (via a) mtllib Direktivet), biblioteket kommer att försöka ladda materialdefinitioner automatiskt från det. MTL-filen bör vara i samma katalog som OBJ-fil eller på vägen som anges i direktivets.
Spara som OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
OBJ använder fall
- Utbyte av mesh data mellan olika 3D-verktyg.
- Importera modeller från tillgångsbibliotek som distribuerar i OBJ-format.
- Snabb inspektör av geometri utan komplexa scenhierarkier.
STL: Stereolithografi
STL är det standardformat för 3D-utskrift. Det representerar rå triangulerad geometri utan material, färger eller scenhierarki. STl filer kommer i två varianter: ASCII (mänskligt lästa) och binär (kompakta).
Ladda upp STL filer
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
Spara som STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
För att kontrollera produktionen, använd StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
STL överväganden
- STL lagrar endast triangulär geometri. material, texturer och scenhierarki stöds inte och kastas på export.
- STL Exporten gör inte binär STL skriver bara de första 3 vertikalerna av varje polygon ansikte; quad och n-gon ansikten är tyst trunkade. ASCII ST L skriver alla vertexindex per ansikt, vilket producerar malformad utgång för icke triangulära ansikter. Alltid använda pre-triangulerade meses (all-trigulera ansikts) när exporteras till STl.
- Binär STL är betydligt mindre än ASCII STl för stora modeller.
- STL är valformatet när målet är en 3D-skrivare eller slicerprogramvara.
GLTF: GL Transmission Format
GlTF är ett modernt format som är utformat för effektiv överföring och laddning av 3D-innehåll, särskilt på webben och i realtidsapplikationer. det stöder PBR-material, scenhierarkier och animationer.
Ladda ner gltf filer
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
Spara som gltf
Basisk spara använder filändelsen för att bestämma formatet:
scene.save("output.gltf");
För detaljerad kontroll, användning GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
GltfSaveOptions detaljer
| Metod | syftet |
|---|---|
setFlipCoordinateSystem(boolean) | Flip koordinatsystem axel under export. Användbar när konvertera från Y-up till Z-Up eller vice versa. |
setPrettyPrint(boolean) | Formatera JSON-utgåvan med indentation för läsbarhet. false för mindre filstorlek i produktion. |
GTTF Användning av fall
- Webbaserade 3D-sökare (three.js, Babylon.js).
- Realtidsanvändningar och spelmotorer.
- Håll PBR-materialdefinitioner över verktyg.
FBX: Filmbox (Import endast)
FBX är ett proprietärt format av Autodesk som används i stor utsträckning inom spelutveckling och digitalt innehållsskapande. Aspose.3D FOSS för Java stöder FBx för Endast import Export till FBX är inte tillgänglig.
Binär FBX endast. FBX importerar bara binära FBx-filer. passera en ASCII FB X fil kastas
ImportException("ASCII FBX format not yet supported - only binary FBX is supported").Nodehierarki och materialutvinning från FBX är inte fullt verifierad; komplexa FB X-scener kan inte ladda helt.
Ladda upp fbx filer
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
Konvertera FBX till andra format
Eftersom FBX-exporten inte stöds, konverterar du importerade FB X scener till 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 Används av fall
- Import av statiska mässa tillgångar från Autodesk-verktyg (Maya, 3ds Max) och konvertering till andra format.
- Ladda binär FBX geometri och återexportera till glTF/GLB, OBJ eller STL.
Batch omvandling
En vanlig arbetsflöde är att konvertera en hel katalog av filer från ett format till ett annat. Här är ett mönster för batchkonvertering:
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");
}
}
}
Detta belastar alla .obj fil i en katalog, konverterar var och en till glTF med bra utskriftsresultat, och sparar resultaten. Du kan anpassa denna mönster för någon kombination av käll- och målformat.
Cross-format konverteringsreferens
I tabellen nedan visas vad man kan förvänta sig när man konverterar mellan format.
| Från | till | Geometri | material | Hierarkier | Noter |
|---|---|---|---|---|---|
| OBJ | STL | bevarad | Förlorade | N/A | STL har inget materialstöd |
| OBJ | GTTF / GLB | bevarad | Omvandlas till PBR | Flat | MTL-material kartläggs där det är möjligt |
| STL | OBJ | bevarad | Ingen | N/A | Inga material i källan |
| STL | GTTF / GLB | bevarad | förfalskad | Flat | Standardmaterial som används |
| GTTF | OBJ | bevarad | förenklade | Flattened | PBR till grundmaterial |
| GTTF | STL | bevarad | Förlorade | Flattened | Geometri endast |
| FBX | OBJ | bevarad | förenklade | Flattened | Materialförenkling |
| FBX | STL | bevarad | Förlorade | Flattened | Geometri endast |
| FBX | GTTF / GLB | bevarad | Omvandlas till PBR | bevarad | Bra lojalitet |
Allmänna konverteringsriktlinjer
- Geometri är i allmänhet bevaras över formatpar, med ett viktigt undantag: när man exporterar till STL måste mesh består helt av triangulära ansikten. binär ST L tyst trunkar quad och n-gon ansikter till sina första 3 vertikaler; ASCII STl producerar malformad utgång för icke-triangular ansikte.
- material överleva bäst mellan glTF och FBX-importerade scener som innehåller materialdata. Konvertera till STL alltid droppar material. Converting till OBJ förenklar material till grundläggande MTL modell.
- Scenär hierarki bevaras mellan glTF-formatfiler. OBJ och STL producerar fasta strukturer. FBX hierarki och materialutvinning är inte fullt verifierade i denna version.
Lägg det alla tillsammans
Här är ett komplett exempel som laddar en OBJ-fil, inspekterar dess noder och exporterar till både glTF och 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.");
}
}
Sammanfattning
Aspose.3D FOSS för Java ger dig en konsekvent API över flera format.:
- OBJ - Enkel mässa byte med grundmaterial.
- STL - Geometri-enbart format för 3D-skrivningspullar.
- GTTF / GLB - Modern PBR-kapabel format för web och realtidsbruk.
GltfSaveOptionsmedsetContentType(FileContentType.BINARY)för GLB produktion. - FBX - endast importeras; rik format för laddnings tillgångar från spelmotorer och DCC-verktyg.
Använd format-specifik last och spara alternativ klasser (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionsNär du behöver fingrön kontroll över import- eller exportprocessen.
För mer detaljer, besök den Aspose.3D dokumentation eller bläddra i källan på GitHub.