Vi er glade for å vise tilgjengeligheten av Aspose.3D FOSS for Java - en gratis, åpen kilde bibliotek for å jobbe med 3D-filer i Java applikasjoner. Bygd som en ren Java løsning uten innfødte avhengigheter, biblioteket kjører på Java 21 og senere, noe som gjør det tilgjengelig for et bredt spekter av prosjekter og miljøer.

Denne artikkelen går gjennom hva biblioteket tilbyr, hvordan man starter og hvor man skal gå fra her.

Hva er Aspose.3D FOSS for Java?

Aspose.3D FOSS for Java er en lett 3D-filerbehandlingsbibliotek publisert under MIT lisens.Det gir en scene-graf API som lar deg laste ned, inspisere, transformere og lagre 3D-modeller over flere utbredt brukte formater. biblioteket er helt skrevet i Java og krever ingen eksterne innfødte binære eller plattformsspesifikke konfigurasjoner.

Kildekoden er tilgjengelig på GitHub: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java

Nøkkelhøydepunkter

  • Rett Java - ingen JNI, ingen innfødte bibliotek, ikke plattformsbegrensninger.
  • Java 21+ og kompatibel.
  • MIT lisens Bruk den i personlige, kommersielle eller eiendomsprosjekter uten begrensninger.
  • Scene-grafikk arkitektur - et kjent tre av noder, mesjer, kamera og materialer.
  • Multi-format støtte - Les og skriv OBJ, STL, glTF 2.0 og GLB filer; les FBX filene.

Snart start

Maven installasjon

Legg til følgende avhengighet til din pom.xml:

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

Din første omvandling

Den enkleste bruken er å laste opp en 3D-fil i ett format og lagre den i et annet. her er en to-linje konvertering fra OBJ til 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");
    }
}

Den Scene Klassen er sentral inngangspunkt. Scene.fromFile() med en filveie for å laste ned et modell, og så ringer save() med målveien. biblioteket infiserer formatet fra filutvidelsen.

Bygge et scen fra Scratch

Du kan også lage scener programmatisk:

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

Dette skaper en ny scene, legger til et barnekode kalt “Box” under røtten, plasserer det i koordinater (1, 2, 3), og eksporterer resultatet som en glTF-fil.

Lading med format-specifiske alternativer

Når du trenger finere kontroll over ladingprosessen, gir hver format en dedikert alternativklasse. For eksempel, laste opp en STL-fil med eksplicite alternativer:

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

Den Scene.fromFile() statisk metode aksepterer noen av lastalternativtyper: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,eller FbxLoadOptions.

Overvinner scenen graf

Når en scene er lastet, kan du gå i knudepremen for å inspisere eller endre innholdet:

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

Denne mønsteret er nyttig for debugging, generere rapporter om modellinnhold, eller selektivt endre deler av en scene før re-eksport.

Bruker transformasjoner

Posisjonering av noder i 3D-rommet gjøres gjennom Transform Objekt på hver 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");
    }
}

Transforms følger den standard foreldre-barns arvsmodellen: et barns verdensromposisjon er kombinasjonen av sin lokale transformasjon og alle forfedre transformerer opp til roten.

Hva er inkludert

Biblioteket skip med en fokusert sett av evner designet rundt 3D scene-grafikk modell.

Scene grafikk

Scene grafen er bakgrunnen til API. Hver 3D-fil representeres som en trestruktur:

KlasserRollen
SceneToppnivå container; roten av scenen grafen
NodeEn navngitt posisjon i trærne; holder transformasjoner og barns noder
EntityAbstrakt base for visuelle objekter knyttet til noder
MeshPolygonal geometri - vertikaler, ansikter, normale
CameraVirtual kamera definisjon
TransformLokalt oversettelse, rotasjon og skala for en nod
GlobalTransformInformasjonsformasjon av verdensrommet

Materialer

Biblioteket gir en PBR (Fysisk Based Rendering) materiell modell:

  • PbrMaterial - fysisk basert rendering materiale med albedo, metalliskhet, grusomhet og utslettbar farge. Dette er den eneste konkrete materiell klasse tilgjengelig i Java-utgaven.

Matematikk Utiliteter

Den com.aspose.threed Pakken inneholder grunnleggende matematiske primitiver:

  • Vektor 3 - 3-komponentvektor for posisjoner, retninger og farger.
  • Matrix 4 4x4 transformasjon matrix.
  • Kvartell - Rotajonsrepresentasjon av gjeng.
  • BoundingBox - Axis-aligned bounding box for romlige spørreundersøkelser.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)

Last ned og lagre alternativer

Hver format har dedikerte alternativklasser som lar deg kontrollere import og eksport oppførsel:

FormaterLast opp alternativerSpar alternativer
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
GF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptions(ikke annet enn import)

For eksempel, for å eksportere glTF med ganske utskrift JSON og et fliset koordinat system:

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

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

Støttet format

Følgende tabell samler inn formatene som Aspose.3D FOSS for Java kan lese og skrive.

FormaterUtvidelseImport avEksportNoter
OBJ.objJa jaJa jaMed MTL-materialer
STL.stlJa jaJa jaBinar + ASCII
GTTF 2.0.gltfJa jaJa jaJSON format
GLB.glbJa jaJa jaBinære glTF via GltfSaveOptions
FBX.fbxJa jaIkkeImport bare

OBJ, STL, glTF og GLB støtter både lasting og besparelse. FBX er understøttet for import bare.

Format utvalg guide

Valg av riktig format er avhengig av din brukssituasjon:

  • OBJ Det er ideelt når du trenger maksimal kompatibilitet over 3D verktøy.Nærmere hver modelling applikasjon kan lese og skrive OBJ. Det fungerer bra for mesh data utveksling men bærer bare grunnleggende materiale informasjon gjennom medfølger MTL filer.
  • STL Det lagrer rå triangulert geometri uten materialer eller scenerikjerrikk, som er akkurat hva slicer programvare forventer. Hvis rørledningen slutter på en 3D-skrivere, STL er det enkle valget.
  • Glattef Det støtter PBR-materialer, full scene hierarkier og er designet for effektiv overføring. Bruk glTF når du bygger webbaserte seere, jobber med three.js eller Babylon.js, eller målrette noen realtime rendering pipeline.
  • FBX er dypt integrert i spillutvikling og digitale innholdsskaping arbeidsflyter. Det støtter rik scenen data inkludert hierarkier og materialer. Aspose.3D FOSS for Java støttet FBX Import bare - Bruk den til å laste inn FBX-aktiver og konvertere dem til andre formater.

Kjente begrensninger

Det er viktig å merke seg at Scene.render() er Ikke støttet i FOSS-utgaven. kalle denne metoden vil kaste en UnsupportedOperationException.Biblioteket er designet for filbasert 3D-behandling - lasting, manipulering, transformasjon og sparing modeller - i stedet for å renderer en skjerm i sanntid.

Åpne kilder og lisens

Aspose.3D FOSS for Java er utgitt under MIT lisens.Dette betyr at du er fri til:

  • Bruk biblioteket i kommersielle og eiendomsapplikasjoner.
  • Endre kilde koden for å passe dine behov.
  • Distribuer biblioteket som en del av din egen programvare.

Det er ingen royalty avgifter, ingen brukgrenser og ingen tildelingskrav utover hva MIT-lisen angir.

Den fulle kilde koden er hoste på GitHub, og bidragene er velkommen: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java

Systemkravene

kravetdetaljer
Java versjon21 or later
AvhengighetIngen (Pure Java)
PlattformerEnhver plattform som kjører en JVM
Bygg verktøyMaven (foreslått av)

Å bli startet

Her er ressursene for å hjelpe deg opp og kjøre:

  • Dokumentasjon - omfattende guider og API-ganger er tilgjengelige på Aspose.3D dokumentasjon nettsted.
  • Kunnskapsbasen - praktiske hvordan-til artikler og problemløsning tips i Høyde 3D KB.
  • API referanse - detaljerte klasser og metoder referanse på Aspose.3D API Referanse.
  • Kilde kode - browse og bidra til GitHub.
  • Maven sentral Pakken er publisert som com.aspose:aspose-3d-foss På Maven Central.

Vanlige brukssaker

Her er noen praktiske scenarier hvor Aspose.3D FOSS for Java passer godt:

Formatere omdanningsrørene

Mange lag får 3D-aktiver i ett format, men trenger dem i et annet. Et designteam kan jobbe på FBX mens webteamet trenger glTF. Biblioteket lar deg bygge automatiserte konverteringsrør:

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

Før du integrerer en 3D-verdi i appen, vil du kanskje validere innholdet - sjekke nøtter, verifisere geometri eller bekrefte at forventede elementer er til stede:

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

Sceneforsamling

Du kan laste flere modeller og kombinere dem i en enkelt scene:

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

Hva er neste

I de kommende innleggene vil vi dekke:

  • En dyp dykning inn i de viktigste funksjonene til scenen-graf API, materialer og matematiske verktøy.
  • En praktisk guide til å jobbe med hvert støttet 3D-format - OBJ, STL, glTF og FBX - inkludert last/save alternativer og batch konverteringsmønstre.

Vær oppmerksom på, og føl deg fri til å utforske biblioteket og dele tilbakemeldingen din på GitHub.