Pengenalan
Kerja dengan kandungan 3D dalam Java biasanya memerlukan pilihan antara berat badan yang berat. mesin permainan dan bar-bones perpustakaan matematik. aspose-3d-foss Pakej yang menawarkan A tanah tengah: API graf adegan yang berfokus yang mengendalikan fail I/O, hierarki nod, pembinaan mesh, dan koordinat transformasi tanpa menarik dalam rendering rantaian atau rangkaian ketergantungan asli.
Aspose.3D FOSS untuk Java adalah perpustakaan sumber terbuka yang didistribusikan di bawah lesen MIT. Ia menyediakan 80 kelas meliputi pengurusan adegan, geometri, bahan, dan format penukaran. Perpustaka membaca FBX, glTF/GLB, Wavefront OBJ, and STL, serta menulis gltF / GLB , OBG, & STl (Export FBx tidak dilaksanakan), menjadikannya praktikal untuk pemprosesan 3D server-side, integrasi build-tool,, atau paip data-conversion yang berjalan pada Java 21 atau lebih awal.
Post ini berjalan melalui keupayaan pengurusan adegan di perpustakaan: bagaimana untuk membina adapan daripada runtuhan, menanamnya dengan geometri dan transformasi, dan mengeksport hasil ke cakera.
Apa yang dimasukkan
Gambaran keseluruhan Graph Basics
yang Scene Kelas ialah bekas akar bagi setiap dokumen 3D. Ia mempunyai akar Node, aset metadata, klip animasi, dan sub-scenes. anda boleh mencipta kosong memaparkan dan kemudian menangkapnya, atau muat turun fail yang sedia 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 boleh tahan satu Entity (Seperti yang telah di Mesh atau Cameradan a) Transform, senarai bahan, dan nod kanak-kanak yang lebih lanjut. struktur pokok cermin corak graf adegan yang digunakan oleh kebanyakan alat penulisan 3D.
Pembinaan Mesh
yang Mesh Kelas membolehkan anda menentukan geometri daripada titik kawalan dan poligon. Indikator. anda menambah vertikal dengan addControlPoint,Kemudian, sambungkan mereka ke muka. 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 Mesh termasuk triangulate(), optimize(removeVertices),dan Boolean Pengurusan (union, difference, intersect(Tetapi kaedah-kaedah ini mempunyai pelancaran semasa - mereka mengembalikan satu klon daripada mesh input tanpa melaksanakan Operasi yang dinamakan.
Transformasi dan Posisi
Setiap satu Node Menggunakan A Transform yang mengawal terjemahan tempatan, rotasi, dan skala. ini terdiri melalui hierarki supaya bergerak nod ibu bapa menggerakkan semua anak-anak mereka.
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 kedudukan mutlak, panggilan node.getGlobalTransform() untuk mengambil semula yang terdiri daripada GlobalTransform,atau node.evaluateGlobalTransform(true) untuk mendapatkan a Matrix4 Ini termasuk offset geometri.
Bahan PBR
yang PbrMaterial Kelas menyediakan sifat rendering berasaskan fizikal: warna albedo, faktor logam, keriting, warna emisi, dan ketelusan. Menugaskan bahan kepada nod apabila mencipta kanak-kanak.
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 Pengesanan
yang FileFormat kelas menyediakan utiliti pencarian dan pengesanan statik. anda boleh menyelesaikan format dengan meluaskan fail atau menyiasat aliran untuk mengenal pasti fail yang tidak diketahui.
import com.aspose.threed.FileFormat;
FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();
Sistem Konversi Koordinat
AxisSystem membolehkan anda menentukan asas atas, asus hadapan dan ketersediaan satu Sistem pengukuran, kemudian mengira A Matrix4 untuk mengubah geometri antara Konvensyen (contohnya, daripada sistem tangan kanan Z-up kepada Y-Up) yang di sebelah 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);
Mulakan Cepat
Menambah ketergantungan Maven:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Membina adegan yang mudah dan mengeksportnya:
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 disokong
| Format | Perpanjangan | Bacaan | Tuliskan |
|---|---|---|---|
| FBX (ASCII dan Binary, 6.x-7.x) | .fbx | Ya ya | Tidak |
| Perbezaan antara 1.0 dan 2.0 | .gltf | Ya ya | Ya ya |
| Perbezaan GTTF Binary | .glb | Ya ya | Ya ya |
| Perbincangan:Wavefront OBJ | .obj | Ya ya | Ya ya |
| STL (ASCII dan Binary) | .stl | Ya ya | Ya ya |
Setiap format telah didedikasikan untuk LoadOptions dan SaveOptions Perbezaan ( untuk Contohnya ialah, FbxLoadOptions, GltfSaveOptions, StlSaveOptionsyang menunjukkan bahawa tetapan spesifik format seperti koordinat-sistem flipping dan jenis kandungan Seleksi yang.
Open Source & Permohonan
Aspose.3D FOSS untuk Java dikeluarkan di bawah lesen MIT. Kod sumber ialah: boleh didapati di GitHub 3D-FOSS untuk Java. Anda boleh menggunakan, mengubah suai dan membahagikan semula perpustakaan dalam komersial dan Projek bukan komersial tanpa sekatan.
Bermula daripada
- Panduan Pembangun - API berjalan dan Penggunaan pattern
- pangkalan pengetahuan - Bagaimana untuk artikel dan FAQs
- Perkataan api - Kelas penuh dan Dokumen Kaedah