Örömmel jelentjük be, hogy elérhető Aspose.3D FOSS for Java – egy ingyenes, nyílt forráskódú könyvtár, amely 3D fájlformátumokkal való munkához használható Java alkalmazásokban. Tiszta Java megoldásként épült, natív függőségek nélkül, a könyvtár a Java 21 és újabb verziókon fut, így széles körű projektek és környezetek számára elérhető.
Ez a bejegyzés bemutatja, mit kínál a könyvtár, hogyan kezdjünk hozzá, és merre tovább.
Mi a Aspose.3D FOSS Java?
Aspose.3D FOSS for Java egy könnyűsúlyú 3D fájlfeldolgozó könyvtár, amely a MIT licenc. Olyan jelenetgrafikon API-t biztosít, amely lehetővé teszi 3D modellek betöltését, vizsgálatát, átalakítását és mentését több széles körben használt formátumban. A könyvtár teljes egészében Java nyelven íródott, és nem igényel külső natív bináris fájlokat vagy platformspecifikus konfigurációkat.
A forráskód elérhető a GitHubon: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Főbb kiemelések
- Tiszta Java – nincs JNI, nincs natív könyvtár, nincs platformkorlátozás.
- Java 21+ kompatibilis.
- MIT licensed – használhatod személyes, kereskedelmi vagy saját tulajdonú projektekben korlátozások nélkül.
- Scene-graph architektúra – egy ismerős fa a csomópontok, hálók, kamerák és anyagokból.
- Többformátumú támogatás – OBJ, STL, glTF 2.0 és GLB fájlok olvasása és írása; FBX fájlok olvasása.
Gyors kezdés
Maven telepítés
Adja hozzá a következő függőséget a pom.xml:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Az első konverziód
A legegyszerűbb felhasználási eset egy 3D fájl betöltése az egyik formátumban, majd mentése egy másikba. Íme egy kétsoros konverzió OBJ-ből STL-be:
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");
}
}
A Scene class a központi belépési pont. Hívja meg Scene.fromFile() egy fájlúttal a modell betöltéséhez, majd hívja meg save() a célúttal. A könyvtár a formátumot a fájl kiterjesztéséből következteti.
Jelenet felépítése a semmiből
Jeleneteket programozottan is felépíthet:
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");
}
}
Ez létrehoz egy új jelenetet, a gyökér alá hozzáad egy “Box” nevű gyermekcsomópontot, a (1, 2, 3) koordinátákra helyezi, és a végeredményt glTF fájlként exportálja.
Betöltés formátum-specifikus beállításokkal
Amikor finomabb irányításra van szükség a betöltési folyamat során, minden formátum egy dedikált opciós osztályt biztosít. Például egy STL fájl betöltése explicit beállításokkal:
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");
}
}
A Scene.fromFile() statikus metódus elfogadja a betöltési opció típusok bármelyikét: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, vagy FbxLoadOptions.
A jelenet gráf bejárása
Miután egy jelenet betöltődött, bejárhatja a csomópontfát, hogy megvizsgálja vagy módosítsa annak tartalmát:
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());
}
}
}
}
Ez a minta hasznos hibakereséshez, a modell tartalmáról szóló jelentések készítéséhez, vagy a jelenet egyes részeinek szelektív módosításához az újraexportálás előtt.
Transzformációk alkalmazása
A csomópontok 3D térben történő elhelyezése a Transform objektumon minden 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");
}
}
Az átalakítások a szabványos szülő-gyermek öröklődési modellnek megfelelően működnek: egy gyermek világkoordináta‑pozíciója a helyi transzformációja és az összes ős transzformációjának kombinációja a gyökérig.
Mi van benne
A könyvtár egy fókuszált képességkészlettel érkezik, amely a 3D scene-graph modell köré épül.
Jelenetgrafikon
A jelenetgrafikon az API gerince. Minden 3D fájl egy fa struktúraként van ábrázolva:
| Osztály | Szerepkör |
|---|---|
Scene | Legfelső szintű konténer; a jelenetgrafikon gyökere |
Node | A fa egy elnevezett pozíciója; tartalmaz transzformációkat és gyermekcsomópontokat |
Entity | Absztrakt alap a csomópontokhoz csatolt vizuális objektumok számára |
Mesh | Poligonális geometria – csúcsok, felületek, normálok |
Camera | Virtuális kamera definíciója |
Transform | Helyi eltolás, forgatás és méretezés egy csomóponthoz |
GlobalTransform | Kiszámított világkoordináta-transzformáció |
Anyagok
A könyvtár egy PBR (Physically Based Rendering) anyagmodellt biztosít:
- PbrMaterial – fizikailag alapú renderelés anyag albedóval, fémességgel, durvasággal, emisszív színnel és átlátszósággal. Ez az egyetlen konkrét anyag osztály, amely a Java kiadásban elérhető.
Matematikai segédprogramok
A com.aspose.threed A csomag tartalmazza a lényeges matematikai primitíveket:
- Vector3 – 3 komponensű vektor pozíciókhoz, irányokhoz és színekhez.
- Matrix4 – 4x4-es transzformációs mátrix.
- Quaternion – forgatás reprezentációja.
- BoundingBox – tengely-alapú határoló doboz térbeli lekérdezésekhez.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Betöltési és mentési beállítások
Minden formátumnak saját opcióosztályai vannak, amelyekkel szabályozhatja az import és export viselkedését:
| Formátum | Beállítások betöltése | Beállítások mentése |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | – (csak importálás) |
Például a glTF exportálásához szépen formázott JSON-nal és megfordított koordináta-rendszerrel:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Támogatott formátumok
Az alábbi táblázat összefoglalja azokat a formátumokat, amelyeket a Aspose.3D FOSS a Java számára olvasni és írni tud.
| Formátum | Kiterjesztés | Importálás | Exportálás | Megjegyzések |
|---|---|---|---|---|
| OBJ | .obj | Igen | Igen | MTL anyagokkal |
| STL | .stl | Igen | Igen | Bináris + ASCII |
| glTF 2.0 | .gltf | Igen | Igen | JSON formátum |
| GLB | .glb | Igen | Igen | Bináris glTF a GltfSaveOptions segítségével |
| FBX | .fbx | Igen | Nem | Csak importálás |
Az OBJ, STL, glTF és GLB egyaránt támogatja a betöltést és a mentést. Az FBX csak importálásra van támogatva.
Formátumválasztási útmutató
A megfelelő formátum kiválasztása az Ön felhasználási esetétől függ:
- OBJ ideális, ha maximális kompatibilitásra van szükség a 3D eszközök között. Szinte minden modellező alkalmazás képes olvasni és írni az OBJ-t. Jól működik háló adatcseréhez, de csak alapvető anyaginformációkat hordoz a kísérő MTL fájlokban.
- STL a 3D nyomtatási munkafolyamatok számára választott formátum. Nyers háromszögelt geometriát tárol anyagok vagy jelenet hierarchia nélkül, ami pontosan azt a formátumot jelenti, amit a szeletelő szoftver elvár. Ha a folyamatod egy 3D nyomtatónál ér véget, az STL a legegyszerűbb választás.
- glTF a modern szabvány a webes és valós idejű 3D-hez. Támogatja a PBR anyagokat, a teljes jelenet hierarchiákat, és hatékony átvitelre lett tervezve. Használja a glTF-et webalapú nézők építésekor, a three.js vagy a Babylon.js használatakor, vagy bármely valós idejű renderelési csővezeték célzásakor.
- FBX mélyen integrálódik a játékfejlesztés és a digitális tartalomkészítési munkafolyamatokba. Támogatja a gazdag jelenet adatokat, beleértve a hierarchiákat és anyagokat. Aspose.3D FOSS for Java támogatja az FBX-et. csak importálás – használd FBX eszközök betöltésére és más formátumokra való konvertálásukhoz.
Ismert korlátozások
Fontos megjegyezni, hogy Scene.render() van nem támogatott a FOSS kiadásban. Ennek a metódusnak a meghívása egy UnsupportedOperationException. A könyvtár fájl-alapú 3D feldolgozásra van tervezve – betöltés, manipulálás, átalakítás és modellek mentése – a valós idejű megjelenítés helyett a kijelzőn.
Nyílt forráskód és licencelés
Aspose.3D FOSS for Java a következő licenc alatt kerül kiadásra MIT License. Ez azt jelenti, hogy szabadon tehetsz:
- Használja a könyvtárat kereskedelmi és tulajdonosi alkalmazásokban.
- Módosítsa a forráskódot, hogy megfeleljen az igényeinek.
- Terjeszd a könyvtárat saját szoftvered részeként.
Nincsenek jogdíjak, használati korlátok, és a MIT licenc által előírtakon túl nincs forrásmegjelölési kötelezettség.
A teljes forráskód a GitHubon van tárolva, és a közreműködések szívesen fogadottak: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Rendszerkövetelmények
| Követelmény | Részlet |
|---|---|
| Java verzió | 21 or later |
| Függőségek | Nincs (tiszta Java) |
| Platformok | Bármely platform, amely JVM-et futtat |
| Építőeszköz | Maven (ajánlott) |
Első lépések
Itt vannak a források, amelyek segítenek elindulni:
- Dokumentáció – átfogó útmutatók és API áttekintések érhetők el a Aspose.3D dokumentációs oldal.
- Tudásbázis – gyakorlati útmutató cikkek és hibaelhárítási tippek a Aspose.3D KB.
- API referencia – részletes osztály- és metódusreferencia a Aspose.3D API-referencia.
- Forráskód – böngészhet és hozzájárulhat itt GitHub.
- Maven Central – a csomag közzétéve mint
com.aspose:aspose-3d-fossa Maven Centralon.
Gyakori felhasználási esetek
Íme néhány gyakorlati forgatókönyv, ahol a Aspose.3D FOSS a Java számára jól illeszkedik:
Formátumkonverziós csővezetékek
Sok csapat egy formátumban kap 3D eszközöket, de másikra van szükségük. Egy tervezőcsapat dolgozhat FBX-ben, míg a webcsapatnak glTF-re van szüksége. A könyvtár lehetővé teszi automatizált konverziós csővezetékek felépítését:
// 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
Mielőtt egy 3D-eszközt integrálnál az alkalmazásodba, érdemes lehet ellenőrizni a tartalmát – számolni a csomópontok számát, ellenőrizni a geometriát, vagy megerősíteni, hogy a várt elemek jelen vannak:
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");
}
}
Jelenet összeállítása
Betölthetsz több modellt, és egyetlen jelenetbe kombinálhatod őket:
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");
Mi következik
A következő bejegyzésekben a következőket tárgyaljuk:
- Mélyreható bemutató a scene-graph API, anyagok és matematikai segédeszközök kulcsfontosságú funkcióiról.
- Gyakorlati útmutató az egyes támogatott 3D formátumokkal – OBJ, STL, glTF és FBX – való munkához, beleértve a betöltési/mentési lehetőségeket és a kötegelt konverziós mintákat.
Maradj velünk, és nyugodtan fedezd fel a könyvtárat, valamint oszd meg visszajelzésed a GitHubon.