Jsme nadšeni, že můžeme oznámit dostupnost Aspose.3D FOSS for Java – bezplatná, open-source knihovna pro práci s 3D formáty souborů v aplikacích Java. Vytvořena jako čisté řešení Java bez nativních závislostí, knihovna běží na Java 21 a novějších, což ji činí přístupnou širokému spektru projektů a prostředí.
Tento příspěvek vás provede tím, co knihovna nabízí, jak začít a kam dál.
Co je Aspose.3D FOSS pro Java?
Aspose.3D FOSS for Java je lehká knihovna pro zpracování 3D souborů publikovaná pod MIT license. Poskytuje API pro scénový graf, které vám umožní načíst, prozkoumat, transformovat a uložit 3D modely napříč několika široce používanými formáty. Knihovna je kompletně napsána v Java a nevyžaduje žádné externí nativní binární soubory ani platformně specifické konfigurace.
Zdrojový kód je k dispozici na GitHubu: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Klíčové body
- Čistý Java – žádné JNI, žádné nativní knihovny, žádná omezení platformy.
- Java 21+ kompatibilní.
- MIT licensed – použijte jej v osobních, komerčních nebo proprietárních projektech bez omezení.
- Architektura grafu scény – známý strom uzlů, sítí, kamer a materiálů.
- Podpora více formátů – číst a zapisovat soubory OBJ, STL, glTF 2.0 a GLB; číst soubory FBX.
Rychlý start
Instalace Maven
Přidejte následující závislost do svého pom.xml:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Vaše první konverze
Nejednodušší případ použití je načtení 3D souboru v jednom formátu a jeho uložení v jiném. Zde je dvouřádková konverze z OBJ do STL:
import com.aspose.threed.*;
public class QuickConvert {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("cube.obj");
scene.save("output.stl");
}
}
Ten Scene class je centrálním vstupním bodem. Zavolejte Scene.fromFile() s cestou k souboru pro načtení modelu, poté zavolejte save() s cílovou cestou. Knihovna odvozuje formát z přípony souboru.
Vytvoření scény od nuly
Můžete také programově vytvářet scény:
import com.aspose.threed.*;
public class BuildScene {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("Box");
Transform t = node.getTransform();
t.setTranslation(1, 2, 3);
scene.save("scene.gltf");
}
}
Tím se vytvoří nová scéna, přidá se podřízený uzel pojmenovaný “Box” pod kořen, umístí se na souřadnice (1, 2, 3) a výsledek se exportuje jako soubor glTF.
Načítání s možnostmi specifickými pro formát
Když potřebujete jemnější kontrolu nad procesem načítání, každý formát poskytuje vlastní třídu možností. Například načtení souboru STL s explicitními možnostmi:
import com.aspose.threed.*;
public class LoadWithOptions {
public static void main(String[] args) throws Exception {
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
// Inspect the loaded scene
System.out.println("Root children: "
+ scene.getRootNode().getChildNodes().size());
// Re-export as OBJ
scene.save("part.obj");
}
}
The Scene.fromFile() statická metoda přijímá libovolný z typů možností načítání: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, nebo FbxLoadOptions.
Procházení grafu scény
Jakmile je scéna načtena, můžete procházet strom uzlů a prohlížet nebo upravovat jeho obsah:
import com.aspose.threed.*;
public class TraverseScene {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("model.gltf");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println("Node: " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: " + t.getTranslation());
Entity entity = child.getEntity();
if (entity instanceof Mesh) {
Mesh mesh = (Mesh) entity;
System.out.println(" Vertices: "
+ mesh.getControlPoints().size());
}
}
}
}
Tento vzor je užitečný pro ladění, generování zpráv o obsahu modelu nebo selektivní úpravu částí scény před opětovným exportem.
Aplikace transformací
Umístění uzlů ve 3D prostoru se provádí pomocí Transform objektu na každém Node:
import com.aspose.threed.*;
public class TransformExample {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node parent = scene.getRootNode().createChildNode("Parent");
parent.getTransform().setTranslation(10, 0, 0);
Node child = parent.createChildNode("Child");
child.getTransform().setTranslation(5, 0, 0);
child.getTransform().setScale(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.save("transformed.gltf");
}
}
Transformace následují standardní model dědičnosti rodič‑dítě: pozice dítěte ve světovém prostoru je kombinací jeho lokální transformace a všech transformací předků až po kořen.
Co je zahrnuto
Knihovna je dodávána s úzce zaměřenou sadou funkcí navržených kolem modelu 3D scénového grafu.
Scénový graf
Scénový graf je páteří API. Každý 3D soubor je reprezentován jako stromová struktura:
| Třída | Role |
|---|---|
Scene | Kontejner nejvyšší úrovně; kořen grafu scény |
Node | Pojmenovaná pozice ve stromu; obsahuje transformace a podřízené uzly |
Entity | Abstraktní základ pro vizuální objekty připojené k uzlům |
Mesh | Polygonální geometrie – vrcholy, plochy, normály |
Camera | Definice virtuální kamery |
Transform | Místní translace, rotace a měřítko uzlu |
GlobalTransform | Vypočtená transformace ve světovém prostoru |
Materiály
Knihovna poskytuje model materiálu PBR (Physically Based Rendering):
- PbrMaterial – materiál založený na fyzikálně založeném renderování s albedo, metalness, roughness, emissive color a transparency. Toto je jediná konkrétní třída materiálu dostupná v edici Java.
Matematické utility
The com.aspose.threed balíček obsahuje nezbytné matematické primitivy:
- Vector3 – 3‑komponentový vektor pro pozice, směry a barvy.
- Matrix4 – 4x4 transformační matice.
- Quaternion – reprezentace rotace.
- BoundingBox – osově zarovnaný ohraničovací box pro prostorové dotazy.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Možnosti načítání a ukládání
Každý formát má vlastní třídy možností, které vám umožňují řídit chování importu a exportu:
| Formát | Možnosti načítání | Možnosti ukládání |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | – (pouze import) |
Například pro export glTF s hezky formátovaným JSON a převráceným souřadnicovým systémem:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Podporované formáty
Následující tabulka shrnuje formáty, které Aspose.3D FOSS pro Java dokáže číst a zapisovat.
| Formát | Rozšíření | Import | Export | Poznámky |
|---|---|---|---|---|
| OBJ | .obj | Ano | Ano | S MTL materiály |
| STL | .stl | Ano | Ano | Binární + ASCII |
| glTF 2.0 | .gltf | Ano | Ano | formát JSON |
| GLB | .glb | Ano | Ano | Binární glTF přes GltfSaveOptions |
| FBX | .fbx | Ano | Ne | Pouze import |
Formáty OBJ, STL, glTF a GLB podporují jak načítání, tak ukládání. FBX je podporováno pouze pro import.
Průvodce výběrem formátu
Volba správného formátu závisí na vašem konkrétním použití:
- OBJ je ideální, když potřebujete maximální kompatibilitu napříč 3D nástroji. Téměř každá modelovací aplikace dokáže číst a zapisovat OBJ. Funguje dobře pro výměnu síťových dat, ale přenáší pouze základní informace o materiálech prostřednictvím doprovodných souborů MTL.
- STL je preferovaným formátem pro workflow 3D tisku. Ukládá surovou triangulovanou geometrii bez materiálů nebo hierarchie scény, což je přesně to, co očekává slicer software. Pokud váš proces končí u 3D tiskárny, STL je jednoduchá volba.
- glTF je moderním standardem pro web a real-time 3D. Podporuje materiály PBR, kompletní hierarchie scén a je navržen pro efektivní přenos. Používejte glTF při tvorbě webových prohlížečů, práci s three.js nebo Babylon.js, nebo při cílení na jakýkoli real-time renderovací pipeline.
- FBX je hluboce integrován do pracovních postupů vývoje her a tvorby digitálního obsahu. Podporuje bohatá data scén včetně hierarchií a materiálů. Aspose.3D FOSS pro Java podporuje FBX pouze import – použijte jej k načtení FBX aktiv a jejich konverzi do jiných formátů.
Známá omezení
Je důležité poznamenat, že Scene.render() je není podporováno v edici FOSS. Volání této metody vyvolá UnsupportedOperationException. Knihovna je navržena pro souborově orientované 3D zpracování – načítání, manipulaci, transformaci a ukládání modelů – spíše než pro renderování v reálném čase na displej.
Open Source a licencování
Aspose.3D FOSS pro Java je vydán pod licencí MIT. To znamená, že můžete:
- Používat knihovnu v komerčních a proprietárních aplikacích.
- Upravit zdrojový kód tak, aby vyhovoval vašim potřebám.
- Distribuujte knihovnu jako součást svého vlastního softwaru.
Neexistují žádné poplatky za licence, žádná omezení používání ani požadavky na uvedení autorství nad rámec toho, co stanoví licence MIT.
Plný zdrojový kód je hostován na GitHubu a příspěvky jsou vítány: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Systémové požadavky
| Požadavek | Detail |
|---|---|
| Java verze | 21 or later |
| Závislosti | Žádné (čistý Java) |
| Platformy | Jakákoli platforma, která spouští JVM |
| Nástroj pro sestavení | Maven (doporučeno) |
Začínáme
Zde jsou zdroje, které vám pomohou začít pracovat:
- Dokumentace – komplexní průvodce a podrobné procházky API jsou k dispozici na Aspose.3D dokumentační stránka.
- Znalostní báze – praktické návody a tipy pro řešení problémů v Aspose.3D KB.
- Reference API – podrobná reference tříd a metod na Aspose.3D API Reference.
- Zdrojový kód – procházejte a přispívejte na GitHub.
- Maven Central – balíček je publikován jako
com.aspose:aspose-3d-fossna Maven Central.
Běžné případy použití
Zde jsou některé praktické scénáře, kde Aspose.3D FOSS pro Java dobře zapadá:
Potrubí pro konverzi formátů
Mnoho týmů dostává 3D aktiva v jednom formátu, ale potřebuje je v jiném. Designový tým může pracovat s FBX, zatímco webový tým potřebuje glTF. Knihovna vám umožní vytvořit automatizovaná potrubí pro konverzi:
// Convert all incoming FBX assets to GLB for the web team
Scene scene = Scene.fromFile("asset.fbx");
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("asset.glb", opts);
3D Model Inspection and Validation
Před integrací 3D assetu do vaší aplikace můžete chtít ověřit jeho obsah – kontrolou počtu uzlů, ověřením geometrie nebo potvrzením, že očekávané prvky jsou přítomny:
Scene scene = Scene.fromFile("model.obj");
int nodeCount = scene.getRootNode().getChildNodes().size();
System.out.println("Top-level nodes: " + nodeCount);
for (Node child : scene.getRootNode().getChildNodes()) {
if (child.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) child.getEntity();
System.out.println(child.getName() + ": "
+ mesh.getControlPoints().size() + " vertices");
}
}
Sestavení scény
Můžete načíst více modelů a sloučit je do jedné scény:
Scene scene = new Scene();
Scene part1 = Scene.fromFile("chassis.obj");
Scene part2 = Scene.fromFile("wheels.obj");
// Add nodes from each part into the combined scene
for (Node child : part1.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
for (Node child : part2.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
scene.save("assembled.gltf");
Co dál
V nadcházejících příspěvcích se budeme věnovat:
- Hloubkový pohled na klíčové funkce scene-graph API, materiály a matematické utility.
- Praktický průvodce prací s každým podporovaným 3D formátem – OBJ, STL, glTF a FBX – včetně možností načítání/ukládání a vzorů hromadné konverze.
Zůstaňte naladěni a neváhejte prozkoumat knihovnu a sdílet své připomínky na GitHubu.