Pengantar
Bekerja dengan konten 3D dalam Java biasanya membutuhkan pilihan antara berat badan yang berat. mesin permainan dan bar-bones perpustakaan matematika. aspose-3d-foss Paket yang menawarkan A tanah tengah: API grafis adegan yang berfokus yang mengendalikan file I/O, hierarki nod, pembinaan mesh, dan koordinasi transformasi tanpa menarik dalam rendering Pipa atau rantai ketergantungan asli.
Aspose.3D FOSS untuk Java adalah perpustakaan sumber terbuka yang didistribusikan di bawah lisensi MIT. Ia menyediakan 80 kelas meliputi pengelolaan adegan, geometri, bahan, dan konversi format. perpuskannya membaca FBX, glTF/GLB, Wavefront OBJ, and STL, serta menulis gltF / GLB , OBG, & STl (ekspor FBx tidak dilaksanakan), menjadikannya praktis untuk pemrosesan 3D server-side, integrasi build-tool, atau pipa konversion data yang berjalan pada Java 21 atau lebih lambat.
Posting ini berjalan melalui kemampuan manajemen adegan di perpustakaan: bagaimana untuk membangun adonan dari scratch, populasinya dengan geometri dan transformasi, dan mengekspor hasilnya ke disk.
Apa yang Termasuk
Gambar dasar grafis
yang Scene Kelas adalah konteiner akar untuk setiap dokumen 3D. Ini memiliki akar Node, metadata aset, klip animasi, dan sub-scenes. Anda dapat membuat kosong memaparkan dan kemudian mendopulerkannya, atau muat file yang ada dengan Scene.fromFile.
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
Scene scene = new Scene();
Node root = scene.getRootNode();
// Add named child nodes to build a hierarchy
Node chassis = root.createChildNode("Chassis");
Node wheel = chassis.createChildNode("FrontLeftWheel");
Setiap orang Node dapat memegang satu Entity (Seperti yang dilakukan A Mesh atau Cameradan a) Transform, daftar bahan, dan nodus anak lainnya. struktur pohon mirror pattern scene-graph yang digunakan oleh sebagian besar alat penulisan 3D.
Mesh Pembinaan
yang Mesh Kelas memungkinkan Anda untuk menentukan geometri dari titik kontrol dan poligon. Anda menambahkan vertikal dengan addControlPoint,Kemudian menghubungkannya ke wajah. Dengan createPolygon.
import com.aspose.threed.Mesh;
Mesh box = new Mesh("Box");
// Define eight corners of a cube
box.addControlPoint(0, 0, 0);
box.addControlPoint(1, 0, 0);
box.addControlPoint(1, 1, 0);
box.addControlPoint(0, 1, 0);
box.addControlPoint(0, 0, 1);
box.addControlPoint(1, 0, 1);
box.addControlPoint(1, 1, 1);
box.addControlPoint(0, 1, 1);
// Create quad faces
box.createPolygon(0, 1, 2, 3); // back
box.createPolygon(4, 5, 6, 7); // front
box.createPolygon(0, 4, 7, 3); // left
box.createPolygon(1, 5, 6, 2); // right
box.createPolygon(3, 2, 6, 7); // top
box.createPolygon(0, 1, 5, 4); // bottom
scene.getRootNode().createChildNode("Box", box);
Kebakaran Mesin termasuk triangulate(), optimize(removeVertices),dan Boolean Operasi (union, difference, intersectNamun, metode ini sangat terbatas dalam Release saat ini — mereka mengembalikan klon dari input mesh tanpa melakukan Operasi yang disebut.
Transformasi dan Posisi
Setiap Node Menggunakan A Transform yang mengontrol terjemahan lokal, rotasi, Ini menyusun melalui hierarki sehingga menggerakkan nod ibu Dia menggerakkan semua anaknya.
import com.aspose.threed.Transform;
import com.aspose.threed.Node;
Node node = scene.getRootNode().createChildNode("Shifted");
Transform t = node.getTransform();
t.setTranslation(5.0, 0.0, -3.0);
t.setScale(2.0, 2.0, 2.0);
t.setEulerAngles(0, 45.0, 0);
Untuk pertanyaan posisi absolut, hubungi node.getGlobalTransform() untuk mendapatkan kembali yang komposisi GlobalTransform,atau node.evaluateGlobalTransform(true) Untuk mendapatkan a Matrix4 Ini termasuk geometris offset.
Bahan PBR
yang PbrMaterial Kelas menyediakan sifat rendering berbasis fisik: warna albedo, faktor logam, kerahsiaan, warna emisi, dan transparansi. Tugaskan bahan pada nod ketika membuat anak.
import com.aspose.threed.PbrMaterial;
import com.aspose.threed.Vector4;
import com.aspose.threed.Vector3;
PbrMaterial mat = new PbrMaterial("RedMetal");
mat.setAlbedo(new Vector4(0.9, 0.1, 0.1, 1.0));
mat.setMetallicFactor(0.8);
mat.setRoughnessFactor(0.3);
mat.setEmissiveColor(new Vector3(0, 0, 0));
scene.getRootNode().createChildNode("Part", box, mat);
Format pengamatan
yang FileFormat kelas menyediakan utilitas pencarian dan deteksi statik. Anda dapat menyelesaikan format dengan file extension atau survei aliran untuk mengidentifikasi file yang tidak diketahui.
import com.aspose.threed.FileFormat;
FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();
Konversi koordinat sistem
AxisSystem membolehkan Anda menentukan asas atas, asasi depan dan ketersediaan dari satu Sistem koordinasi, kemudian menghitung a. Matrix4 Untuk mengubah geometri antara Konvensyen (misalnya, dari sistem tangan kanan Z-up ke Y-Up) dengan tangan kiri (.
import com.aspose.threed.AxisSystem;
import com.aspose.threed.Axis;
import com.aspose.threed.CoordinateSystem;
import com.aspose.threed.Matrix4;
AxisSystem source = new AxisSystem(
CoordinateSystem.RIGHT_HANDED, Axis.Z_AXIS, Axis.Y_AXIS);
AxisSystem target = new AxisSystem(
CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.Z_AXIS);
Matrix4 conversion = source.transformTo(target);
cepat memulai
Tambahkan ketergantungan Maven:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Buatlah sebuah adegan sederhana dan ekspornya:
import com.aspose.threed.Scene;
import com.aspose.threed.Mesh;
import com.aspose.threed.Node;
import com.aspose.threed.StlSaveOptions;
import com.aspose.threed.FileContentType;
Scene scene = new Scene();
Mesh mesh = new Mesh("Triangle");
mesh.addControlPoint(0, 0, 0);
mesh.addControlPoint(1, 0, 0);
mesh.addControlPoint(0, 1, 0);
mesh.createPolygon(0, 1, 2);
scene.getRootNode().createChildNode("Shape", mesh);
StlSaveOptions opts = new StlSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("output.stl", opts);
Format yang didukung
| Formatnya | Perpanjangan | Bacaan | menulis |
|---|---|---|---|
| FBX (ASCII dan Binary, 6.x-7.x) | .fbx | Ya ya | Tidak |
| GTS 1.0 / 2.0 | .gltf | Ya ya | Ya ya |
| GST Binary yang | .glb | Ya ya | Ya ya |
| Wavefront dengan OBJ | .obj | Ya ya | Ya ya |
| STL (ASCII dan Binary) | .stl | Ya ya | Ya ya |
Setiap format yang didedikasikan untuk LoadOptions dan SaveOptions Subkategori ( untuk Contohnya , FbxLoadOptions, GltfSaveOptions, StlSaveOptionsyang mengeksposkan Settings-specific format seperti koordinat-system flipping dan jenis konten Seleksi yang.
Open Source & Lisensi
Aspose.3D FOSS for Java dikeluarkan di bawah lisensi MIT. kode sumber adalah: tersedia di GitHub pada 3D-FOSS untuk Java. Anda dapat menggunakan, mengubah dan meredistribusikan perpustakaan secara komersial dan Proyek non-komersial tanpa batasan.
Bermula dengan
- Panduan Pengembang - API berjalan dan Penggunaan pattern
- Basis pengetahuan Cara Membuat Artikel dan FAQ
- Referensi API - Kelas penuh dan Metode Dokumentasi