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 |
|---|---|
Scene | Aukščiausio lygio konteineris; scenos grafiko šaknis |
Node | Pavadinta vieta medyje; laikosi transformų ir vaiko mazgų |
Entity | Abstraktinė bazė vizualiems objektams, prijungtiems prie mazgų |
Mesh | Poligoninė geometrija - vertikaliai, veidai, normalios |
Camera | Virtualios kameros apibrėžimas |
Transform | Vietinis vertimas, rotacija ir skalė mazgo atžvilgiu |
GlobalTransform | Pasaulio 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ės | Išsaugoti galimybes |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GTTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (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.
| Formatas | Išplėstinė | Importo | Eksporto | Pastabos |
|---|---|---|---|---|
| OBJ | .obj | Taip | Taip | MTL medžiagos |
| STL | .stl | Taip | Taip | Dvejetainis + ASCII |
| GTTF 2.0 | .gltf | Taip | Taip | JSON formatas |
| GLB | .glb | Taip | Taip | Dvejetainis glTF per GltfSaveOptions |
| FBX | .fbx | Taip | Ne | Importuojamas 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
| Reikalavimai | Detalės |
|---|---|
| Java versija | 21 or later |
| priklausomybės | Nėra jūros (išskirtinai Java) |
| Platformos | Bet 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-fossMaven 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.