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:
| Klasser | Rollen |
|---|---|
Scene | Toppnivå container; roten av scenen grafen |
Node | En navngitt posisjon i trærne; holder transformasjoner og barns noder |
Entity | Abstrakt base for visuelle objekter knyttet til noder |
Mesh | Polygonal geometri - vertikaler, ansikter, normale |
Camera | Virtual kamera definisjon |
Transform | Lokalt oversettelse, rotasjon og skala for en nod |
GlobalTransform | Informasjonsformasjon 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:
| Formater | Last opp alternativer | Spar alternativer |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (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.
| Formater | Utvidelse | Import av | Eksport | Noter |
|---|---|---|---|---|
| OBJ | .obj | Ja ja | Ja ja | Med MTL-materialer |
| STL | .stl | Ja ja | Ja ja | Binar + ASCII |
| GTTF 2.0 | .gltf | Ja ja | Ja ja | JSON format |
| GLB | .glb | Ja ja | Ja ja | Binære glTF via GltfSaveOptions |
| FBX | .fbx | Ja ja | Ikke | Import 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
| kravet | detaljer |
|---|---|
| Java versjon | 21 or later |
| Avhengighet | Ingen (Pure Java) |
| Plattformer | Enhver plattform som kjører en JVM |
| Bygg verktøy | Maven (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-fossPå 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.