Jsme rádi, že jsme se dozvěděli dostupnost 3D FOSS pro Java - knihovna zdarma, open-source pro práci s 3D formáty souborů v aplikacích Java. Postaven jako čisté řešení Java bez závislosti na původu, knihovna běží na Java 21 a později, což je přístupné k širokému spektru projektů a prostředí.

Tento příspěvek se zabývá tím, co knihovna nabízí, jak začít a kam jít.

Co je to 3D FOSS pro Java?

Aspose.3D FOSS pro Java je lehká 3D knihovna zpracování souborů publikovaná v rámci Licence MÍ.Zajišťuje scénogram API, který vám umožňuje nahrávat, kontrolovat, transformovat a ukládat 3D modely v několika široce používaných formátech. knihovna je plně napsána v Java a nevyžaduje žádné externí domorodé binary nebo platformové specifické konfigurace.

Kód je k dispozici na GitHub: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java / Zobrazit více informací

Klíčové zvýšení

  • Čistá Java - žádné JNI, žádné domorodé knihovny, žádná omezení platformy.
  • Java 21+ a kompatibilní.
  • Mít licencované - použít je v osobních, obchodních nebo vlastnických projektech bez omezení.
  • Scénogram architektury - známý strom uzlin, mezet, kamer a materiálů.
  • Multiformátová podpora - číst a psát OBJ, STL, glTF 2.0 a GLB soubory; čtení FBX souborů.

rychlý start

Maven instalace

Přidejte následující závislost na vašem pom.xml:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.5.0</version>
</dependency>

Vaše první konverze

Nejjednodušší případ použití je načítání 3D souboru v jednom formátu a uložení do jiného. zde je dvojí konverze z OBJ na 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 to Scene Klasa je ústředním vstupním bodem. volání Scene.fromFile() s cestou souboru k načtení modelu, pak volejte save() s cílovou cestou. knihovna vloží formát z rozšíření souboru.

Vytvoření scény ze Scratch

Můžete také vytvořit scény programováním:

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");
    }
}

To vytváří novou scénu, přidává dětský uzel s názvem “Box” pod kořenem, umístí ho na koordináty (1, 2, 3), a exportuje výsledek jako glTF soubor.

Nabíjení s formátovými specifickými možnostmi

Když potřebujete lepší kontrolu nad procesem nabití, každý formát poskytuje třídu možností. Například, nahrávání souboru STL s výslovnými možnostmi:

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 to Scene.fromFile() Statická metoda akceptuje jakýkoli typ opce zařazení: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,nebo FbxLoadOptions.

Přes scénickou grafiku

Jakmile je scéna nabitá, můžete procházet stromem node a zkontrolovat nebo upravit jeho obsah:

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());
            }
        }
    }
}

Tento vzor je užitečný pro debuzování, generování zpráv o obsahu modelu nebo selektivně mění části scény před opětovným vývozem.

Přijímání transformátorů

Posuzování uzlin v 3D prostoru se provádí prostřednictvím Transform Objekt na každém 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");
    }
}

Transformy následují standardní model dědictví rodičů a dětí: světové prostorové postavení dítěte je kombinací jeho místního transformace a každý předek se transformuje až do kořene.

Co je zahrnuto

Knihovna plavidla s zaměřeným souborem možností navržených kolem 3D scénografického modelu.

Scénář grafu

Graf scény je záda API. Každý 3D soubor je reprezentován jako stromová struktura:

třídaRole
SceneKontejner na nejvyšší úrovni; kořen scénického grafu
NodeJmenovaná poloha v stromu; drží transformy a dětské uzly
EntityAbstraktní základ pro vizuální objekty připojené k uzlinám
MeshPolygonální geometrie - vertikály, obličeje, normálové
CameraDefinice virtuální kamery
TransformLokální překlad, rotace a měřítko pro nůž
GlobalTransformSvětová transformace v počítačovém prostoru

Materiály

Knihovna poskytuje materiálový model PBR (Fyzicky založené renderování):

  • PbrMaterial - fyzicky založený renderovací materiál s albedo, kovovou tvarem, hrubostí, emisií barvy a průhledností.Toto je jediná třída konkrétních materiálů dostupná v Java edice.

Matematické užitky

a to com.aspose.threed Součástí balíčku jsou základní matematické primitivy:

  • Vektor 3 - 3 komponentní vektor pro polohy, směry a barvy.
  • Matrix 4 4x4 transformace matriky.
  • Kvadranty - rotační reprezentace.
  • BoundingBox - okrajová krabička pro prostorové dotazy.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)

Nabíjení a uložení možností

Každý formát má speciální třídy možností, které vám umožní kontrolovat chování dovozu a vývozu:

FormátNabíjecí možnostiShromažďování možností
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
GLTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptions(pouze v případě dovozu)

Například export glTF s pěkně vytisknutým JSON a flipped koordinátní systém:

GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);

scene.save("output.gltf", opts);

Podporované formáty

Následující tabulka shrnuje formáty, které Aspose.3D FOSS pro Java může číst a psát.

FormátRozšířenídovozuVývozPoznámky
OBJ.objAno anoAno anoS MTL materiály
STL.stlAno anoAno anoBinární + ASCII
GTTF 2.0.gltfAno anoAno anoJSON formát
GLB.glbAno anoAno anoBinární glTF prostřednictvím GltfSaveOptions
FBX.fbxAno anoNepouze dovoz

OBJ, STL, glTF a GLB podporují jak nabíjení, tak úsporu. FBX je podporován pouze pro dovoz.

Formát výběrového průvodce

Výběr správného formátu závisí na vašem použití:

  • OBJ je ideální, když potřebujete maximální kompatibilitu přes 3D nástroje. Téměř každá aplikace modelování může číst a psát OBJ. To funguje dobře pro výměnu dat mezh ale přináší pouze základní materiální informace prostřednictvím souborů MTL společníka.
  • STL je formát volby pro 3D tiskové pracovní toky. Uloží surovou triangulovanou geometrii bez materiálů nebo hierarchie scény, což je přesně to, co od slider software očekává. Pokud se váš potrubí končí na 3d tiskárně, STL je jednoduchá volba.
  • Gltf je moderní standard pro web a 3D v reálném čase. podporuje PBR materiály, plné scénické hierarchie, a je navržen pro efektivní přenos. Použijte glTF při budování webových prohlížečů, pracovat s three.js nebo Babylon.js, nebo cílování jakékoli trubice rendering v realovém čase .
  • FBX je hluboce integrovaný do herního rozvoje a digitálního vytváření obsahu pracovních toků. podporuje bohaté scénní údaje včetně hierarchie a materiálů . Aspose.3D FOSS pro Java podporují FBX pouze dovoz - použijte ho k načtení aktiv FBX a konvertujte je do jiných formátů.

Známé omezení

Je důležité si uvědomit, že Scene.render() Je to Nepodporuje se V tomto článku se dozvíte, že tento způsob hodí do UnsupportedOperationException.Knihovna je navržena pro 3D zpracování na bázi souborů - načítání, manipulace, transformace a úspory modelů – namísto reálného renderování displeje.

Open Source a licence

Aspose.3D FOSS pro Java je vydán pod Licence MIT.To znamená, že jste svobodní:

  • Využijte knihovnu v komerčních a vlastních aplikacích.
  • Změňte zdrojový kód, aby vyhovoval vašim potřebám.
  • Rozdělte knihovnu jako součást vlastního softwaru.

Neexistují žádné poplatky za royalty, žádné omezení používání a žádná požadavky na přidělení mimo to, co MIT licence stanoví.

Celý zdrojový kód je hostován na GitHub a příspěvky jsou vítány: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java / Zobrazit více informací

Systémové požadavky

PožadavekDetailní
Java verze21 or later
závislostNení to čistá Java (Java)
platformyJakákoli platforma, která běží na JVM
Stavba nástrojeMaven (důležité pro použití)

Začíná se

Zde jsou zdroje, které vám pomohou vstát a běhat:

  • Dokumentace - komplexní průvodce a API chodníky jsou k dispozici na Webová stránka ASPOSE.3D.
  • znalostní základna - praktické jak-to články a řešení problémů tipy v Třetí díl 3D KB.
  • Reference API - podrobná třída a metodická reference na Aspose.3D API Reference.
  • zdrojový kód - přehrávat a přispívat k GitHub.
  • Maven Centrální - balíček je zveřejněn jako org.aspose:aspose-3d-foss:26.5.0 V centru Maven.

běžné případy použití

Zde jsou některé praktické scénáře, kde Aspose.3D FOSS pro Java dobře vyhovuje:

Formát konverzní potrubí

Mnoho týmů dostává 3D aktivy v jednom formátu, ale potřebuje je v jiném. Projektový tým může pracovat na FBX a webový tím potřeboval glTF. Knihovna vám umožňuje vytvořit automatizované konverzní potrubí:

// 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

Před začleněním 3D aktiv do aplikace můžete chtít ověřit jeho obsah - kontrolovat počty uzlin, ověření geometry nebo potvrdit, že očekávané prvky jsou přítomny:

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");
    }
}

Scénář shromáždění

Můžete si stáhnout několik modelů a spojit je do jedné scény:

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");

Co je následující

V nadcházejících příspěvcích se budeme zabývat:

  • Hluboké potápění do klíčových funkcí scénografického API, materiálů a matematických nástrojů.
  • Praktický průvodce pro práci s každým podporovaným 3D formátem - OBJ, STL, glTF a FBX - včetně možností nabíjení / ušetření a konverzních vzorů.

Zůstaňte vyčerpaní a cítit se svobodně prozkoumat knihovnu a sdílet své zpětné vazby na GitHub.