Ö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ályokszerep
SceneLegmagasabb szintű konténer; a jelenet grafika gyökere
NodeA névleges pozíció a fa; tartja átalakításokat és gyermek csomópontok
EntityAbsztrakt alap a csomópontokhoz kötött vizuális tárgyak számára
MeshPolygonális geometria - függönyök, arcok, normálok
CameraVirtuális kamera definíció
TransformHelyi fordítás, forgatás és skála egy csomóponthoz
GlobalTransformA 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átumTöltő opciókMegtakarítás opciók
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
GLT / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptions(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átumkiterjesztésImportálvaexportjegyzetek
OBJ.objIgenIgenMTL anyagok
STL.stlIgenIgenBináris + ASCII
GTTF 2.0.gltfIgenIgenJSON formátum
GLB.glbIgenIgenBináris glTF a GltfSaveOptions segítségével
FBX.fbxIgenNem nemCsak 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ényRészletek
Java verzió21 or later
függőségekA Tiszta Java (Tiszte Java)
PlatformokBármely platform, amely fut egy JVM
építőeszközökMaven ( 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.0 A 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.