Kami berminat untuk mengumumkan ketersediaan Aspose.3D FOSS untuk Java - perpustakaan percuma, sumber terbuka untuk bekerja dengan format fail 3D dalam aplikasi Java. dibina sebagai penyelesaian Java tulen tanpa ketagihan asli, perpustian berjalan di Java 21 dan seterusnya, menjadikannya boleh didapati kepada pelbagai projek dan persekitaran.
Post ini berjalan melalui apa yang ditawarkan oleh perpustakaan, bagaimana untuk memulakan, dan di mana untuk pergi dari sini.
Apakah yang dimaksudkan dengan 3D FOSS untuk Java?
Aspose.3D FOSS untuk Java adalah perpustakaan pemprosesan fail 3D ringan yang diterbitkan di bawah Permohonan Lisensi.Ia menyediakan API graf adegan yang membolehkan anda memuat naik, memeriksa, mengubah dan menyimpan model 3D melalui beberapa format yang digunakan secara meluas. perpustakaan ini ditulis sepenuhnya dalam Java dan tidak memerlukan binari asli atau konfigurasi khusus platform.
Kod sumber boleh didapati di GitHub: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java untuk
Tag: penekanan utama
- Java yang bersih - tiada JNI, tiada perpustakaan asli, tidak ada sekatan platform.
- Perbezaan antara Java 21+ yang kompatibel.
- Lisensi yang diberikan - digunakan dalam projek peribadi, komersial atau pemilikan tanpa sekatan.
- Arsitektur Scene-Graph - pokok yang biasa daripada nodus, mesh, kamera dan bahan.
- Sokongan pelbagai format - baca dan tulis fail OBJ, STL, glTF 2.0, dan GLB; baca fail FBX.
Mulakan Cepat
Maven Pengenalan
Tambah ketergantungan berikut kepada anda pom.xml:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Perubahan Pertama Anda
Kes penggunaan yang paling mudah ialah memuat naik fail 3D dalam satu format dan menyimpannya dalam yang lain. berikut adalah 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");
}
}
yang Scene Kelas ialah titik kemasukan pusat. panggilan Scene.fromFile() dengan laluan fail untuk memuat naik model, kemudian panggilan save() dengan laluan sasaran. perpustakaan memasukkan format daripada perpanjangan fail.
Mencipta adegan daripada Scratch
Anda juga boleh 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 mewujudkan adegan baru, menambah nod kanak-kanak yang dipanggil “Box” di bawah akar, meletakkannya pada koordinat (1, 2, 3), dan mengeksport hasilnya sebagai fail glTF.
Mengisi dengan Format-Specific Options
Apabila anda memerlukan kawalan yang lebih baik mengenai proses muat, setiap format menyediakan kelas pilihan khusus. contohnya, muatan fail STL dengan opsyen 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() kaedah statik menerima mana-mana jenis pilihan beban: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,atau FbxLoadOptions.
Melintasi Scene Graph
Sebaik sahaja adegan diisi, anda boleh berjalan pokok nod untuk memeriksa atau mengubah suai kandungan:
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 mengenai kandungan model, atau secara selektif mengubah bahagian-bahagian adegan sebelum mengeksport semula.
Menggunakan Transformasi
Posisi 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");
}
}
Transform mengikuti model warisan ibu bapa-anak standard: kedudukan dunia-ruang kanak-kanak adalah gabungan transformasi tempatan dan semua nenek moyang berubah sehingga akar.
Apa yang dimasukkan
Perpustakaan kapal dengan satu set berfokus keupayaan yang direka di sekitar model 3D adegan-graf.
Gambaran keseluruhan Graph
Grafik adegan adalah latar belakang API. Setiap fail 3D diwakili sebagai struktur pokok:
| Kelas | Peranan |
|---|---|
Scene | Kontainer peringkat atas; akar grafik adegan |
Node | Kedudukan yang dinamakan di dalam pokok; memegang transformasi dan nod kanak-kanak |
Entity | Asas abstrak untuk objek visual yang dilampirkan kepada nodus |
Mesh | Geometri Polygonal - vertikal, muka, normal |
Camera | Pengenalan Kamera Virtual |
Transform | Terjemahan tempatan, rotasi dan skala untuk nod |
GlobalTransform | Transformasi ruang dunia komputer |
Bahan-bahan
Perpustakaan ini menyediakan model bahan PBR (Rendering Berasaskan Fizikal):
- PbrMaterial - bahan rendering berasaskan fizikal dengan albedo, logam, keriting, warna emisi, dan ketelusan. ini adalah satu-satunya kelas bahan konkrit yang tersedia dalam edisi Java.
Matematika Utiliti
yang com.aspose.threed Pakej ini termasuk primitif matematik penting:
- Pengikut 3 - Vektor 3 komponen untuk kedudukan, arah dan warna.
- Matriks 4 Matriks transformasi 4x4.
- Kadar kuaternya Perwakilan rotasi .
- BoundingBox - kotak sempadan 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)
Menyewa dan menyimpan pilihan
Setiap format mempunyai kelas pilihan yang didedikasikan yang membolehkan anda mengawal tingkah laku import dan eksport:
| Format | Pilihan beban | Simpan Pilihan |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| Perbezaan / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (Hanya untuk pengimportan sahaja) |
Contohnya, untuk mengeksport 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 disokong
Jadual berikut meringkaskan format yang Aspose.3D FOSS untuk Java boleh membaca dan menulis.
| Format | Perpanjangan | Import | Eksport | Nota |
|---|---|---|---|---|
| OBJ | .obj | Ya ya | Ya ya | Dengan bahan MTL |
| STL | .stl | Ya ya | Ya ya | Perbezaan + ASCII |
| Perbezaan GTTF 2.0 | .gltf | Ya ya | Ya ya | Format JSON |
| GLB | .glb | Ya ya | Ya ya | Binary glTF melalui GltfSaveOptions |
| FBX | .fbx | Ya ya | Tidak | Import sahaja |
OBJ, STL, glTF, dan GLB menyokong kedua-dua pengecasan dan simpanan. FBX disokong untuk import sahaja.
Format pemilihan panduan
Memilih format yang betul bergantung kepada kes penggunaan anda:
- OBJ Ia ideal apabila anda memerlukan kompatibiliti maksimum di seluruh 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 rakan kongsi.
- STL Ia menyimpan geometri segitiga mentah tanpa bahan atau hierarki adegan, yang tepat apa perisian slicer mengharapkan. Jika paip anda berakhir dengan pencetak 3D, STL adalah pilihan mudah.
- GTTF Ia menyokong bahan-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 menargetkan mana-mana paip rendering masa nyata.
- FBX Ia menyokong data adegan yang kaya termasuk hierarki dan bahan. Aspose.3D FOSS untuk Java menyertai FBX Import sahaja - gunakan untuk memuat naik aset FBX dan menukarnya kepada format lain.
Terhad yang diketahui
Adalah penting untuk diperhatikan bahawa Scene.render() Ia merupakan Tidak disokong dalam edisi FOSS. memanggil kaedah ini akan melemparkan satu UnsupportedOperationException.Perpustakaan ini direka untuk pemprosesan 3D berasaskan fail - memuat naik, memanipulasi, mengubah dan menjimatkan model - daripada rendering masa nyata kepada paparan.
Open Source dan Permohonan
Aspose.3D FOSS untuk Java dikeluarkan di bawah Lisensi MID.Ini bermakna anda bebas untuk:
- Gunakan perpustakaan dalam aplikasi komersial dan pemilikan.
- Mengubah kod sumber untuk memenuhi keperluan anda.
- Membahagikan perpustakaan sebagai sebahagian daripada perisian anda sendiri.
Tiada yuran royalty, tiada had penggunaan, dan tiada keperluan pengiktirafan di luar apa yang dinyatakan dalam lesen MIT.
Kod sumber penuh dihoskan di GitHub, dan sumbangan dialu-alukan: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java untuk
Keperluan Sistem
| Keperluan | Detail |
|---|---|
| versi Java | 21 or later |
| ketergantungan | Tidak ada (Java Bersih) |
| Platform yang | Platform yang menjalankan JVM |
| Membina alat | Maven ( disyorkan untuk digunakan) |
Bermula daripada
Berikut merupakan sumber-sumber yang boleh membantu anda bangun dan berlari:
- Dokumen – panduan komprehensif dan laluan API boleh didapati di Laporan 3D untuk laman web.
- pangkalan pengetahuan - praktikal bagaimana-untuk artikel dan penyelesaian masalah tips dalam Perbezaan 3D KB.
- Perkataan api - rujukan kelas dan kaedah terperinci kepada Aspose.3D API rujukan.
- Kod Sumber - melayari dan menyumbang kepada GitHub.
- Maven Pusat - pakej ini diterbitkan sebagai
com.aspose:aspose-3d-fossdi pusat bandar Maven.
Kes penggunaan umum
Berikut adalah beberapa senario praktikal di mana Aspose.3D FOSS untuk Java sesuai dengan baik:
Format Pembuatan Paip Konversi
Banyak pasukan menerima aset 3D dalam satu format tetapi memerlukan mereka dalam yang lain.Kumpulan reka bentuk boleh bekerja di FBX manakala pasukan web memerlukan glTF. Perpustakaan membolehkan anda membina paip 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 anda mengintegrasikan aset 3D ke dalam aplikasi anda, anda mungkin ingin mengesahkan kandungan - memeriksa pengiraan nod, menguji geometri, atau mengonfirmasi bahawa elemen yang dijangka 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");
}
}
Persidangan panggung
Anda boleh memuatkan 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 seterusnya
Dalam posting yang akan datang, kami akan meliputi:
- Sebuah menyelam dalam ciri-ciri utama API adegan grafik, bahan, dan utiliti matematik.
- Panduan praktikal untuk bekerja dengan setiap format 3D yang disokong - OBJ, STL, glTF, dan FBX - termasuk pilihan muat / simpanan dan corak penukaran batch.
Tetap bersemangat, dan berasa bebas untuk meneroka perpustakaan dan berkongsi maklum balas anda di GitHub.