Fitur dan fungsi
Fitur dan fungsi
Halaman ini mencakup setiap area utama dari Aspose 3D-Foss pada 26.1 dengan contoh Java yang bekerja.
Mengisi dan Menjimatkan Adegan
scene.open() mengisi file; scene.save() Ekspornya adalah :
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Alternatif untuk pabrik:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Format-Seperti Pilihan
Pasal LoadOptions atau SaveOptions Sub-kelas untuk kontrol 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 FB X tidak dilaksanakan dalam versi FOSS. Binary FBX file yang didukung untuk impor — ASCII FBX membuang
ImportException.
Membangun Scene Graph
Mencipta nodus dan menyambung 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
Mencipta A Mesh dengan titik kontrol dan polygon:
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);Transformasi
Setiap orang Node Menggunakan A Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Baca Dunia melalui node.getGlobalTransform().getMatrix().
Bahan
Mengatur materi untuk nodus:
import com.aspose.threed.*;
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 bahan : Material dan dasarnya, PbrMaterial (PBR adalah logam yang keras).
Tips dan Praktik Terbaik
- Penggunaan
Scene.fromFile()untuk beban satu baris ketika pilihan tersuai tidak diperlukan - Membangun program dengan
createPolygon()Untuk geometri yang teratur - Penggunaan
.glbPerpanjangan untuk kompak biner glTF output - Periksa
node.getEntity() != nullSebelum casting - Ekspor dari STL Tidak binary STL export hanya menulis 3 vertikal pertama dari setiap polygon face — quad atau n-gon wajah diam-diam tertutup. ASCII STl expor menulis semua indeks vertex, yang menghasilkan blok sisi yang rosak untuk non-triangle muka. Selalu melewati pre-triangulated mesh (all-trangles muka) ke ST L eksport untuk menghindari kehilangan data atau output tidak sah.
Masalah umum
| Masalahnya | Penyebabnya | Fiksasi |
|---|---|---|
| Pengecualian pada beban | File yang tidak disokong atau rusak | Periksa file terbuka dalam 3D viewer |
| Bahan yang hilang setelah OBJ load | .mtl file tidak ditemukan | Tempatnya .mtl Di samping itu .obj;• Memastikan bahan-bahan yang tersedia |
| Keterbatasan skala setelah impor | Sistem unit yang berbeda | Menggunakan A Transform Skala setelah muatan |
FAQ
Bagaimana saya dapat mengidentifikasi format file?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Bisakah saya mengisi dari satu aliran?
Ya ya. scene.open() menerima satu InputStream.
Format apa yang mendukung kedua import dan eksport?
OBJ, STL dan glTF/GLB mendukung keduanya. FBX hanya diimpor; ekspor tidak dilaksanakan dalam versi FOSS.
Simpli Referensi API
| Kelas / Metode | Penerangan |
|---|---|
Scene | Kontainer 3D Top Level |
scene.open() | Mengunggah file 3D dengan jalur atau aliran |
scene.save() | Ekspor scene ke file atau stream |
Scene.fromFile() | Pabrik statik untuk mengisi dan mengembalikan a Scene |
Node | Keterangan hierarki node |
node.createChildNode() | Mencipta dan menyambung anak nodus |
Mesh | Polygon mesh dengan titik kontrol dan daftar wajah |
mesh.createPolygon() | Menentukan wajah polygon |
Mesh.toMesh() | Konversi atau klon Mesh Geometri |
Transform | Terjemahan, rotasi dan skala lokal |
FileFormat | Registry dan detektor untuk format |