Suntem încântați să anunțăm disponibilitatea de 3D FOSS pentru Java - o bibliotecă gratuită, cu sursa deschisă pentru a lucra cu formate de fișiere 3D în aplicațiile Java. Construit ca o soluție pură Java fără dependențe native, biblioteca funcționează pe Java 21 și mai târziu, făcând accesibil la un spectru larg de proiecte și medii.
Acest post trece prin ceea ce biblioteca oferă, cum să înceapă și unde să meargă de aici.
Ce este Aspose.3D FOSS pentru Java?
Aspose.3D FOSS pentru Java este o bibliotecă de prelucrare a fișierelor 3D ușoară publicată în cadrul programului. Licență MIT. oferă o API de scenă-graph care vă permite să încărcați, inspectați și transformați modele 3D în mai multe formate utilizate pe scară largă. bibliotecă este scrisă complet în Java și nu necesită binare native exterioare sau configurații specifice platformei.
Codul de sursa este disponibil pe GitHub: WEB WEB www.github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Principalele evidențe
- Java pură - nici JNI, nici biblioteci native, nu restrictii platforme.
- Java 21+ în România compatibilă .
- Licențiat - utilizarea în proiecte personale, comerciale sau proprietare fără restricții.
- Arhitectura scenelor grafice - un copac familiar de noduri, mesele, camere și materiale.
- Suport multiformate - citiți și scrieți fișierele OBJ, STL, glTF 2.0 și GLB; citiţi fișiere FBX.
Începe rapid
Instalarea Maven
Adăugați următoarea dependență la dvs. pom.xml:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Prima ta conversie
Cel mai simplu caz de utilizare este încărcarea unui fișier 3D într-un format și salvarea acestuia în altul. Aici este o conversie cu două linii de la OBJ la 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");
}
}
În acest caz, Scene Cursul este punctul de intrare central.Call Scene.fromFile() cu un traseu de fișier pentru a încărca un model, apoi chemați save() cu calea țintă. biblioteca inferează formatul din extinderea fișierului.
Crearea unei scene de la Scratch
De asemenea, puteți construi scenele programat:
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");
}
}
Aceasta creează o nouă scenă, adaugă un nod de copil numit “Box” sub rădăcină și îl poziționează în coordonate (1, 2, 3), exportând rezultatul ca fișier glTF.
Încărcare cu opțiuni specifice formatului
Atunci când aveți nevoie de un control mai bun asupra procesului de încărcare, fiecare format oferă o clasă dedicată a opțiunilor. De exemplu, încrucirea unui fișier STL cu opții explicite:
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");
}
}
În acest caz, Scene.fromFile() Metoda statisă acceptă oricare dintre tipurile de opțiuni de încărcare: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,sau FbxLoadOptions.
Călătoria pe scenă grafică
Odată ce o scenă este încărcată, puteți merge pe copacul nodului pentru a inspecta sau modifica conținutul său:
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());
}
}
}
}
Acest model este util pentru debugging, generarea de rapoarte despre conținutul modelului sau modificarea selectivă a părților unei scene înainte de reexportare.
Aplicați transformări
Poziționarea nodurilor în spațiul 3D se face prin intermediul Transform Obiectul pe fiecare 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");
}
}
Transformele urmează modelul standard de moștenire părinte-copil: poziția spațială a unui copil este combinația transformării sale locale și toți strămoșii se transformă până la rădăcină.
Ce este inclus
Biblioteca va avea o serie de capacitati concepute in jurul modelului 3D Scene-Graph.
Scenă grafică
Graficul de scenă este backbone-ul API. Fiecare fișier 3D este reprezentat ca o structură copac:
| Clasă | Rolul |
|---|---|
Scene | Containere de nivel superior; rădăcina graficului scenei |
Node | O poziție numită în copac; ține transformări și noduri de copil |
Entity | Baza abstractă pentru obiectele vizuale atașate la noduri |
Mesh | Geometrie poligonală - verticale, fețe, normale |
Camera | Definiția camerelor virtuale |
Transform | Traducere locală, rotație și scară pentru un nod |
GlobalTransform | Transformarea spaţiului global |
Materiale
Biblioteca oferă un model de material PBR (Rendering bazat fizic):
- PbrMaterial - material de renderare bazat pe fizică cu albedo, metalicitate, rigiditate și transparență.Aceasta este singura clasă de materiale concrete disponibilă în ediția Java.
Utilități matematice
În acest caz, com.aspose.threed Pachetul include elementele matematice primitive esențiale:
- Vectorul 3 - vector de 3 componente pentru poziții, direcții și culori.
- Matrix 4 - 4x4 matrică de transformare.
- Cuaternă reprezentarea rotaţiei.
- BoundingBox - cutia de legătură axată pentru cereri spațiale.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Încărcați și salvați opțiuni
Fiecare format are clase de opțiuni dedicate care vă permit să controlați comportamentul importului și exportului:
| Formatul | Opțiuni de încărcare | Salvați opțiuni |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GNL / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (nu este decât importul) |
De exemplu, pentru a exporta glTF cu JSON bine imprimat și un sistem de coordonate flipped:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Formate susținute
Tabela de mai jos rezumă formatele pe care Aspose.3D FOSS pentru Java le poate citi și scrie.
| Formatul | extindere | Importul | Exportul | Notă |
|---|---|---|---|---|
| OBJ | .obj | Da | Da | Cu materiale MTL |
| STL | .stl | Da | Da | Binare + ASCII |
| GST 2.0 | .gltf | Da | Da | Formatul JSON |
| GLB | .glb | Da | Da | Binare glTF prin GltfSaveOptions |
| FBX | .fbx | Da | Nu | Importul numai |
OBJ, STL, glTF și GLB susțin atât încărcarea cât și economisirea. FBX este suportat pentru import numai.
Ghidul de selecție format
Alegerea formatului potrivit depinde de utilizarea ta:
- OBJ este ideal atunci când aveți nevoie de compatibilitate maximă între instrumente 3D. Aproape fiecare aplicație de modelare poate citi și scrie OBJ. Funcționează bine pentru schimbul de date mesh, dar nu aduce decât informații materiale de bază prin intermediul fișierelor companiei MTL.
- STL este formatul de alegere pentru fluxurile de lucru 3D prinț. stocă geometria triangulară crudă fără materiale sau ierarhie scenă, care este exact ceea ce așteaptă software-ul slider. Dacă pipeline se termină la un imprimant 3d, STL este alegerea simplă.
- Glată este standardul modern pentru web și 3D în timp real. susține materiale PBR, ierarhie de scenă completă și este conceput pentru transmitere eficientă. Utilizați glTF atunci când construiți vizualizatori pe internet, lucrați cu three.js sau Babylon.JS, sau ține orice pipeline de rendering în timpul real.
- FBX este profund integrat în dezvoltarea jocurilor și fluxurile de lucru pentru crearea conținutului digital. susține date bogate pe scenă, inclusiv ierarhie și materiale. Aspose.3D FOSS pentru Java susțin FBX Importul numai - utilizează pentru a încărca activele FBX și să le converteze în alte formate.
Limite cunoscute
Este important să se ia în considerare că Scene.render() este Nu susţinută în ediţia FOSS. numind această metodă va arunca un UnsupportedOperationException.Biblioteca este concepută pentru procesarea 3D bazată pe fișiere - încărcarea, manipularea, transformarea și salvare a modelelor - în loc de renderizarea într-un display în timp real.
Sursă deschisă și licență
Aspose.3D FOSS pentru Java este lansat sub Licența MIT.Aceasta înseamnă că sunteți liberi de:
- Foloseste biblioteca in aplicații comerciale și proprietare.
- Modificați codul de sursă pentru a vă adapta nevoilor.
- Distribuiți biblioteca ca parte a propriului software.
Nu există taxe de royalty, nu există limite de utilizare și nici cerințe de atribuire în afara celor specificate de licența MIT.
Codul de sursă complet este găzduit pe GitHub, iar contribuțiile sunt binevenite: WEB WEB www.github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Cerințe sistemice
| Cerinţă | Detalii |
|---|---|
| Versiune Java | 21 or later |
| Dependență | Nu există (Java pură) |
| Platforme | Orice platformă care rulează un JVM |
| Construiește instrumentul | Maven (recomandat pentru a face) |
să înceapă
Iată câteva resurse care vă vor ajuta să mergeți și să rulați:
- Documentare - ghiduri complete și pași de mers API sunt disponibile pe Site-ul de documentare Aspose.3D.
- Baza de cunoaştere - cum să scrie articole și sfaturi de rezolvare a problemelor în Cuvânt cheie 3D KB.
- Referință API - referinţă de clasă şi metodă detaliată la Aspose.3D API referință.
- Codul sursă - navigati si contribuiti la GitHub.
- Maven Centrul - pachetul este publicat ca
org.aspose:aspose-3d-foss:26.5.0În centrul Maven.
cazuri de utilizare comună
Iată câteva scenarii practice în care Aspose.3D FOSS pentru Java se potrivește bine:
Formatul de transformare a pipelinei
Multe echipe primesc active 3D într-un format, dar le au nevoie în altul. Un echipă de design poate lucra în FBX, în timp ce echipa web are nevoie de glTF. Biblioteca vă permite să construiți pipelini de conversie automat:
// 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
Înainte de a integra un activ 3D în aplicația dvs., este posibil să doriți să validezi conținutul acestuia - verificând numărul de noduri, verificat geometria sau confirmând că elementele așteptate sunt prezente:
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");
}
}
Adunarea pe scenă
Puteți încărca mai multe modele și le puteți combina într-o singură 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");
Ce este următorul
În următoarele postări, vom acoperi:
- O scufundare profundă în caracteristicile cheie ale API-ului de scenă, materialelor și utilităților matematice.
- Un ghid practic pentru a lucra cu fiecare format 3D susținut - OBJ, STL, glTF și FBX - inclusiv opțiuni de încărcare / salvare și modele de conversie batch.
Rămâneți încurajat și simțiți-vă liber să explorați biblioteca și să vă împărtășiți feedback-ul pe GitHub.