Džiaugiamės galėdami paskelbti, kad prieinama Aspose.3D FOSS už Java - nemokama, atviros šaltinio biblioteka 3D failų formatui Java programose. pastatytas kaip grynas Java sprendimas be gimtojo priklausomybės, bibliotekoje veikia Java 21 ir vėliau, todėl ji prieinama įvairiems projektams ir aplinkoms.

Šis pranešimas eina per tai, ką biblioteka siūlo, kaip pradėti ir kur eiti iš čia.

Kas yra Aspose.3D FOSS Java?

Aspose.3D FOSS for Java yra lengva 3D failų apdorojimo biblioteka, paskelbta pagal Mitas licencija.Tai suteikia sceno-graf API, kuris leidžia jums įkrauti, patikrinti, transformavimą ir išsaugoti 3D modelius per keletą plačiai naudojamų formatus. biblioteka yra visiškai parašyta Java ir nereikalauja jokių išorinių gimtojo binarų ar platformos specifinių konfigūracijų.

Šaltinis kodas yra prieinamas GitHub: WEB WEB www.github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java

Pagrindiniai pabrėžimai

  • Švarus Java - nėra JNI, nėra vietinių bibliotekų, neturi platformos apribojimų.
  • Žymės: Java 21+ ir suderinamumo.
  • MIT licencijavimas - naudoti asmeniniuose, komercinėse ar nuosavybės projektuose be apribojimų.
  • Sceno grafikos architektūra - pažįstamas medis iš mazgų, židinių, kamerų ir medžiagų.
  • Multiformatyvinė parama - skaityti ir rašyti OBJ, STL, glTF 2.0 ir GLB failus; skaitykite FBX failą.

Greitas pradžia

Maven įdiegimas

Įtraukite šią priklausomybę į savo pom.xml:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-3d-foss</artifactId>
    <version>26.1.0</version>
</dependency>

Jūsų pirmoji konvertavimas

Paprasčiausias naudojimo atvejis yra įkrovimas 3D failo viename formato ir išsaugoti jį kitoje. čia yra dviejų linijų konversija iš OBJ į 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 Klasė yra centrinė įėjimo taškas. skambutis Scene.fromFile() su failo kelio įkrauti modelį, tada skambinti save() su tiksliniu maršrutu. biblioteka įvedama iš failų plėtinio formatu.

Sukurti scenos iš Scratch

Taip pat galite sukurti scenas programuojant:

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

Tai sukuria naują scenos, prideda vaiko mazgas pavadinimu “Box” po šaknis, pozicionuoja jį koordinatų (1, 2, 3), ir eksportuoja rezultatus kaip glTF failą.

Įkrovimas su specifiniais formatais

Kai jums reikia geresnio valdymo per įkrovimo procesą, kiekvienas formatas suteikia dedikuotą pasirinkimų klasę. Pavyzdžiui, įkrauti STL failą su aiškiomis galimybėmis:

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() Statinis metodas priima bet kurį iš įkrovimo variantų tipų: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,arba FbxLoadOptions.

Peržengti sceną grafas

Kai scena yra įkrauta, galite vaikščioti mazgo medžiu, kad patikrintumėte arba pakeistumite jo turinį:

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

Šis modelis yra naudingas debugavimo, ataskaitų apie modelių turinį generavimui arba scenos dalių selektyviai modifikacijai prieš pakartotinį eksportavimą.

Transformacijos įgyvendinimas

3D erdvėje pozicionuojami mazgai, kurie atliekami per Transform Kiekvieno objekto 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");
    }
}

Transformai laikosi standartinio tėvų ir vaiko paveldėjimo modelio: vaikas pasaulio erdvės padėtis yra jo vietinės transformacijos derinys, o visi protėviai transformuojami iki šaknų.

Kas yra įtraukta

Biblioteka laivai su sutelktas pajėgumų rinkinys, suprojektuotas aplink 3D sceno grafikos modelį.

Sceno grafika

Sceno grafikas yra API stuburas. Kiekvienas 3D failas atstovaujamas kaip medžio struktūra:

Klasėvaidmuo
SceneAukščiausio lygio konteineris; scenos grafiko šaknis
NodePavadinta vieta medyje; laikosi transformų ir vaiko mazgų
EntityAbstraktinė bazė vizualiems objektams, prijungtiems prie mazgų
MeshPoligoninė geometrija - vertikaliai, veidai, normalios
CameraVirtualios kameros apibrėžimas
TransformVietinis vertimas, rotacija ir skalė mazgo atžvilgiu
GlobalTransformPasaulio erdvės transformacija

medžiagos

Biblioteka pateikia PBR (fiziniu pagrindu grindžiamą atlyginimą) medžiagą:

  • PbrMaterial - fiziniu pagrindu atliekančio medžiagos su albedo, metalo, kruopštumo, išmetamo spalvos ir skaidrumo. tai vienintelė konkreti medžiaga klasė prieinama Java leidinyje.

Matematika Naudinga

Į The com.aspose.threed Į paketą įeina esminiai matematikos primityvai:

  • Vektoriai3 - 3 komponentų vektoris pozicijoms, kryptimams ir spalvoms.
  • Matrikos 4 4x4 transformacijos matrikos.
  • Ketvirtadienis Rotacinė atstovavimo forma.
  • BoundingBox - Ašių sujungimo dėžutė erdvinių užklausų srityje.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)

Atsisiųskite ir išsaugokite galimybes

Kiekvienas formatas turi skirtus pasirinkimo klases, kurios leidžia jums kontroliuoti importo ir eksporto elgesį:

FormatasĮkrovimo galimybėsIšsaugoti galimybes
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
GTTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptions(tik importuojami ir įvežami)

Pavyzdžiui, eksportuoti glTF su gana spausdinta JSON ir plyšimo koordinatų sistema:

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

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

Palaikomi formatių

Toliau pateikta lentelė apibendrinama formatais, kuriuos Aspose.3D FOSS for Java gali skaityti ir rašyti.

FormatasIšplėstinėImportoEksportoPastabos
OBJ.objTaipTaipMTL medžiagos
STL.stlTaipTaipDvejetainis + ASCII
GTTF 2.0.gltfTaipTaipJSON formatas
GLB.glbTaipTaipDvejetainis glTF per GltfSaveOptions
FBX.fbxTaipNeImportuojamas tik

OBJ, STL, glTF ir GLB palaiko tiek įkrovimą, tiek taupymą. FBX palaikoma tik importuojant.

Formato pasirinkimo vadovas

Tinkamo formato pasirinkimas priklauso nuo jūsų naudojimo atvejo:

  • OBJ idealiai tinka, kai jums reikia maksimalų suderinamumą tarp 3D įrankių. beveik kiekviena modeliavimo programa gali skaityti ir rašyti OBJ. Ji gerai veikia keitimui duomenimis, bet nešioja tik pagrindinę medžiagą per bendrininkų MTL failus.
  • STL 3D spausdinimo darbo srauto pasirinkimas. ji saugoja žaliavą trianguliuotą geometriją be medžiagų ar scenos hierarchijos, kuri yra būtent tai, ko laukiama slicer programinės įrangos. Jei jūsų vamzdis baigiasi 3d spaustytuvu, STL yra paprastas pasirinktas.
  • Gltf yra šiuolaikinis standartas žiniatinklio ir realaus laiko 3D. Jis palaiko PBR medžiagas, visą scenos hierarchijas ir yra skirtas efektyviam perdavimui. Naudokite glTF kurdami interneto žiūrovus, dirbdami su three.js arba Babylon.j arba nukreipti bet kokį realiuoju laiku rendering vamzdis.
  • FBX yra giliai integruota į žaidimų plėtrą ir skaitmeninio turinio kūrimo darbo srautus. ji palaiko gausus scenos duomenis, įskaitant hierarchijas ir medžiagas. Aspose.3D FOSS Java palaikys FBX Importuojamas tik - naudokite jį, kad įkeltumėte FBX turtą ir konvertuotumėt juos į kitus formatus.

Žinomi apribojimai

Svarbu pažymėti, kad Scene.render() yra Neatsirado FOSS leidinyje. vadinantis šiuo metodu bus išmesti UnsupportedOperationException.Biblioteka yra skirta 3D apdorojimui, pagrįstam failų - įkrovimo, manipuliavimo, transformacijos ir taupymo modeliams - o ne realiuoju laiku perdavimo ekrane.

Atviras šaltinis ir licencijavimas

Aspose.3D FOSS for Java išleistas pagal Mitas licencija.Tai reiškia, kad esate laisvi:

  • Naudokite biblioteką komercinėse ir nuosavybės programose.
  • Pakeiskite šaltinio kodą, kad atitiktų jūsų poreikius.
  • Išsiskyrė biblioteką kaip savo programinės įrangos dalį.

Nėra jokių karalystės mokesčių, jokios naudojimo apribojimų ir joks atitikties reikalavimas neviršija to, ką nurodo MIT licencija.

Visi šaltinio kodai yra prieinami „GitHub“ ir įnašai sveiki: WEB WEB www.github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java

Sistemos reikalavimai

ReikalavimaiDetalės
Java versija21 or later
priklausomybėsNėra jūros (išskirtinai Java)
PlatformosBet kuri platforma, kuria veikia JVM
statyti įrankįMaven (rekomenduojama)

Pradėti nuo

Štai būdai, kaip padėti jums pakilti ir paleisti:

  • Dokumentų - išsamios gairės ir API vaikščiojimo maršrutai yra prieinami ant Aspose.3D dokumentacijos svetainė.
  • Žinių bazė - praktiniai straipsniai ir problemų sprendimo patarimai, kaip 3D Kb.
  • Apšvietimas - išsamios klasės ir metodų nuorodos į Aspose.3D API nuoroda.
  • Šaltinis kodas - naršyti ir prisidėti prie GitHub.
  • Maven Centrinė - paketas skelbiamas kaip com.aspose:aspose-3d-foss Maven Centrinėje.

Dažniausiai naudojami atvejai

Štai keletas praktinių scenarijų, kur Aspose.3D FOSS už Java puikiai tinka:

Konvertavimo vamzdžiai

Daugelis komandų gauna 3D turtą viename formato, bet jiems reikia kito. dizaino komanda gali dirbti FBX, o interneto komanda turi glTF. Biblioteka leidžia jums sukurti automatinius konvertavimo vamzdžius:

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

Prieš integruodami 3D turtą į jūsų programą, galite norėti patvirtinti jo turinį - patikrinti mazgų skaičiavimus, tikrinti geometriją arba patvirtinant, kad numatomi elementai yra:

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

Scenoji susirinkimas

Galite įkrauti kelias modeles ir sujungti juos į vieną sceną:

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

Kas yra toliau

Ateinančiuose straipsniuose apimsime:

  • Gili įkvėpimas į pagrindines sceno grafo API, medžiagų ir matematikos priemonių savybes.
  • Praktinis vadovas dirbti su kiekvienu palaikomu 3D formatu - OBJ, STL, glTF ir FBX - įskaitant apkrovos / išsaugojimo galimybes ir batch konvertavimo modelius.

Būkite atvirai, ir jaustis laisvai aplankyti biblioteką ir pasidalinti savo atsiliepimais GitHub.