Aspose.3D FOSS pre Java podporuje päť formátov súboru 3D: OBJ, STL, Gltf, GLB,a , a FBX Tento príspevok je praktický, formát-by-formát sprievodca ukazuje, ako sa dať a uložiť každý z nich, aké možnosti sú k dispozícii a ako premeniť medzi nimi.
Všetky príklady používajú com.aspose.threed.* balíček :
import com.aspose.threed.*;
Maven závislosť:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Formát krajiny
Pred ponorom, tu je rýchly prehľad štyroch podporovaných formátov a ich typické prípady použitia.
| formátovanie | rozšírenie | dovoz | Vývoz | Materiálna podpora | hierarchia scény |
|---|---|---|---|---|---|
| OBJ | .obj | Áno | Áno | Základné (MTL súbory) | Plná |
| STL | .stl | Áno | Áno | Žiadne | Plná |
| GTTF 2.0 | .gltf | Áno | Áno | PBR | plnohodnotný |
| GLB | .glb | Áno | Áno | PBR | plnohodnotný |
| FBX | .fbx | Áno | No nie | bohatý | plnohodnotný |
OBJ, STL, glTF a GLB podporujú import aj export. FBX je podporovaný pre import iba.GLB (binárna glTF) sa vyrába prostredníctvom GltfSaveOptions s setContentType(FileContentType.BINARY).
OBJ: Wavefront objekty
OBJ je jedným z najširšie podporovaných formátov 3D mesh. Uloží geometrie ako plochý text, s voľným .mtl Spolupracovacie súbory pre materiály.
Objektívny súbor OBJ
Najjednoduchším prístupom je prejsť súborovou trasou priamo:
Scene scene = Scene.fromFile("model.obj");
Pre väčšiu kontrolu, používanie ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
Keď súbor OBJ odkazuje na súbory MTL (prostredníctvom mtllib smernica), knižnica sa bude pokúsiť automaticky nahrať definície materiálu z nej. súbor MTL by mal byť v rovnakom katalógu ako OBJ súbory alebo na ceste stanovené v smernici.
Ušetriť ako OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
OBJ používa prípady
- Výmena dát medzi rôznymi 3D nástrojmi.
- Importovať modely z knižníc aktív, ktoré distribuujú v OBJ formáte.
- Rýchla inšpekcia geometry bez komplexných hierarchie scény.
Štítok: stereolithography
STL je štandardný formát pre 3D tlač. Predstavuje surovú triangulovanú geometriu bez materiálov, farieb alebo hierarchie scény. STl súbory sa vyskytujú v dvoch variantách: ASCII (človek čitateľný) a binárne (kompaktné).
Stiahnuť STL súbory
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
Ušetriť ako STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
Na kontrolu výstupu, používať StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
STL prihliadky
- STL skladuje iba trojuholníkovú geometriu. materiály, textúry a hierarchia scény nie sú podporované a vyhodené na export.
- Vývoz STL sa Nie je binárne STL píše iba prvé 3 vertikály každej polygónovej tváre; štvorcové a n-gonové tváry sú ticho trunčované. ASCII ST L píši všetky vertické indexy na tvári, produkuje zlomový výstup pre ne-triangulárnych tvárov. Vždy používať predtriungulované mesie (všetko triangularné tváře) pri exportovaní do STl.
- Binárne STL je výrazne menší ako ASCII STl pre veľké modely.
- STL je formát voľby, keď cieľom je 3D tlačiareň alebo softvér na zliatiny.
GLTF: formát pre prenosové programy
glTF je moderný formát určený pre efektívnu prenos a nahrávanie 3D obsahu, najmä na webe a v aplikáciách v reálnom čase. podporuje PBR materiály, hierarchie scény a animácie.
Stiahnuť GLTF súbory
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
Ušetriť ako glTF
Základné úložisko používa rozšírenie súboru na určenie formátu:
scene.save("output.gltf");
Pre podrobnú kontrolu, použitie GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
GltfSaveOptions Podrobnosti
| Metóda | Účel |
|---|---|
setFlipCoordinateSystem(boolean) | Flip koordinátový systém axis počas exportu. užitočné pri konverzii z Y-up na Z-Up alebo naopak. |
setPrettyPrint(boolean) | Formátovanie výstupu JSON s indentáciou pre čitateľnosť. false pre menšie veľkosti súborov v produkcii. |
GLTF používa prípady
- Webové 3D prehliadače (three.js, Babylon.js).
- Reálne aplikácie a herné motory.
- Udržiavanie definícií materiálu PBR cez nástroje.
FBX: Filmbox (samozrejme iba import)
FBX je vlastný formát spoločnosti Autodesk, ktorý sa široko používa v oblasti vývoja hier a digitálneho obsahu. Aspose.3D FOSS for Java podporuje FBx pre import iba - export na FBX nie je k dispozícii.
Binárne FBX iba. FBX importér číta len binárne súbory FB X. Prechod ASCII FB x súbor sa hodí
ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). hierarchia uzlín a materiálové extrakcie z FBX nie sú plne overené; komplexné scény FB X nemôžu byť úplne naložené.
Stiahnuť fbx súbory
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
Konverzia FBX do iných formátov
Keďže FBX export nie je podporovaný, konvertujte dovezené FBx scény na glTF, GLB, OBJ alebo STL:
Scene scene = Scene.fromFile("character.fbx");
// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);
FBX používa prípady
- Import statických mäsových aktív z nástrojov Autodesk (Maya, 3ds Max) a konverzia do iných formátov.
- Naložiť binárnu geometria FBX a re-exportovať na glTF/GLB, OBJ alebo STL.
Batch konverzia
Spoločný pracovný tok je konverzia celého katalógu súborov z jedného formátu do druhého. tu je vzor pre konverziu batch:
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");
}
}
}
To sa zaťažuje každým .obj súbory v katalógu, konvertovať každý na glTF s výstupom dobre vytlačený a ušetriť výsledky. Môžete prispôsobiť tento vzor pre akúkoľvek kombináciu zdrojového a cieľového formátu.
Cross-formát konverzie referencie
Nasledujúca tabuľka zobrazuje, čo očakávať pri konverzii medzi formátmi.
| od | na | Geometria | Materiály | hierarchia | poznámky |
|---|---|---|---|---|---|
| OBJ | STL | zachované | stratený | N/A | STL nemá žiadnu materiálnu podporu |
| OBJ | GTTF / GLB | zachované | Premenené na PBR | Plná | MTL materiály mapované kde je to možné |
| STL | OBJ | zachované | Žiadne | N/A | Žiadne materiály v zdroji |
| STL | GTTF / GLB | zachované | Podvodné | Plná | Využitý materiál |
| Gltf | OBJ | zachované | Zjednodušené | Plnivo | PBR na základný materiál |
| Gltf | STL | zachované | stratený | Plnivo | Geometria iba |
| FBX | OBJ | zachované | Zjednodušené | Plnivo | Materiálna zjednodušenie |
| FBX | STL | zachované | stratený | Plnivo | Geometria iba |
| FBX | GTTF / GLB | zachované | Premenené na PBR | zachované | Dobrá vernosť |
Všeobecné smernice pre konverziu
- Geometria je všeobecne zachované cez formátové páry, s jedným dôležitým výnimkou: pri exporte do STL musí byť mäsy úplne pozostávajúce z trojstranných tvárí. binárny ST L ticho trunkaté štvorcové a n-gon tváre na svoje prvé 3 vrstiev; ASCII STl produkuje malformovaný výsledok pre non-triangle tvárov.
- Materiály prežiť najlepšie medzi glTF a FBX-importované scény, ktoré obsahujú materiálne údaje. Konvertovanie na STL vždy kvapky materiálov. Converting na OBJ zjednodušuje materiály do základného modelu MTL.
- hierarchia scény je zachovaná medzi súbormi formátu glTF. OBJ a STL produkujú ploché štruktúry. hierarchia FBX a materiálové extrakcie nie sú v tejto verzii plne overené.
Postavte to všetko spoločne
Tu je kompletný príklad, ktorý nahráva súbor OBJ, kontroluje jeho uzly a vyváža sa na glTF a 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.");
}
}
Zhrnutie
Aspose.3D FOSS pre Java vám dáva konzistentnú API v viacerých formátoch.:
- OBJ - jednoduchá výmena mäsov s základnými materiálmi.
- STL - geometrický formát pre 3D tlačovú potrubie.
- GST / GLB - moderný formát PBR-vhodný pre web a reálne použitie.
GltfSaveOptionsssetContentType(FileContentType.BINARY)Výroba GLB. - FBX - import iba; bohatý formát pre nabíjanie aktív z herných motorov a nástrojov DCC.
Použite formát špecifický zaťaženie a uložiť možnosti triedy (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionskeď potrebujete jemnú kontrolu nad dovozom alebo vývozným procesom.
Pre viac informácií navštívte Aspose.3D dokumentácia alebo prejdite na zdroj GitHub.