Uzbuđeni smo najaviti dostupnost Aspose.3D FOSS for Java – besplatna, open‑source biblioteka za rad s 3D formatima datoteka u Java aplikacijama. Izgrađena kao čisto Java rješenje bez izvornih ovisnosti, biblioteka radi na Java 21 i novijim, čineći je dostupnom širokom rasponu projekata i okruženja.
Ovaj post prolazi kroz ono što biblioteka nudi, kako započeti i kamo dalje ići.
Što je Aspose.3D FOSS za Java?
Aspose.3D FOSS for Java je lagana biblioteka za obradu 3D datoteka objavljena pod MIT licenca. Pruža API za graf scenske strukture koji vam omogućuje učitavanje, pregled, transformaciju i spremanje 3D modela kroz nekoliko široko korištenih formata. Biblioteka je u potpunosti napisana u Java i ne zahtijeva vanjske izvorne binarne datoteke niti konfiguracije specifične za platformu.
Izvorni kod je dostupan na GitHubu: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Ključni naglasci
- Čisto Java – nema JNI, nema izvornih biblioteka, nema ograničenja platforme.
- Java 21+ kompatibilno.
- MIT licensed – koristite ga u osobnim, komercijalnim ili vlasničkim projektima bez ograničenja.
- Arhitektura grafova scene – poznato stablo čvorova, mreža, kamera i materijala.
- Podrška za više formata – čitaj i piši OBJ, STL, glTF 2.0 i GLB datoteke; čitaj FBX datoteke.
Brzi početak
Maven instalacija
Dodajte sljedeću ovisnost u svoj pom.xml:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Vaša prva konverzija
Najjednostavniji slučaj upotrebe je učitavanje 3D datoteke u jednom formatu i spremanje u drugi. Evo dvoredne konverzije iz OBJ u 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");
}
}
The Scene class je središnja ulazna točka. Pozovite Scene.fromFile() s putanjom do datoteke za učitavanje modela, zatim pozovite save() s odredišnom putanjom. Biblioteka zaključuje format iz ekstenzije datoteke.
Izgradnja scene od nule
Također možete programatski konstruirati scene:
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");
}
}
Ovo stvara novu scenu, dodaje dijete čvor pod nazivom “Box” pod korijenom, postavlja ga na koordinate (1, 2, 3) i izvozi rezultat kao glTF datoteku.
Učitavanje s formatno‑specifičnim opcijama
Kada trebate finiju kontrolu nad procesom učitavanja, svaki format pruža svoju posvećenu klasu opcija. Na primjer, učitavanje STL datoteke s eksplicitnim opcijama:
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() statička metoda prihvaća bilo koju od vrsta opcija učitavanja: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, ili FbxLoadOptions.
Prolazak kroz graf scene
Nakon što je scena učitana, možete proći kroz stablo čvorova kako biste pregledali ili izmijenili njegov sadržaj:
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());
}
}
}
}
Ovaj obrazac je koristan za otklanjanje grešaka, generiranje izvješća o sadržaju modela ili selektivno modificiranje dijelova scene prije ponovnog izvoza.
Primjena transformacija
Pozicioniranje čvorova u 3D prostoru vrši se putem Transform objekt na svakom 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");
}
}
Transformacije slijede standardni model nasljeđivanja roditelj‑dijete: položaj djeteta u svjetskom prostoru je kombinacija njegove lokalne transformacije i svih transformacija pretka do korijena.
Što je uključeno
Biblioteka isporučuje fokusirani skup mogućnosti dizajniranih oko 3D modela grafova scene.
Graf scene
Graf scene je okosnica API-ja. Svaka 3D datoteka prikazana je kao struktura stabla:
| Klasa | Uloga |
|---|---|
Scene | Kontejner najviše razine; korijen grafova scene |
Node | Imenovana pozicija u stablu; sadrži transformacije i podređene čvorove |
Entity | Apstraktna baza za vizualne objekte pričvršćene uz čvorove |
Mesh | Poligonalna geometrija – vrhovi, površine, normale |
Camera | Definicija virtualne kamere |
Transform | Lokalni pomak, rotacija i skaliranje čvora |
GlobalTransform | Izračunata transformacija svjetskog prostora |
Materijali
Biblioteka pruža PBR (Physically Based Rendering) model materijala:
- PbrMaterial – materijal za fizički temeljeno renderiranje s albedom, metalnošću, hrapavosti, emisijskom bojom i prozirnošću. Ovo je jedina konkretna klasa materijala dostupna u Java izdanju.
Matematički alati
The com.aspose.threed paket uključuje osnovne matematičke primitive:
- Vector3 – vektor od 3 komponente za položaje, smjerove i boje.
- Matrix4 – 4x4 matrica transformacije.
- Quaternion – reprezentacija rotacije.
- BoundingBox – okvir ograničenja poravnat s osima za prostorne upite.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Opcije učitavanja i spremanja
Svaki format ima posebne klase opcija koje vam omogućuju kontrolu ponašanja uvoza i izvoza:
| Format | Učitaj opcije | Spremi opcije |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | – (samo uvoz) |
Na primjer, za izvoz glTF-a s lijepo formatiranim JSON-om i preokrenutim koordinatnim sustavom:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Podržani formati
Sljedeća tablica sažima formate koje Aspose.3D FOSS za Java može čitati i pisati.
| Format | Ekstenzija | Uvoz | Izvoz | Bilješke |
|---|---|---|---|---|
| OBJ | .obj | Da | Da | S MTL materijalima |
| STL | .stl | Da | Da | Binarni + ASCII |
| glTF 2.0 | .gltf | Da | Da | JSON format |
| GLB | .glb | Da | Da | Binarni glTF putem GltfSaveOptions |
| FBX | .fbx | Da | Ne | Samo uvoz |
OBJ, STL, glTF i GLB podržavaju i učitavanje i spremanje. FBX je podržan samo za uvoz.
Vodič za odabir formata
Odabir pravog formata ovisi o vašem slučaju upotrebe:
- OBJ je idealan kada trebate maksimalnu kompatibilnost među 3D alatima. Gotovo svaka aplikacija za modeliranje može čitati i pisati OBJ. Dobra je za razmjenu mrežnih podataka, ali prenosi samo osnovne informacije o materijalima putem pratećih MTL datoteka.
- STL je format po izboru za radne tokove 3D ispisa. Pohranjuje sirovu trianguliranu geometriju bez materijala ili hijerarhije scene, što je upravo ono što softver za rezanje očekuje. Ako vaš proces završava na 3D pisaču, STL je jednostavan izbor.
- glTF je moderni standard za web i real-time 3D. Podržava PBR materijale, potpune hijerarhije scena i dizajniran je za učinkovitu transmisiju. Koristite glTF pri izgradnji web‑baziranih preglednika, radu s three.js ili Babylon.js, ili ciljanju bilo kojeg real‑time renderiranja.
- FBX je duboko integriran u radne tokove razvoja igara i stvaranja digitalnog sadržaja. Podržava bogate podatke o scenama, uključujući hijerarhije i materijale. Aspose.3D FOSS za Java podržava FBX samo uvoz – koristite ga za učitavanje FBX sredstava i njihovu konverziju u druge formate.
Poznata ograničenja
Važno je napomenuti da Scene.render() je nije podržano u FOSS izdanju. Pozivanje ove metode će baciti UnsupportedOperationException. Biblioteka je dizajnirana za obradu 3D podataka temeljenu na datotekama – učitavanje, manipuliranje, transformiranje i spremanje modela – umjesto renderiranja u stvarnom vremenu na zaslon.
Open source i licenciranje
Aspose.3D FOSS for Java je objavljen pod MIT licenca. To znači da ste slobodni:
- Koristiti biblioteku u komercijalnim i vlasničkim aplikacijama.
- Modificirati izvorni kod prema svojim potrebama.
- Distribuirajte biblioteku kao dio vlastitog softvera.
Ne postoje royalty naknade, nema ograničenja korištenja i nema zahtjeva za atribuciju izvan onoga što MIT licenca specificira.
Cijeli izvorni kod je hostiran na GitHubu, a doprinosi su dobrodošli: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Zahtjevi sustava
| Zahtjev | Detalj |
|---|---|
| Java verzija | 21 or later |
| Ovisnosti | Nema (čisti Java) |
| Platforme | Bilo koja platforma koja pokreće JVM |
| Alat za izgradnju | Maven (preporučeno) |
Početak rada
Evo resursa koji će vam pomoći da započnete:
- Dokumentacija – sveobuhvatni vodiči i API pregledi dostupni su na Aspose.3D stranica dokumentacije.
- Baza znanja – praktični članci s uputama i savjeti za rješavanje problema u Aspose.3D KB.
- API referenca – detaljna referenca klasa i metoda na Aspose.3D API Reference.
- Izvorni kod – pregledajte i doprinesite na GitHub.
- Maven Central – paket je objavljen kao
com.aspose:aspose-3d-fossna Maven Centralu.
Uobičajeni slučajevi upotrebe
Evo nekoliko praktičnih scenarija u kojima Aspose.3D FOSS za Java dobro odgovara:
Cjevovodi za konverziju formata
Mnogi timovi primaju 3D resurse u jednom formatu, ali im trebaju u drugom. Dizajnerski tim može raditi u FBX-u, dok web tim treba glTF. Biblioteka vam omogućuje izgradnju automatiziranih cjevovoda za konverziju:
// 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
Prije integracije 3D sredstva u svoju aplikaciju, možda ćete željeti provjeriti njegov sadržaj – provjerom broja čvorova, verifikacijom geometrije ili potvrđivanjem da su očekivani elementi prisutni:
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");
}
}
Sastavljanje scene
Možete učitati više modela i kombinirati ih u jednu scenu:
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");
Što slijedi
U nadolazećim objavama obradit ćemo:
- Detaljno istraživanje ključnih značajki scene-graph API-ja, materijala i matematičkih alata.
- Praktični vodič za rad s svakim podržanim 3D formatom – OBJ, STL, glTF i FBX – uključujući opcije učitavanja/spremanja i obrasce grupne konverzije.
Ostanite u toku i slobodno istražite biblioteku te podijelite svoje povratne informacije na GitHubu.