Kami senang untuk mengumumkan ketersediaan 3D FOSS untuk Java - perpustakaan gratis, sumber terbuka untuk bekerja dengan format file 3D dalam aplikasi Java. dibangun sebagai solusi Java murni tanpa ketergantungan asli, perpuskannya berjalan di Java 21 dan kemudian, menjadikannya terjangkau kepada berbagai proyek dan lingkungan.
Posting ini berjalan melalui apa yang ditawarkan perpustakaan, bagaimana untuk memulai, dan di mana untuk pergi dari sini.
Apa saja yang dimaksud dengan 3D FOSS untuk Java?
Aspose.3D FOSS untuk Java adalah perpustakaan pemrosesan file 3D ringan yang diterbitkan di bawah Lisensi MID.Ini menyediakan API grafis adegan yang memungkinkan Anda mengunggah, memeriksa, mengubah dan menyimpan model 3D di berbagai format yang banyak digunakan. perpustakaan ini ditulis sepenuhnya dalam Java dan tidak memerlukan binari asli eksternal atau konfigurasi khusus platform.
Kode sumbernya tersedia di GitHub: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java untuk
Titik Kunci
- Jasa Bersih - Tidak ada JNI, tidak ada perpustakaan asli, tak ada pembatasan platform.
- Jasa 21+ yang kompatibel.
- Lisensi MID - Menggunakannya dalam proyek pribadi, komersial atau properti tanpa batasan.
- Arsitektur Scene-Graph - pohon yang dikenal dari nodus, mesh, kamera dan bahan.
- Multi-format dukungan - membaca dan menulis OBJ, STL, glTF 2.0, dan file GLB; baca FBX file.
cepat memulai
Maven instalasi
Tambahkan ketergantungan berikut ke Anda pom.xml:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Konversi pertama Anda
Contoh yang paling sederhana adalah mengunggah 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");
}
}
yang Scene Kelas adalah titik masuk pusat. panggilan Scene.fromFile() dengan jalur file untuk mengisi model, kemudian hubungi save() dengan jalur sasaran. perpustakaan menginfeksi format dari file extension.
Membuat sebuah adegan dari Scratch
Anda juga dapat membuat adegan secara programmatik:
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 menciptakan adegan baru, menambahkan nod anak yang disebut “Box” di bawah akar, menempatkan pada koordinat (1, 2, 3), dan mengekspor hasilnya sebagai file glTF.
Mengisi dengan Format-Specific Options
Ketika Anda membutuhkan kontrol yang lebih baik atas proses muat, setiap format menyediakan kelas opsi khusus. misalnya, muatan file 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");
}
}
yang Scene.fromFile() Metode statik menerima salah satu jenis opsi beban: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,atau FbxLoadOptions.
Melintasi Scene Graph
Setelah adegan diisi, Anda dapat berjalan melalui pohon nod untuk memeriksa atau mengubah kontennya:
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 konten model, atau selektiv mengubah bagian dari adegan sebelum mengekspor kembali.
Menggunakan Transformasi
Posisi nodus 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 warisan ibu-anak standar: posisi ruang dunia anak adalah kombinasi transformasinya lokal dan semua nenek moyang berubah sampai akar.
Apa yang Termasuk
Perpustakaan kapal dengan set kapasitas yang berfokus dirancang di sekitar model 3D scene-graf.
Gambar Grafik
Graf adegan adalah latar belakang API. Setiap file 3D diwakili sebagai struktur pohon:
| Kelas | Peranan |
|---|---|
Scene | Kontainer tingkat atas; akar graf tempat kejadian |
Node | Posisi yang disebut di pohon; memegang transformasi dan nodus anak |
Entity | Abstrak basis untuk objek visual yang terikat pada nodus |
Mesh | Geometri Poligonal - vertikal, wajah, normal |
Camera | Definisi Kamera Virtual |
Transform | Terjemahan, rotasi dan skala untuk nod |
GlobalTransform | Transformasi ruang dunia komputer |
Bahan
Perpustakaan menyediakan model material PBR (Rendering Berbasis Fisik):
- PbrMaterial - materi rendering berbasis fisik dengan albedo, logam, kasar, warna emisi dan transparan. ini adalah satu-satunya kelas material konkrit yang tersedia dalam edisi Java.
Matematika Utilitas
yang com.aspose.threed Paket ini mencakup matematika primitif penting:
- Vektor 3 - Vektor 3 komponen untuk posisi, arah dan warna.
- Matriks 4 Matriks transformasi 4x4.
- Kadar Kuaternya Perwakilan rotasi .
- BoundingBox - kotak penghalang yang diselaraskan dengan sumbu 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)
Download dan Simpan Opsi
Setiap format memiliki kelas opsi khusus yang memungkinkan Anda mengontrol perilaku impor dan ekspor:
| Formatnya | Opsi Kargo | Simpan Opsi |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GTS / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (hanya untuk impor) |
Misalnya, untuk mengekspor glTF dengan JSON yang dicetak dan sistem koordinat berlapis:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Format yang didukung
Jadual berikut meringkas format yang Aspose.3D FOSS untuk Java dapat membaca dan menulis.
| Formatnya | Perpanjangan | Importasi | Ekspor | Notis yang |
|---|---|---|---|---|
| OBJ | .obj | Ya ya | Ya ya | Dengan bahan MTL |
| STL | .stl | Ya ya | Ya ya | Binary + ASCII |
| GTS 2.0 | .gltf | Ya ya | Ya ya | Format JSON |
| GLB | .glb | Ya ya | Ya ya | Binary GlTF melalui GltfSaveOptions |
| FBX | .fbx | Ya ya | Tidak | Hanya impor |
OBJ, STL, glTF, dan GLB mendukung kedua pengisian dan simpanan. FBX didukung untuk impor saja.
Format Seleksi Panduan
Memilih format yang tepat tergantung pada kasus penggunaan Anda:
- OBJ ideal ketika Anda membutuhkan kompatibilitas maksimal 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 yang disertai.
- STL adalah format pilihan untuk 3D pencetakan aliran kerja. ini menyimpan geometri triangulated mentah tanpa bahan atau hierarki adegan, yang tepat apa yang diharapkan oleh perangkat lunak slicer. Jika jalur Anda berakhir dengan printer 3d, STL adalah pilihan sederhana.
- GTTF adalah standar modern untuk web dan real-time 3D. Ini mendukung bahan PBR, hierarki scene penuh, dan dirancang untuk transmisi yang efisien. Gunakan glTF ketika membangun penonton berbasis web, bekerja dengan three.js atau Babylon.JS, atau menargetkan pipeline rendering real time apa pun.
- FBX sangat terintegrasi dalam pengembangan game dan aliran kerja penciptaan konten digital. mendukung data panggung yang kaya termasuk hierarki dan bahan. Aspose.3D FOSS untuk Java mendukung FBX Hanya impor - Gunakan untuk mengunggah aset FBX dan menukarkan mereka ke format lain.
Terbatas yang diketahui
Penting untuk diperhatikan bahwa Scene.render() adalah Tidak didukung Dalam edisi FOSS. memanggil metode ini akan melemparkan satu UnsupportedOperationException.Perpustakaan ini dirancang untuk pemrosesan 3D berbasis file - memuat, memanipulasi, mengubah dan menghemat model - bukannya rendering real-time ke layar.
Open Source dan Lisensi
Aspose.3D FOSS untuk Java dikeluarkan di bawah Lisensi MID.Ini berarti Anda bebas untuk:
- Gunakan perpustakaan dalam aplikasi komersial dan properti.
- Mengubah kode sumber untuk memenuhi kebutuhan Anda.
- Membagikan perpustakaan sebagai bagian dari perangkat lunak Anda sendiri.
Tidak ada biaya royalty, tidak ada batasan penggunaan, dan tidak adanya persyaratan penghargaan di luar apa yang ditetapkan oleh lisensi MIT.
Kode sumber penuh di hosting di GitHub, dan kontribusi disambut baik: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java untuk
Sistem Keperluan
| Kebutuhan | Detailnya |
|---|---|
| Versi Java | 21 or later |
| ketergantungan | Tidak ada (Java Bersih) |
| Platform yang | Platform yang menjalankan JVM |
| Membangun Alat | Maven (dengan rekomendasi) |
Bermula dengan
Berikut ini adalah sumber daya untuk membantu Anda naik dan berlari:
- Dokumentasi - panduan komprehensif dan jalur API tersedia di Aspose.3D Dokumentasi Situs Web.
- Basis pengetahuan - cara-cara praktis untuk artikel dan tips penyelesaian masalah dalam Keterangan 3D KB.
- Referensi API - referensi kelas dan metode terperinci pada Aspose.3D API Referensi.
- Kode Sumber - melayari dan berkontribusi pada GitHub.
- Maven Pusat - paket ini diterbitkan sebagai
org.aspose:aspose-3d-foss:26.5.0di pusat kota Maven.
Kasus Penggunaan Umum
Berikut adalah beberapa skenario praktis di mana Aspose.3D FOSS untuk Java cocok dengan baik:
Format Konversi Pipeline
Banyak tim menerima aset 3D dalam satu format tetapi membutuhkan mereka dalam yang lain.Tim desain mungkin bekerja di FBX sementara tim web memerlukan glTF.Liblioteka memungkinkan Anda untuk membangun pipa 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 validasi kontennya - memeriksa angka nod, memverifikasi geometri, atau mengkonfirmasi bahwa elemen yang diharapkan hadir:
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");
}
}
Adegan pertemuan
Anda dapat mengisi beberapa 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 yang berikutnya
Dalam posting selanjutnya, kami akan membahas:
- Sebuah menyelam dalam fitur-fitur kunci dari API skenario grafis, bahan, dan utilitas matematika.
- Panduan praktis untuk bekerja dengan setiap format 3D yang didukung - OBJ, STL, glTF, dan FBX - termasuk opsi beban / simpanan dan pola konversi batch.
Tetap tertutup, dan merasa bebas untuk menjelajahi perpustakaan dan berbagi maklum balas Anda di GitHub.