Kami teruja untuk mengumumkan ketersediaan Aspose.3D FOSS for Java – sebuah perpustakaan percuma, sumber terbuka untuk bekerja dengan format fail 3D dalam aplikasi Java. Dibina sebagai penyelesaian Java tulen tanpa kebergantungan asli, perpustakaan ini berjalan pada Java 21 dan ke atas, menjadikannya dapat diakses oleh pelbagai projek dan persekitaran.
Pos ini mengupas apa yang ditawarkan oleh perpustakaan, cara memulakan, dan ke mana untuk pergi seterusnya.
Apakah Aspose.3D FOSS untuk Java?
Aspose.3D FOSS for Java ialah perpustakaan pemprosesan fail 3D yang ringan yang diterbitkan di bawah MIT license. Ia menyediakan API graf-seni yang membolehkan anda memuat naik, memeriksa, menukar, dan menyimpan model 3D merentasi beberapa format yang banyak digunakan. Perpustakaan ini ditulis sepenuhnya dalam Java dan tidak memerlukan binari asli luaran atau konfigurasi khusus platform.
Kod sumber tersedia di GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Sorotan Utama
- Murni Java – tiada JNI, tiada perpustakaan asli, tiada sekatan platform.
- Java 21+ serasi.
- dilisensikan MIT – gunakannya dalam projek peribadi, komersial, atau proprietari tanpa sekatan.
- Senibina graf-skena – pokok yang biasa bagi nod, mesh, kamera, dan bahan.
- Sokongan berbilang format – baca dan tulis fail OBJ, STL, glTF 2.0, dan GLB; baca fail FBX.
Mula Cepat
Pemasangan Maven
Tambah kebergantungan berikut ke dalam projek anda pom.xml:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Penukaran Pertama Anda
Kes penggunaan paling mudah ialah memuatkan fail 3D dalam satu format dan menyimpannya dalam format lain. Berikut ialah penukaran 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 laluan fail untuk memuatkan model, kemudian panggil save() dengan laluan sasaran. Perpustakaan mengenal pasti format daripada sambungan fail.
Membina Scene dari Awal
Anda juga boleh membina scene secara programatik:
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 mencipta scene baru, menambah nod anak bernama “Box” di bawah root, meletakkannya pada koordinat (1, 2, 3), dan mengeksport hasilnya sebagai fail glTF.
Memuat dengan Pilihan Khusus Format
Apabila anda memerlukan kawalan yang lebih halus ke atas proses pemuatan, setiap format menyediakan kelas pilihan khusus. Sebagai contoh, memuatkan fail STL dengan pilihan 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() kaedah statik menerima mana-mana jenis pilihan muat: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, atau FbxLoadOptions.
Menerokong Graf Adegan
Setelah adegan dimuatkan, anda boleh melangkah melalui pokok nod untuk memeriksa atau mengubah kandungannya:
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());
}
}
}
}
Corak ini berguna untuk penyahpepijatan, menjana laporan mengenai kandungan model, atau mengubah bahagian adegan secara terpilih sebelum dieksport semula.
Menerapkan Transformasi
Penempatan nod 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 ibu bapa‑anak yang standard: kedudukan ruang‑dunia anak merupakan gabungan transformasi setempatnya dan semua transformasi nenek moyang sehingga ke akar.
Apa yang Disertakan
Pustaka ini disertakan dengan set keupayaan terfokus yang direka berdasarkan model graf adegan 3D.
Graf Adegan
Graf adegan adalah tulang belakang API. Setiap fail 3D diwakili sebagai struktur pokok:
| Kelas | Peranan |
|---|---|
Scene | Bekas peringkat atas; akar graf adegan |
Node | Kedudukan bernama dalam pokok; menyimpan transformasi dan nod anak |
Entity | Asas abstrak untuk objek visual yang dilampirkan pada nod |
Mesh | Geometri poligon – titik sudut, muka, normal |
Camera | Definisi kamera maya |
Transform | Terjemahan, putaran, dan skala setempat untuk sebuah nod |
GlobalTransform | Transform ruang-dunia yang dikira |
Bahan
Pustaka ini menyediakan model bahan PBR (Physically Based Rendering):
- PbrMaterial – bahan rendering berasaskan fizikal dengan albedo, metalness, roughness, warna emissif, dan ketelusan. Ini adalah satu-satunya kelas bahan konkrit yang tersedia dalam edisi Java.
Utiliti Matematik
The com.aspose.threed pakej termasuk primitif matematik penting:
- Vector3 – vektor 3-komponen untuk kedudukan, arah, dan warna.
- Matrix4 – matriks transformasi 4x4.
- Quaternion – representasi putaran.
- BoundingBox – kotak sempadan selari paksi untuk pertanyaan ruang.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Pilihan Muat dan Simpan
Setiap format mempunyai kelas pilihan khusus yang membolehkan anda mengawal tingkah laku import dan eksport:
| Format | Muat Pilihan | Simpan Pilihan |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | – (import sahaja) |
Sebagai contoh, untuk mengeksport glTF dengan JSON yang diformat cantik dan sistem koordinat terbalik:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Format yang Disokong
Jadual berikut merangkum format yang Aspose.3D FOSS untuk Java boleh baca dan tulis.
| Format | Sambungan | Import | Eksport | Nota |
|---|---|---|---|---|
| OBJ | .obj | Ya | Ya | Dengan bahan MTL |
| STL | .stl | Ya | Ya | Binari + ASCII |
| glTF 2.0 | .gltf | Ya | Ya | format JSON |
| GLB | .glb | Ya | Ya | glTF binari melalui GltfSaveOptions |
| FBX | .fbx | Ya | Tidak | Import sahaja |
OBJ, STL, glTF, dan GLB menyokong kedua-dua pemuatan dan penyimpanan. FBX disokong untuk import sahaja.
Panduan Pemilihan Format
Memilih format yang tepat bergantung pada kes penggunaan anda:
- OBJ adalah ideal apabila anda memerlukan keserasian maksimum merentasi alat 3D. Hampir setiap aplikasi pemodelan boleh membaca dan menulis OBJ. Ia berfungsi dengan baik untuk pertukaran data mesh tetapi hanya membawa maklumat bahan asas melalui fail MTL yang sepadan.
- STL adalah format pilihan untuk aliran kerja pencetakan 3D. Ia menyimpan geometri segitiga mentah tanpa bahan atau hierarki adegan, yang tepat apa yang dijangka oleh perisian pemotong. Jika aliran kerja anda berakhir pada pencetak 3D, STL adalah pilihan yang jelas.
- glTF adalah standard moden untuk web dan 3D masa nyata. Ia menyokong bahan PBR, hierarki adegan penuh, dan direka untuk penghantaran yang cekap. Gunakan glTF apabila membina penonton berasaskan web, bekerja dengan three.js atau Babylon.js, atau menyasarkan mana-mana paip rendering masa nyata.
- FBX diintegrasikan secara mendalam ke dalam aliran kerja pembangunan permainan dan penciptaan kandungan digital. Ia menyokong data adegan yang kaya termasuk hierarki dan bahan. Aspose.3D FOSS untuk Java menyokong FBX import sahaja – gunakan ia untuk memuatkan aset FBX dan menukarkannya ke format lain.
Keterbatasan Dikenali
Adalah penting untuk diperhatikan bahawa Scene.render() adalah tidak disokong dalam edisi FOSS. Memanggil kaedah ini akan melemparkan satu UnsupportedOperationException. Perpustakaan ini direka untuk pemprosesan 3D berasaskan fail – memuatkan, memanipulasi, menukar, dan menyimpan model – bukannya rendering masa nyata ke paparan.
Sumber Terbuka dan Pelesenan
Aspose.3D FOSS untuk Java dikeluarkan di bawah MIT License. Ini bermakna anda bebas untuk:
- Gunakan perpustakaan ini dalam aplikasi komersial dan proprietari.
- Ubah suai kod sumber mengikut keperluan anda.
- Edarkan perpustakaan sebagai sebahagian daripada perisian anda.
Tiada yuran royalti, tiada had penggunaan, dan tiada keperluan atribusi selain apa yang ditetapkan oleh lesen MIT.
Kod sumber penuh dihoskan di GitHub, dan sumbangan dialu‑alukan: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Keperluan Sistem
| Keperluan | Butiran |
|---|---|
| Java versi | 21 or later |
| Kebergantungan | Tiada (murni Java) |
| Platform | Sebarang platform yang menjalankan JVM |
| Alat bina | Maven (disarankan) |
Mula Menggunakan
Berikut ialah sumber-sumber untuk membantu anda memulakan dan menjalankan:
- Dokumentasi – panduan komprehensif dan tutorial API tersedia di Aspose.3D laman dokumentasi.
- Pangkalan Pengetahuan – artikel cara-cara praktikal dan tip penyelesaian masalah dalam Aspose.3D KB.
- Rujukan API – rujukan kelas dan kaedah terperinci pada Aspose.3D Rujukan API.
- Kod Sumber – layari dan sumbangkan di GitHub.
- Maven Central – pakej ini diterbitkan sebagai
com.aspose:aspose-3d-fossdi Maven Central.
Kes Penggunaan Biasa
Berikut adalah beberapa senario praktikal di mana Aspose.3D FOSS untuk Java sesuai:
Saluran Penukaran Format
Banyak pasukan menerima aset 3D dalam satu format tetapi memerlukannya dalam format lain. Pasukan reka bentuk mungkin bekerja dalam FBX manakala pasukan web memerlukan glTF. Perpustakaan ini membolehkan anda membina saluran penukaran automatik:
// 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 mengesahkan kandungannya – memeriksa bilangan nod, mengesahkan geometri, atau mengesahkan bahawa elemen yang dijangka 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");
}
}
Penyusunan Adegan
Anda boleh memuatkan pelbagai model dan menggabungkannya ke dalam 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 Seterusnya
Dalam kiriman akan datang, kami akan membincangkan:
- Penjelajahan mendalam mengenai ciri utama API grafik-adegan, bahan, dan utiliti matematik.
- Panduan praktikal untuk bekerja dengan setiap format 3D yang disokong – OBJ, STL, glTF, dan FBX – termasuk pilihan muat naik/simpan dan corak penukaran pukal.
Terus ikuti, dan jangan ragu untuk meneroka perpustakaan serta berkongsi maklum balas anda di GitHub.