Örömmel jelentjük be, hogy a rendelkezésre állás 3D FOSS a Java-hoz - egy ingyenes, nyílt forráskódú könyvtár a 3D fájlformátumokkal való munka Java alkalmazásokban. épült mint tiszta Java megoldás nem származó függőségek, a könyvtára fut a Java 21 és később, így elérhető széles körű projektek és környezetek.
Ez a bejegyzés átmegy, mit kínál a könyvtár, hogyan kell elkezdeni, és honnan menni.
Mi az a 3D FOSS Java?
Aspose.3D FOSS for Java egy könnyű 3D fájlfeldolgozó könyvtár, amelyet a licenc. A jelenet-graf API, amely lehetővé teszi a feltöltés, ellenőrzése, átalakítása és mentése 3D modellek több széles körben használt formátumok. A könyvtár teljes mértékben íródott Java és nem igényel külső anyanyelvű bináris vagy platform-specifikus konfigurációk.
A forráskód elérhető a GitHub-on: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Kulcsfontosságú hangsúlyok
- Tiszta Java - nincs JNI, nincsenek hazai könyvtárak, nincs platformkorlátozás.
- Java 21+ kompatibilis az.
- MIT licenc - személyes, kereskedelmi vagy tulajdonos projektekben korlátozás nélkül használja.
- Színházi grafikus építészet - ismerős fa csomópontok, mezők, kamerák és anyagok.
- Többformátumú támogatás - olvassa el és írja le az OBJ, STL, glTF 2.0 és GLB fájlokat; olvasson FBX fázisokat.
Gyors indulás
Maven telepítés
Adja meg a következő függőséget az Ön számára pom.xml:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Az első konverziója
A legegyszerűbb használati eset az, hogy egy 3D fájlt töltse le egy formátumban és mentse meg a másikba. Itt van egy két vonalú konverzió OBJ-ről 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");
}
}
A The Scene A fő bejárati pont a tanfolyam. hívás Scene.fromFile() egy fájlút, hogy töltse fel a modellt, majd hívja save() A könyvtár a fájl kiterjesztésből adja be a formátumot.
A Scratch színpadának építése
A jelenetek programozásával is felépíthetők:
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 új jelenetet hoz létre, a gyökér alatt “Box” nevű gyermekcsomót ad hozzá, koordinátákban (1, 2, 3), és az eredményt glTF fájlként exportálja.
Formátum-specifikus opciókkal való feltöltés
Ha finomabb ellenőrzést igényel a töltés folyamatánál, minden formátum egy dedikált opciókat biztosít. Például egy STL fájlt feltöltve kifejezett lehetőségekkel:
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 The Scene.fromFile() A statikus módszer elfogadja a terhelési lehetőség bármely típusát: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,vagy FbxLoadOptions.
A színpadon át a grafikon
Miután egy jelenet töltött, akkor sétálhat a csomópont fa ellenőrizni vagy módosítani 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 mintázat hasznos a debugáláshoz, a modell tartalmak jelentéseinek generálására vagy egy jelenet részének szelektíven módosítására az újraexportálás előtt.
Transformáció alkalmazása
A 3D térben lévő csomópontok elhelyezése a Transform tárgyak minden egyes 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");
}
}
A transzformációk a szülő-gyermek öröklési modelljének megfelelnek: egy gyermek világtérségi pozíciója a helyi átalakulás kombinációja, és minden őse a gyökereig áthelyez.
Mi tartalmazza
A könyvtár hajók egy összpontosított készlet képességek tervezett körül a 3D jelenet-grafikus modell.
Színház grafika
A jelenet grafika az API hátterében. Minden 3D fájl egy fa szerkezetként jelenik meg:
| osztályok | szerep |
|---|---|
Scene | Legmagasabb szintű konténer; a jelenet grafika gyökere |
Node | A névleges pozíció a fa; tartja átalakításokat és gyermek csomópontok |
Entity | Absztrakt alap a csomópontokhoz kötött vizuális tárgyak számára |
Mesh | Polygonális geometria - függönyök, arcok, normálok |
Camera | Virtuális kamera definíció |
Transform | Helyi fordítás, forgatás és skála egy csomóponthoz |
GlobalTransform | A világűr-transzformáció számítógépes |
anyagok
A könyvtár egy PBR (fizikailag alapuló renderelés) anyagmodellet nyújt:
- PbrMaterial - fizikailag alapuló rendering anyag albedo, fémesség, durva, kibocsátó szín és átláthatóság. Ez az egyetlen konkrét anyag osztály elérhető a Java kiadásban.
Matematika segédeszközök
A The com.aspose.threed A csomag tartalmazza az alapvető matematikai primitív:
- Vektor 3 - 3 komponens vector pozíciókhoz, irányokhoz és színekhez.
- Matrix 4 4x4 átalakítási matrix.
- negyedév A rotációs képviselet.
- BoundingBox - a tengelyes kötődoboz a tér kérésekhez.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Töltse és mentse opciókat
Minden formátumban vannak szentelt opciós osztályok, amelyek lehetővé teszik az import és export viselkedés ellenőrzését:
| formátum | Töltő opciók | Megtakarítás opciók |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GLT / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (csak az import és a behozás) |
Például a glTF kiviteléhez egy meglehetősen nyomtatott JSON és egy flipped koordinát 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 Aspose.3D FOSS for Java olvasható és írátható.
| formátum | kiterjesztés | Importálva | export | jegyzetek |
|---|---|---|---|---|
| OBJ | .obj | Igen | Igen | MTL anyagok |
| STL | .stl | Igen | Igen | Bináris + ASCII |
| GTTF 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 nem | Csak importálva |
Az OBJ, a STL, az glTF és a GLB mind a töltés, mind pedig a megtakarítás támogatása.
Format kiválasztási útmutató
A megfelelő formátum kiválasztása az Ön használatának esete függ:
- OBJ Ideális, ha maximális kompatibilitást igényel 3D eszközökön keresztül. Szinte minden modellező alkalmazás olvashat és írhat OBJ. jól működik a mesh adatcseréjére, de csak alapvető anyaginformációkat hordoz az MTL fájlokon keresztül.
- STL A 3D nyomtatás munkafolyamatok kiválasztásának formátumát. Anyagok vagy jelenet hierarchiája nélkül nyers háromszögű geometriát tárol, ami pontosan az a szoftver, amire várnak. Ha a csővezeték egy 3d nyomtón végződik, akkor a STL egyszerű választás.
- GTTF A modern szabvány a web és valós idejű 3D. Támogatja PBR anyagok, teljes jelenet hierarchia, és célja hatékony továbbítás. Használja glTF építésénél web-alapú nézők, dolgozik a three.js vagy Babylon.JS, vagy célzott valamilyen valóságos időben rendering csővezeték.
- FBX mélyen integrálódik a játékfejlesztés és a digitális tartalomteremtés munkafolyamataiba. támogatja a gazdag jelenetadatokat, beleértve a hierarchia és az anyagok. Aspose.3D FOSS for Java támogat FBX Csak importálva - használja, hogy töltse fel FBX eszközöket és konvertálja őket más formátumok.
Ismeretes korlátozások
Fontos megjegyezni, hogy Scene.render() Az a nem támogatott A FOSS kiadásban. hívva ezt a módszert dob egy UnsupportedOperationException.A könyvtár a fájl alapú 3D-feldolgozásra tervezték - feltöltés, manipuláció, átalakítás és mentési modellek - ahelyett, hogy valós idejű renderelés egy kijelzőre.
Nyílt forrás és licenc
Aspose.3D FOSS for Java kiadás alatt a MIT engedély.Ez azt jelenti, hogy Ön szabadon:
- A könyvtárat kereskedelmi és tulajdonosi alkalmazásokban használjuk.
- Változtassa meg a forráskódot, hogy megfeleljen az Ön igényeinek.
- A könyvtárat a saját szoftverének részeként osztja meg.
Nincs királyi díj, nincs használati korlátozás és nem léteznek odaítélési követelmények azon túl, amit a MIT licencben megjelöl.
A teljes forráskódot a GitHub-on tárolja, és hozzájárulások üdvözülnek: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Rendszerkövetelmények
| követelmény | Részletek |
|---|---|
| Java verzió | 21 or later |
| függőségek | A Tiszta Java (Tiszte Java) |
| Platformok | Bármely platform, amely fut egy JVM |
| építőeszközök | Maven ( ajánlott) |
Kezdődik a
Íme a források, amelyek segítenek felállni és futni:
- Dokumentáció - átfogó útmutatók és API-távok elérhetőek a Az ASPOSE.3D dokumentáció honlapja.
- Tudásbázis - gyakorlati, hogyan kell a cikkeket és problémamegoldó tippek az 3D KB.
- API referenciák - részletes osztály és módszer referenciája a Az ASPOSE.3D API referenciája.
- Forrás kód - böngészés és hozzájárulás a GitHub.
- Maven Központi - a csomagot úgy közzétették, mint
org.aspose:aspose-3d-foss:26.5.0A Maven központi részén.
Általános használati esetek
Íme néhány gyakorlati forgatókönyv, ahol Aspose.3D FOSS a Java jól illeszkedik:
Átalakítási csővezetékek formátum
Sok csapat kap 3D eszközöket egy formátumban, de szükség van rájuk egy másik. A tervezési csapat dolgozhat FBX-ben, míg a webes csapat glTF szükséges.:
// 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özöt beépítené az alkalmazásba, esetleg a tartalmát meg akarja validáni - pontszámok ellenőrzése, geometria ellenőrzésével vagy annak megerősítésével, 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");
}
}
Színház asszisztencia
Több modellt tölthet fel, és egyesítheti őket egy jelenetbe:
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 a következő
A következő bejegyzésekben a következőkre fogunk felfedezni:
- A mélyen merül a kulcsfontosságú jellemzői a jelenet-graf API, anyagok és matematikai eszközök.
- Egy gyakorlati útmutató minden támogatott 3D formátummal - OBJ, STL, glTF és FBX - dolgozni, beleértve a rakodási/megtakarítási lehetőségeket és a csomag konverziós mintákat.
Legyen ragyogó, és légy szabadon felfedezni a könyvtárat, valamint megosztani visszajelzését a GitHub.