Aspose.3D FOSS pro Java podporuje pět 3D formátů souboru: OBJ, STL, Gltf, GLB,a FBX Tento příspěvek je praktický, formát-by-formát průvodce ukazující, jak si každý z nich naložit a uložit, které možnosti jsou k dispozici a jak mezi nimi převést.
Všechny příklady používají com.aspose.threed.* Paketní balíček :
import com.aspose.threed.*;
Maven závislost:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Formát krajiny
Před potápěním, zde je rychlý přehled čtyř podporovaných formátů a jejich typických případů použití.
| Formát | Rozšíření | dovozu | Vývoz | Materiální podpora | Hierarchie scény |
|---|---|---|---|---|---|
| OBJ | .obj | Ano ano | Ano ano | Základní (MTL soubory) | ploché |
| STL | .stl | Ano ano | Ano ano | Žádný | ploché |
| GTTF 2.0 | .gltf | Ano ano | Ano ano | PBR | plnohodnotné |
| GLB | .glb | Ano ano | Ano ano | PBR | plnohodnotné |
| FBX | .fbx | Ano ano | Ne | bohatý | plnohodnotné |
OBJ, STL, glTF a GLB podporují jak dovoz, tak vývoz. pouze dovoz.GLB (binární glTF) je produkován prostřednictvím GltfSaveOptions s setContentType(FileContentType.BINARY).
OBJ: Wavefront objekty
OBJ je jedním z nejvíce podporovaných 3D formátů. ukládá geometrii jako plochý text, s volitelným .mtl Příslušenství pro materiály.
Přihlašování OBJ souborů
Nejjednodušší je přejít přes souborovou stezku přímo:
Scene scene = Scene.fromFile("model.obj");
Pro větší kontrolu, použití ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
Pokud je soubor OBJ odkazem na soubory MTL (prostřednictvím mtllib Směrnice), knihovna se pokusí automaticky nahrát definice materiálu z ní. soubor MTL by měl být ve stejném adresáři jako soubory OBJ nebo na cestě stanovené v směrnici.
Shromažďování jako OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
OBJ používá případy
- Výměna dat mezi různými 3D nástroji.
- Import modelů z knihoven aktiv, které distribuují ve formátu OBJ.
- Rychlá kontrola geometry bez komplexních hierarchii scény.
Štítky: stereolithography
STL je standardní formát pro 3D tisk. představuje surovou trojúhelníkovou geometrii bez materiálů, barev nebo hierarchie scény. soubory STl se objevují ve dvou variantách: ASCII (lidské čitelné) a binární (kompaktní).
Stáhnout STL soubory
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
Úspora jako STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
Pro kontrolu výstupu, použití StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
STL hodnocení
- STL ukládá pouze trojúhelníkovou geometrii. materiály, textury a hierarchie scény nejsou podporovány a jsou vypuštěny na export.
- Exportní STL Ne Binární STL píše pouze první 3 vertikály každé polygonové tváře; čtvercové a n-gonové obličeje jsou tiše trunčované. ASCII STl píší všechny vertické indexy na tvář, což produkuje malformovaný výstup pro ne-triangle obličejů. Vždy používejte předtríhované masy (všechny triangles) při exportu do ST L.
- Binární STL je výrazně menší než ASCII STl pro velké modely.
- STL je formát volby, kdy cílem je 3D tiskárna nebo slicer software.
GLTF: Přenosový formát
glTF je moderní formát určený pro efektivní přenos a načítání 3D obsahu, zejména na webu a v reálném čase aplikací. podporuje PBR materiály, hierarchie scény a animace.
Přihlašování GLTF souborů
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
Úspora jako glTF
Základní úložník používá rozšíření souboru k určení formátu:
scene.save("output.gltf");
Pro podrobnou kontrolu, použití GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
GltfSaveOptions podrobnosti
| Metoda | Účel |
|---|---|
setFlipCoordinateSystem(boolean) | Flip koordinátní systém osy během exportu. Užitečné při konverzi z Y-up na Z-Up nebo naopak. |
setPrettyPrint(boolean) | Formátování výstupu JSON s indentací pro čitelnost. false Pro menší velikost souboru v produkci. |
GLTF používá případy
- 3D prohlížeče na webu (three.js, Babylon.js).
- Reálné aplikace a herní motory.
- Udržování definic PBR materiálů přes nástroje.
FBX: Filmbox (pouze import)
FBX je vlastnický formát společnosti Autodesk, který se široce používá v oblasti vývoje her a digitálního obsahu. Aspose.3D FOSS pro Java podporuje FBx pro pouze dovoz Export na FBX není k dispozici.
Binární FBX pouze. FBX importér čte pouze binární fbx soubory. procházející ASCII fbs soubor vrhá
ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). hierarchie node a materiální extrakce z FBX nejsou plně ověřeny; složité scény FB X nemusí být zcela nabité.
Stáhnout fbx soubory
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
Konverze FBX do jiných formátů
Vzhledem k tomu, že export FBX není podporován, konvertujte dovezené scény FB X na glTF, GLB, OBJ nebo 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žívá případy
- Import statických mezových aktiv z nástrojů Autodesk (Maya, 3ds Max) a konverze do jiných formátů.
- Nabíjení binární geometrie FBX a re-export do glTF/GLB, OBJ nebo STL.
Batch konverze
Jedním z běžných pracovních toků je konverze celého adresáře souborů z jednoho formátu do druhého. zde je vzor pro konverzi sadu:
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 se zatěžuje každému .obj soubor v adresáři, konvertovat každý do glTF s pěkně vytisknutým výstupem a ušetří výsledky.Můžete přizpůsobit tento vzorek pro jakékoli kombinace zdrojového a cílového formátu.
Cross-formátová konverze
Následující tabulka ukazuje, co očekávat při konverzi mezi formáty.
| od | Na | Geometrie | Materiály | Hierarchie | Poznámky |
|---|---|---|---|---|---|
| OBJ | STL | zachováno | Ztracen | N/A | STL nemá žádnou materiální podporu |
| OBJ | GLTF / GLB | zachováno | Přepracované na PBR | ploché | MTL materiály mapované, kde je to možné |
| STL | OBJ | zachováno | Žádný | N/A | Žádný materiál v zdroji |
| STL | GLTF / GLB | zachováno | Podmínkou | ploché | Využitý materiál |
| Gltf | OBJ | zachováno | zjednodušené | Flattenová | PBR do základní materiály |
| Gltf | STL | zachováno | Ztracen | Flattenová | Geometrie pouze |
| FBX | OBJ | zachováno | zjednodušené | Flattenová | Materiální zjednodušení |
| FBX | STL | zachováno | Ztracen | Flattenová | Geometrie pouze |
| FBX | GLTF / GLB | zachováno | Přepracované na PBR | zachováno | Dobrá věrnost |
Obecné pokyny pro konverzi
- Geometrie je obecně zachovávána v rámci formátových párů, s jedním důležitým výjimkou: při exportu do STL musí být meze zcela tvořena trojstrannými tvářími. binární ST L tiše trunčí čtvercové a n-gonové tváře do prvních 3 vrstv; ASCII STl produkuje malformovaný výsledek pro ne-triangulární tvář.
- Materiály přežijte nejlépe mezi glTF a FBX-importující scény, které obsahují materiální údaje. Konverze na STL vždy klesá materiál. Converting na OBJ zjednodušuje materiály k základnímu modelu MTL.
- Hierarchie scény je zachován mezi soubory formátu glTF. OBJ a STL produkují ploché struktury. hierarchie FBX a materiálové extrakce nejsou v této verzi plně ověřeny.
Vložte to vše dohromady
Zde je kompletní příklad, který nahrává soubor OBJ, kontroluje jeho uzly a vyváží se do obou 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.");
}
}
Shrnutí
Aspose.3D FOSS pro Java vám poskytuje konzistentní API v několika formátech.:
- OBJ - jednoduchá výměna míchy s základními materiály.
- STL - geometrický formát pouze pro 3D tiskové potrubí.
- GLTF / GLB - moderní formát PBR-kapitelný pro webové a reálné používání.
GltfSaveOptionsssetContentType(FileContentType.BINARY)Výroba na GLB. - FBX - pouze dovoz; bohatý formát pro nabíjení aktiv z herních motorů a nástrojů DCC.
Využijte typy a možnosti pro výběr (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionsb) pokud potřebujete jemně upravenou kontrolu dovozního nebo vývozního procesu.
Pro více detailů navštivte Aspose.3D dokumentace nebo přejděte do zdroje GitHub.