Fitur dan Fungsionalitas
Fitur dan Fungsionalitas
Halaman ini mencakup setiap area fitur utama dari aspose-3d-foss 26.1.0 dengan contoh Java yang berfungsi.
Memuat dan Menyimpan Scene
scene.open() memuat sebuah file; scene.save() mengekspornya:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Alternatif pabrik statis:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Opsi Spesifik Format
Lewati LoadOptions atau SaveOptions subkelas untuk kontrol yang lebih halus:
import com.aspose.threed.*;
Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);Catatan: FBX hanya didukung untuk impor; ekspor FBX tidak diimplementasikan dalam versi FOSS. Hanya FBX biner file didukung untuk diimpor — ASCII FBX menghasilkan kesalahan ImportException.
Membangun Graf Scene
Buat node dan lampirkan entitas:
Scene scene = new Scene();
Node root = scene.getRootNode();
Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);
Node meshNode = root.createChildNode("triangle", mesh);Operasi Mesh
Buat sebuah Mesh secara programatik dengan titik kontrol dan poligon:
Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);Transform
Setiap Node membawa sebuah Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Baca ruang-dunia melalui node.getGlobalTransform().getMatrix().
Material
Tetapkan material ke node:
PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);
scene.getRootNode().createChildNode("red_mesh", mesh, mat);Jenis material: Material (dasar), PbrMaterial (PBR metallic-roughness).
Tips dan Praktik Terbaik
- Gunakan
Scene.fromFile()untuk pemuatan satu baris ketika opsi khusus tidak diperlukan - Bangun mesh secara programatis dengan
createPolygon()untuk geometri khusus - Gunakan
.glbekstensi untuk output glTF biner yang kompak - Periksa
node.getEntity() != nullsebelum casting - Ekspor STL tidak men-triangulasi wajah poligon secara otomatis. Ekspor STL biner hanya menulis tiga vertex pertama dari setiap wajah poligon — wajah kuad atau n-gon dipotong secara diam-diam. Ekspor STL ASCII menulis semua indeks vertex, yang menghasilkan blok facet yang rusak untuk wajah non-segitiga. Selalu berikan mesh yang sudah ter-triangulasi sebelumnya (semua wajah segitiga) ke ekspor STL untuk menghindari kehilangan data atau output yang tidak valid.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| Pengecualian saat memuat | File tidak didukung atau rusak | Verifikasi file terbuka di penampil 3D |
| Material hilang setelah memuat OBJ | .mtl file tidak ditemukan | Tempatkan .mtl di sebelah .obj; pastikan material diaktifkan |
| Skala tidak cocok setelah impor | Sistem satuan yang berbeda | Terapkan sebuah Transform skala setelah memuat |
FAQ
Bagaimana cara mendeteksi format file?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Bisakah saya memuat dari stream?
Ya. scene.open() menerima sebuah InputStream.
Format mana yang mendukung impor dan ekspor?
OBJ, STL, dan glTF/GLB mendukung kedua arah. FBX hanya untuk impor; ekspor tidak diimplementasikan dalam versi FOSS.
Ringkasan Referensi API
| Kelas / Metode | Deskripsi |
|---|---|
Scene | Kontainer adegan 3D tingkat atas |
scene.open() | Muat file 3D melalui jalur atau aliran |
scene.save() | Ekspor adegan ke file atau aliran |
Scene.fromFile() | Fabrik statis untuk memuat dan mengembalikan sebuah Scene |
Node | Node hierarki adegan |
node.createChildNode() | Buat dan lampirkan node anak |
Mesh | Mesh poligon dengan titik kontrol dan daftar face |
mesh.createPolygon() | Definisikan face poligon |
Mesh.toMesh() | Konversi atau kloning geometri mesh |
Transform | Translasi, rotasi, dan skala lokal |
FileFormat | Registri dan detektor untuk format |