Mēs esam priecīgi paziņot par pieejamību Aspose.3D FOSS for Java – bezmaksas, atvērtā koda bibliotēka darbam ar 3D failu formātiem Java lietojumprogrammās. Izveidota kā tīra Java risinājums bez vietējām atkarībām, bibliotēka darbojas uz Java 21 un jaunākām versijām, padarot to pieejamu plašam projektu un vidi spektram.
Šajā rakstā aplūkosim, ko bibliotēka piedāvā, kā sākt darbu un kur turpināt.
Kas ir Aspose.3D FOSS for Java?
Aspose.3D FOSS for Java ir viegla 3D failu apstrādes bibliotēka, publicēta zem MIT license. Tā nodrošina ainas grafika API, kas ļauj ielādēt, pārbaudīt, pārveidot un saglabāt 3D modeļus vairākos plaši izmantotos formātos. Bibliotēka ir pilnīgi uzrakstīta Java valodā un neprasa ārējus vietējos bināros failus vai platformas specifiskas konfigurācijas.
Pirmkods ir pieejams GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Galvenie izcēlumi
- Tīrs Java – nav JNI, nav vietējām bibliotēkām, nav platformas ierobežojumu.
- Java 21+ savietojams.
- Licencēts MIT – izmantojiet to personīgajos, komerciālajos vai īpašuma projektos bez ierobežojumiem.
- Ainas grafu arhitektūra – pazīstama mezglu, režģu, kameru un materiālu koks.
- Daudzformātu atbalsts – lasīt un rakstīt OBJ, STL, glTF 2.0 un GLB failus; lasīt FBX failus.
Ātrais sākums
Maven instalēšana
Pievienojiet šādu atkarību savam pom.xml:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Jūsu pirmā konvertēšana
Visvienkāršākais lietošanas gadījums ir 3D faila ielādēšana vienā formātā un saglabāšana citā. Šeit ir divu rindu konvertēšana no OBJ uz 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 class ir centrālais ieejas punkts. Izsauciet Scene.fromFile() ar faila ceļu, lai ielādētu modeli, tad izsauciet save() ar mērķa ceļu. Bibliotēka secina formātu no faila paplašinājuma.
Scēnas izveide no nulles
Jūs varat arī konstruēt scēnas programmatiski:
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");
}
}
Tas izveido jaunu scēnu, pievieno bērna mezglu ar nosaukumu “Box” zem saknes, novieto to koordinātēs (1, 2, 3) un eksportē rezultātu kā glTF failu.
Ielāde ar formāta specifiskām opcijām
Ja jums ir nepieciešama smalkāka kontrole pār ielādes procesu, katrs formāts nodrošina īpašu opciju klasi. Piemēram, STL faila ielāde ar konkrētām opcijām:
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");
}
}
Šis Scene.fromFile() statiskā metode pieņem jebkuru no ielādes opciju tipiem: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, vai FbxLoadOptions.
Scēnas grafa pārlūkošana
Kad scēna ir ielādēta, jūs varat pāriet cauri mezglu kokam, lai pārbaudītu vai modificētu tā saturu:
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 ir noderīgs atkļūdošanai, atskaišu ģenerēšanai par modeļa saturu vai selektīvai scēnas daļu modificēšanai pirms atkārtotas eksportēšanas.
Transformāciju piemērošana
Mezglu pozicionēšana 3D telpā tiek veikta caur Transform objektu katrā 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");
}
}
Transformācijas seko standartam vecāka-bērna mantošanas modelim: bērna pasaules telpas pozīcija ir tās lokālās transformācijas un visām senču transformācijām līdz saknei kombinācija.
Kas iekļauts
Bibliotēka tiek piegādāta ar koncentrētu iespēju kopumu, kas izstrādāts ap 3D scene-graph modeli.
Ainu grafiks
Ainu grafiks ir API mugurkauls. Katrs 3D fails tiek attēlots kā koka struktūra:
| Klase | Loma |
|---|---|
Scene | Augstākā līmeņa konteineris; ainas grafika sakne |
Node | Nosaukta pozīcija koka struktūrā; satur transformācijas un bērna mezglus |
Entity | Abstrakta bāze vizuāliem objektiem, kas pievienoti mezgliem |
Mesh | Poligonu ģeometrija – virsotnes, sejas, normāles |
Camera | Virtuālas kameras definīcija |
Transform | Lokāls pārvietojums, rotācija un mērogs mezglam |
GlobalTransform | Aprēķināts pasaules telpas transformējums |
Materiāli
Bibliotēka nodrošina PBR (Physically Based Rendering) materiālu modeli:
- PbrMaterial – fiziski balstīts renderēšanas materiāls ar albedo, metalness, roughness, emissive color un transparency. Tas ir vienīgais konkrētais materiāla klase, kas pieejama Java izdevumā.
Matemātikas utilītprogrammas
The com.aspose.threed pakotne ietver būtiskus matemātiskos primitīvus:
- Vector3 – 3 komponentu vektors pozīcijām, virzieniem un krāsām.
- Matrix4 – 4x4 transformācijas matrica.
- Quaternion – rotācijas reprezentācija.
- BoundingBox – asīm saskaņota robežkaste telpiskām vaicājumiem.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Ielādes un saglabāšanas iespējas
Katram formātam ir īpašas opciju klases, kas ļauj kontrolēt importēšanas un eksportēšanas uzvedību:
| Formāts | Ielādēt iestatījumus | Saglabāt iestatījumus |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | – (tikai importēšanai) |
Piemēram, lai eksportētu glTF ar skaisti formatētu JSON un apgrieztu koordinātu sistēmu:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Atbalstītie formāti
Zemāk esošā tabula apkopo formātus, kurus Aspose.3D FOSS for Java var nolasīt un rakstīt.
| Formāts | Paplašinājums | Importēt | Eksportēt | Piezīmes |
|---|---|---|---|---|
| OBJ | .obj | Jā | Jā | Ar MTL materiāliem |
| STL | .stl | Jā | Jā | Binārs + ASCII |
| glTF 2.0 | .gltf | Jā | Jā | JSON formāts |
| GLB | .glb | Jā | Jā | Binārais glTF caur GltfSaveOptions |
| FBX | .fbx | Jā | Nē | Tikai importēšana |
OBJ, STL, glTF un GLB atbalsta gan ielādi, gan saglabāšanu. FBX tiek atbalstīts tikai importam.
Formāta izvēles ceļvedis
Pareiza formāta izvēle ir atkarīga no jūsu lietošanas gadījuma:
- OBJ ir ideāls, ja jums ir nepieciešama maksimāla saderība starp 3D rīkiem. Gandrīz katra modelēšanas lietojumprogramma var nolasīt un rakstīt OBJ. Tas labi darbojas tīklu datu apmaiņai, bet nes tikai pamata materiālu informāciju caur pavadīšanas MTL failiem.
- STL ir izvēlētais formāts 3D drukāšanas darbplūsmām. Tas saglabā neapstrādātu trīsstūra ģeometriju bez materiāliem vai ainas hierarhijas, kas ir tieši tas, ko sagaida slicer programmatūra. Ja jūsu darbplūsma beidzas pie 3D printera, STL ir vienkāršais izvēles variants.
- glTF ir mūsdienu standarts tīmekļa un reāllaika 3D. Tas atbalsta PBR materiālus, pilnas ainas hierarhijas un ir izstrādāts efektīvai pārraidei. Izmantojiet glTF, veidojot tīmekļa skatītājus, strādājot ar three.js vai Babylon.js, vai mērķējot uz jebkuru reāllaika renderēšanas cauruļvadu.
- FBX ir dziļi integrēts spēļu izstrādes un digitālās satura veidošanas darba plūsmās. Tas atbalsta bagātīgu ainas datu kopumu, ieskaitot hierarhijas un materiālus. Aspose.3D FOSS for Java atbalsta FBX tikai importēt – izmantojiet to, lai ielādētu FBX aktīvus un konvertētu tos uz citām formātām.
Zināmie ierobežojumi
Ir svarīgi atzīmēt, ka Scene.render() ir nav atbalstīts FOSS izdevumā. Šīs metodes izsaukšana izraisīs UnsupportedOperationException. Bibliotēka ir paredzēta failu bāzētai 3D apstrādei – ielādei, manipulēšanai, transformēšanai un modeļu saglabāšanai – nevis reāllaika renderēšanai uz ekrāna.
Atvērtā koda un licencēšana
Aspose.3D FOSS for Java ir izlaists zem MIT licence. Tas nozīmē, ka jums ir brīvi:
- Izmantot bibliotēku komerciālās un īpašnieka lietojumprogrammās.
- Modificēt pirmkodu, lai tas atbilstu jūsu vajadzībām.
- Izplatiet bibliotēku kā daļu no savas programmatūras.
Nav nekādu honorāru maksas, lietošanas ierobežojumu un atribūcijas prasību, izņemot to, ko nosaka MIT licence.
Pilns pirmkods ir izvietots GitHub, un ieguldījumi ir laipni gaidīti: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Sistēmas prasības
| Prasība | Detaļas |
|---|---|
| Java versija | 21 or later |
| Atkarības | Nav (tīrs Java) |
| Platformas | Jebkura platforma, kas darbojas ar JVM |
| Būvēšanas rīks | Maven (ieteicams) |
Sākums
Šeit ir resursi, kas palīdzēs jums sākt darbu:
- Dokumentācija – visaptveroši ceļveidi un API pārskati ir pieejami vietnē Aspose.3D dokumentācijas vietne.
- Zināšanu bāze – praktiski pamācību raksti un problēmu novēršanas padomi vietnē Aspose.3D KB.
- API atsauce – detalizēta klašu un metožu atsauce vietnē Aspose.3D API atsauce.
- Avota kods – pārlūkojiet un piedalieties GitHub.
- Maven Central – pakotne ir publicēta kā
com.aspose:aspose-3d-fossMaven Central vietnē.
Biežākie lietošanas gadījumi
Šeit ir daži praktiski scenāriji, kuros Aspose.3D FOSS priekš Java labi iederas:
Formāta konvertēšanas caurules
Daudzas komandas saņem 3D aktīvus vienā formātā, bet tiem ir vajadzīgs cits. Dizaina komanda var strādāt ar FBX, kamēr tīmekļa komandai vajag glTF. Bibliotēka ļauj izveidot automatizētas konvertēšanas caurules:
// 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
Before integrating a 3D asset into your application, you may want to validate its contents – checking node counts, verifying geometry, or confirming that expected elements are present:
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");
}
}
Scene Assembly
You can load multiple models and combine them into a single 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");
What’s Next
In upcoming posts, we will cover:
- A deep dive into the key features of the scene-graph API, materials, and math utilities.
- A practical guide to working with each supported 3D format – OBJ, STL, glTF, and FBX – including load/save options and batch conversion patterns.
Stay tuned, and feel free to explore the library and share your feedback on GitHub.