Uzbuđeni smo što najavljujemo dostupnost Aspose.3D FOSS for Java – besplatna, open‑source biblioteka za rad sa 3D formatima fajlova u Java aplikacijama. Izgrađena kao čisto Java rešenje bez nativnih zavisnosti, biblioteka radi na Java 21 i novijim, čineći je dostupnom širokom spektru projekata i okruženja.
Ovaj post prolazi kroz ono što biblioteka nudi, kako započeti i kuda dalje.
Šta je Aspose.3D FOSS za Java?
Aspose.3D FOSS for Java je lagana biblioteka za obradu 3D fajlova objavljena pod MIT license. Pruža scene‑graph API koji vam omogućava da učitate, pregledate, transformišete i sačuvate 3D modele kroz nekoliko široko korišćenih formata. Biblioteka je u potpunosti napisana u Java i ne zahteva eksterne nativne binarne fajlove niti platformu‑specifične konfiguracije.
Izvorni kod je dostupan na GitHub-u: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Ključni istaknuti detalji
- Čist Java – bez JNI, bez nativnih biblioteka, bez ograničenja platforme.
- Java 21+ kompatibilan.
- MIT licenciran – koristite ga u ličnim, komercijalnim ili vlasničkim projektima bez ograničenja.
- Arhitektura scene-grafa – poznato stablo čvorova, mreža, kamera i materijala.
- Podrška za više formata – čitanje i pisanje OBJ, STL, glTF 2.0 i GLB fajlova; čitanje FBX fajlova.
Brzi početak
Maven instalacija
Dodajte sledeću zavisnost 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 fajla u jednom formatu i njegovo čuvanje u drugom. Evo dvostruke linijske 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 klasa je centralna tačka ulaza. Pozovite Scene.fromFile() sa putanjom do fajla da učitate model, zatim pozovite save() sa odredišnom putanjom. Biblioteka zaključuje format iz ekstenzije fajla.
Izgradnja scene od nule
Možete takođe programatski konstruisati 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 kreira novu scenu, dodaje čvor podređen pod nazivom “Box” ispod korena, postavlja ga na koordinate (1, 2, 3) i izvozi rezultat kao glTF fajl.
Učitavanje sa opcijama specifičnim za format
Kada vam je potrebna finija kontrola nad procesom učitavanja, svaki format pruža posebnu klasu opcija. Na primer, učitavanje STL fajla sa 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 prihvata bilo koji od tipova opcija učitavanja: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, ili FbxLoadOptions.
Prolazak kroz graf scene
Kada je scena učitana, možete proći kroz stablo čvorova da pregledate ili izmenite njen 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, generisanje izveštaja o sadržaju modela ili selektivno menjanje delova scene pre ponovnog izvoza.
Primena transformacija
Pozicioniranje čvorova u 3D prostoru se vrši kroz Transform objekat 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 prate standardni model nasleđivanja roditelj‑dete: pozicija deteta u svetskom prostoru je kombinacija njegove lokalne transformacije i svih transformacija pretka do korena.
Šta je uključeno
Biblioteka isporučuje fokusiran skup mogućnosti dizajniranih oko 3D scene‑grafik modela.
Grafik scene
Grafik scene je kičma API‑ja. Svaka 3D datoteka je predstavljena kao struktura stabla:
| Klasa | Uloga |
|---|---|
Scene | Kontejner najvišeg nivoa; koren grafa scene |
Node | Imenovana pozicija u stablu; sadrži transformacije i podčvorove |
Entity | Apstraktna baza za vizuelne objekte prikačene na čvorove |
Mesh | Poligonalna geometrija – vrhovi, lica, normale |
Camera | Definicija virtuelne kamere |
Transform | Lokalna translacija, rotacija i skaliranje za čvor |
GlobalTransform | Izračunata transformacija u svetskom prostoru |
Materijali
Biblioteka pruža PBR (Physically Based Rendering) model materijala:
- PbrMaterial – materijal za fizički zasnovano renderovanje sa albedo, metalnošću, hrapavosti, emisivnom bojom i providnošć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 sa 3 komponente za pozicije, smerove i boje.
- Matrix4 – 4x4 трансформациона матрица.
- Quaternion – представљање ротације.
- BoundingBox – оквир ограничења поравнат са осама за просторне упите.
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 čuvanja
Svaki format ima posvećene klase opcija koje vam omogućavaju da kontrolišete ponašanje uvoza i izvoza:
| Format | Učitaj opcije | Sačuvaj opcije |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | – (samo uvoz) |
Na primer, da izvezete glTF sa lepo formatiranim JSON-om i preokrenutim koordinatnim sistemom:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Podržani formati
Sledeća tabela sumira formate koje Aspose.3D FOSS za Java može da čita i piše.
| Format | Ekstenzija | Uvoz | Izvoz | Napomene |
|---|---|---|---|---|
| OBJ | .obj | Da | Da | Sa 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 čuvanje. FBX je podržan samo za uvoz.
Vodič za izbor formata
Izbor pravog formata zavisi od vašeg slučaja upotrebe:
- OBJ je idealno kada vam je potrebna maksimalna kompatibilnost između 3D alata. Gotovo svaka aplikacija za modeliranje može čitati i pisati OBJ. Dobro funkcioniše za razmenu podataka o mrežama, ali prenosi samo osnovne informacije o materijalu kroz prateće MTL fajlove.
- STL je format po izboru za radne tokove 3D štampe. Čuva sirovu trianguliranu geometriju bez materijala ili hijerarhije scene, što je tačno ono što softver za sečenje očekuje. Ako vaš proces završava na 3D štampaču, STL je jednostavan izbor.
- glTF je moderan standard za web i real‑time 3D. Podržava PBR materijale, potpune hijerarhije scena i dizajniran je za efikasno prenošenje. Koristite glTF kada gradite web‑bazirane preglednike, radite sa three.js ili Babylon.js, ili ciljate bilo koji real‑time render pipeline.
- FBX je duboko integrisan u radne tokove razvoja igara i digitalnog kreiranja sadržaja. Podržava bogate podatke o sceni uključujući hijerarhije i materijale. Aspose.3D FOSS za Java podržava FBX samo uvoz – koristite ga za učitavanje FBX resursa 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 an UnsupportedOperationException. Biblioteka je dizajnirana za obradu 3D podataka zasnovanu na fajlovima – učitavanje, manipulaciju, transformaciju i čuvanje modela – umesto real-time renderovanja na ekran.
Open source i licenciranje
Aspose.3D FOSS za Java je objavljen pod MIT licenca. Ovo znači da ste slobodni da:
- Koristite biblioteku u komercijalnim i vlasničkim aplikacijama.
- Izmenite izvorni kod da odgovara vašim potrebama.
- Distribuirajte biblioteku kao deo vašeg sopstvenog softvera.
Ne postoje nikakve tantijeme, nema ograničenja upotrebe i nema zahteva za atribuciju osim onih koje definiše MIT licenca.
Pun izvorni kod je hostovan na GitHub-u, a doprinosi su dobrodošli: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Sistemski zahtevi
| Zahtev | Detalj |
|---|---|
| Java verzija | 21 or later |
| Zavisnosti | Nijedno (čisto 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 su dostupni na Aspose.3D sajt dokumentacije.
- Baza znanja – praktični vodiči i saveti za rešavanje problema u Aspose.3D KB.
- API referenca – detaljna referenca klasa i metoda na Aspose.3D API referenca.
- 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 se Aspose.3D FOSS za Java odlično uklapa:
Cevovodi za konverziju formata
Mnogi timovi primaju 3D resurse u jednom formatu, ali im je potreban drugi. Dizajnerski tim može raditi u FBX formatu, dok web tim zahteva glTF. Biblioteka vam omogućava da izgradite automatizovane cevi 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
Pre nego što integrišete 3D resurs u svoju aplikaciju, možda ćete želeti da validirate njegov sadržaj – proverom 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 kombinovati 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");
Šta sledi
U narednim postovima, pokrićemo:
- Detaljno istraživanje ključnih funkcija scene-graph API-ja, materijala i matematičkih alata.
- Praktični vodič za rad sa svakim podržanim 3D formatom – OBJ, STL, glTF i FBX – uključujući opcije učitavanja/čuvanja i obrasce grupne konverzije.
Ostanite u toku i slobodno istražite biblioteku i podelite svoje povratne informacije na GitHub-u.