Kami dengan senang hati mengumumkan ketersediaan Aspose.3D FOSS untuk Java – sebuah perpustakaan gratis, sumber terbuka untuk bekerja dengan format file 3D dalam aplikasi Java. Dibangun sebagai solusi Java murni tanpa ketergantungan native, perpustakaan ini berjalan pada Java 21 dan yang lebih baru, menjadikannya dapat diakses oleh berbagai proyek dan lingkungan.
Postingan ini menjelaskan apa yang ditawarkan perpustakaan, cara memulai, dan ke mana harus melangkah selanjutnya.
Apa Itu Aspose.3D FOSS untuk Java?
Aspose.3D FOSS untuk Java adalah perpustakaan pemrosesan file 3D ringan yang dipublikasikan di bawah MIT license. Ia menyediakan API scene-graph yang memungkinkan Anda memuat, memeriksa, mengubah, dan menyimpan model 3D di berbagai format yang banyak digunakan. Perpustakaan ini sepenuhnya ditulis dalam Java dan tidak memerlukan binari native eksternal atau konfigurasi khusus platform.
Kode sumber tersedia di GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Sorotan Utama
- Murni Java – tidak ada JNI, tidak ada pustaka native, tidak ada pembatasan platform.
- Java 21+ kompatibel.
- Lisensi MIT – gunakan dalam proyek pribadi, komersial, atau proprietari tanpa batasan.
- Arsitektur scene-graph – sebuah pohon yang familiar berisi node, mesh, kamera, dan material.
- Dukungan multi-format – baca dan tulis file OBJ, STL, glTF 2.0, dan GLB; baca file FBX.
Mulai Cepat
Instalasi Maven
Tambahkan dependensi berikut ke dalam pom.xml:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Konversi Pertama Anda
Kasus penggunaan paling sederhana adalah memuat file 3D dalam satu format dan menyimpannya dalam format lain. Berikut adalah konversi dua baris dari OBJ ke 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 kelas adalah titik masuk utama. Panggil Scene.fromFile() dengan jalur file untuk memuat model, lalu panggil save() dengan jalur target. Perpustakaan menentukan format dari ekstensi file.
Membangun Scene dari Awal
Anda juga dapat membangun scene secara programatis:
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");
}
}
Ini membuat scene baru, menambahkan node anak bernama “Box” di bawah root, menempatkannya pada koordinat (1, 2, 3), dan mengekspor hasilnya sebagai file glTF.
Memuat dengan Opsi Spesifik Format
Ketika Anda memerlukan kontrol yang lebih halus atas proses pemuatan, setiap format menyediakan kelas opsi khusus. Misalnya, memuat file STL dengan opsi eksplisit:
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() metode statis menerima salah satu tipe opsi muat: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, atau FbxLoadOptions.
Menelusuri Graf Adegan
Setelah adegan dimuat, Anda dapat menelusuri pohon node untuk memeriksa atau memodifikasi isinya:
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());
}
}
}
}
Pola ini berguna untuk debugging, menghasilkan laporan tentang isi model, atau memodifikasi bagian-bagian adegan secara selektif sebelum diekspor ulang.
Menerapkan Transformasi
Penempatan node dalam ruang 3D dilakukan melalui Transform objek pada setiap 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");
}
}
Transformasi mengikuti model pewarisan orang tua‑anak standar: posisi ruang‑dunia anak merupakan kombinasi dari transformasi lokalnya dan semua transformasi leluhur hingga akar.
Apa yang Disertakan
Pustaka ini dilengkapi dengan seperangkat kemampuan terfokus yang dirancang di sekitar model grafik adegan 3D.
Grafik Adegan
Grafik adegan adalah tulang punggung API. Setiap file 3D direpresentasikan sebagai struktur pohon:
| Kelas | Peran |
|---|---|
Scene | Kontainer tingkat atas; akar dari grafik adegan |
Node | Posisi bernama dalam pohon; menyimpan transformasi dan node anak |
Entity | Basis abstrak untuk objek visual yang terpasang pada node |
Mesh | Geometri poligonal – vertices, faces, normals |
Camera | Definisi kamera virtual |
Transform | Translasi, rotasi, dan skala lokal untuk sebuah node |
GlobalTransform | Transformasi ruang dunia yang dihitung |
Material
Pustaka ini menyediakan model material PBR (Physically Based Rendering):
- PbrMaterial – material rendering berbasis fisik dengan albedo, metalness, roughness, warna emisif, dan transparansi. Ini adalah satu-satunya kelas material konkret yang tersedia dalam edisi Java.
Utilitas Matematika
The com.aspose.threed paket mencakup primitif matematika penting:
- Vector3 – vektor 3-komponen untuk posisi, arah, dan warna.
- Matrix4 – matriks transformasi 4x4.
- Quaternion – representasi rotasi.
- BoundingBox – kotak pembatas yang sejajar sumbu untuk kueri spasial.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Opsi Muat dan Simpan
Setiap format memiliki kelas opsi khusus yang memungkinkan Anda mengontrol perilaku impor dan ekspor:
| Format | Muat Opsi | Simpan Opsi |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | – (hanya impor) |
Sebagai contoh, untuk mengekspor glTF dengan JSON yang diformat rapi dan sistem koordinat terbalik:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Format yang Didukung
Tabel berikut merangkum format yang dapat dibaca dan ditulis oleh Aspose.3D FOSS untuk Java.
| Format | Ekstensi | Impor | Ekspor | Catatan |
|---|---|---|---|---|
| OBJ | .obj | Ya | Ya | Dengan bahan MTL |
| STL | .stl | Ya | Ya | Biner + ASCII |
| glTF 2.0 | .gltf | Ya | Ya | format JSON |
| GLB | .glb | Ya | Ya | glTF biner via GltfSaveOptions |
| FBX | .fbx | Ya | Tidak | Hanya impor |
OBJ, STL, glTF, dan GLB mendukung pemuatan dan penyimpanan. FBX hanya didukung untuk impor.
Panduan Pemilihan Format
Memilih format yang tepat tergantung pada kasus penggunaan Anda:
- OBJ ideal ketika Anda membutuhkan kompatibilitas maksimum di seluruh alat 3D. Hampir setiap aplikasi pemodelan dapat membaca dan menulis OBJ. Ini bekerja dengan baik untuk pertukaran data mesh tetapi hanya membawa informasi material dasar melalui file MTL pendamping.
- STL adalah format pilihan untuk alur kerja pencetakan 3D. Ia menyimpan geometri triangulasi mentah tanpa material atau hierarki adegan, yang persis seperti yang diharapkan perangkat lunak slicer. Jika alur kerja Anda berakhir pada printer 3D, STL adalah pilihan yang langsung.
- glTF adalah standar modern untuk web dan 3D real-time. Ia mendukung material PBR, hierarki adegan lengkap, dan dirancang untuk transmisi yang efisien. Gunakan glTF saat membangun penampil berbasis web, bekerja dengan three.js atau Babylon.js, atau menargetkan pipeline rendering real-time apa pun.
- FBX sangat terintegrasi dalam alur kerja pengembangan game dan pembuatan konten digital. Ia mendukung data adegan kaya termasuk hierarki dan material. Aspose.3D FOSS untuk Java mendukung FBX hanya impor – gunakan untuk memuat aset FBX dan mengonversinya ke format lain.
Batasan yang Diketahui
Penting untuk dicatat bahwa Scene.render() adalah tidak didukung di edisi FOSS. Memanggil metode ini akan melempar sebuah UnsupportedOperationException. Perpustakaan ini dirancang untuk pemrosesan 3D berbasis file – memuat, memanipulasi, mentransformasi, dan menyimpan model – bukan untuk rendering waktu nyata ke tampilan.
Sumber Terbuka dan Lisensi
Aspose.3D FOSS untuk Java dirilis di bawah Lisensi MIT. Ini berarti Anda bebas untuk:
- Menggunakan perpustakaan dalam aplikasi komersial dan proprietari.
- Memodifikasi kode sumber agar sesuai dengan kebutuhan Anda.
- Distribusikan perpustakaan sebagai bagian dari perangkat lunak Anda sendiri.
Tidak ada biaya royalti, tidak ada batasan penggunaan, dan tidak ada persyaratan atribusi selain yang ditentukan oleh lisensi MIT.
Kode sumber lengkap dihosting di GitHub, dan kontribusi dipersilakan: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Persyaratan Sistem
| Persyaratan | Rincian |
|---|---|
| Java versi | 21 or later |
| Dependensi | Tidak ada (murni Java) |
| Platform | Platform apa pun yang menjalankan JVM |
| Alat build | Maven (direkomendasikan) |
Memulai
Berikut adalah sumber daya untuk membantu Anda memulai:
- Dokumentasi – panduan komprehensif dan tutorial API tersedia pada Aspose.3D situs dokumentasi.
- Basis Pengetahuan – artikel cara praktis dan tips pemecahan masalah di Aspose.3D KB.
- Referensi API – referensi kelas dan metode terperinci di Aspose.3D Referensi API.
- Kode Sumber – telusuri dan berkontribusi di GitHub.
- Maven Central – paket dipublikasikan sebagai
com.aspose:aspose-3d-fossdi Maven Central.
Kasus Penggunaan Umum
Berikut beberapa skenario praktis di mana Aspose.3D FOSS untuk Java sangat cocok:
Pipeline Konversi Format
Banyak tim menerima aset 3D dalam satu format tetapi membutuhkannya dalam format lain. Tim desain mungkin bekerja dengan FBX sementara tim web membutuhkan glTF. Perpustakaan ini memungkinkan Anda membangun pipeline konversi otomatis:
// 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
Sebelum mengintegrasikan aset 3D ke dalam aplikasi Anda, Anda mungkin ingin memvalidasi isinya – memeriksa jumlah node, memverifikasi geometri, atau memastikan bahwa elemen yang diharapkan ada:
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");
}
}
Perakitan Adegan
Anda dapat memuat beberapa model dan menggabungkannya menjadi satu adegan:
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");
Apa Selanjutnya
Dalam postingan mendatang, kami akan membahas:
- Penjelasan mendalam tentang fitur utama API scene-graph, material, dan utilitas matematika.
- Panduan praktis untuk bekerja dengan setiap format 3D yang didukung – OBJ, STL, glTF, dan FBX – termasuk opsi muat/simpan dan pola konversi batch.
Pantau terus, dan silakan menjelajahi perpustakaan serta membagikan umpan balik Anda di GitHub.