Ciri-ciri dan Fungsi
Ciri-ciri dan Fungsi
Halaman ini merangkumi setiap kawasan ciri utama aspose-3d-foss 26.1.0 dengan contoh Java yang berfungsi.
Memuat dan Menyimpan Adegan
scene.open() memuatkan fail; scene.save() mengeksportnya:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Alternatif kilang statik:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Pilihan Khusus Format
Hantar subkelas LoadOptions atau SaveOptions untuk kawalan terperinci:
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);Nota: FBX disokong untuk import sahaja; eksport FBX tidak dilaksanakan dalam versi FOSS. Hanya fail binary FBX disokong untuk import — ASCII FBX menghasilkan
ImportException.
Membina Graf Adegan
Buat nod dan lampirkan entiti:
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
Cipta Mesh secara programatik dengan titik kawalan 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);Transformasi
Setiap Node membawa 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().
Bahan
Tetapkan bahan kepada nod:
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 (base), PbrMaterial (PBR metallic-roughness).
Petua dan Amalan Terbaik
- Gunakan
Scene.fromFile()untuk pemuatan satu baris apabila pilihan khusus tidak diperlukan - Bina mesh secara programatik dengan
createPolygon()untuk geometri khusus - Gunakan sambungan
.glbuntuk output glTF binari yang padat - Semak
node.getEntity() != nullsebelum menukar - Eksport STL tidak men-triangulasi muka poligon secara automatik. Eksport STL binari menulis hanya 3 verteks pertama bagi setiap muka poligon — muka kuad atau n‑gon dipotong secara senyap. Eksport STL ASCII menulis semua indeks verteks, yang menghasilkan blok faset yang rosak bagi muka bukan segitiga. Sentiasa hantarkan mesh yang telah dipra‑triangulasi (semua muka segitiga) kepada eksport STL untuk mengelakkan kehilangan data atau output yang tidak sah.
Isu Umum
| Issue | Cause | Fix |
|---|---|---|
| Pengecualian semasa memuatkan | Fail tidak disokong atau rosak | Sahkan fail dibuka dalam penonton 3D |
| Bahan hilang selepas muat OBJ | .mtl fail tidak dijumpai | Letakkan .mtl di sebelah .obj; pastikan bahan diaktifkan |
| Ketidaksesuaian skala selepas import | Sistem unit berbeza | Gunakan skala Transform selepas memuatkan |
Soalan Lazim
Bagaimana saya mengesan format fail?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Bolehkah saya memuatkan dari stream?
Ya. scene.open() menerima satu InputStream.
Format mana yang menyokong import dan eksport?
OBJ, STL, dan glTF/GLB menyokong kedua-dua arah. FBX hanya import; eksport tidak dilaksanakan dalam versi FOSS.
Ringkasan Rujukan API
| Class / Method | Description |
|---|---|
Scene | Bekas adegan 3D peringkat atas |
scene.open() | Muat fail 3D mengikut laluan atau aliran |
scene.save() | Eksport adegan ke fail atau aliran |
Scene.fromFile() | Kilang statik untuk memuat dan mengembalikan Scene |
Node | Node hierarki adegan |
node.createChildNode() | Cipta dan lampirkan node anak |
Mesh | Mesh poligon dengan titik kawalan dan senarai muka |
mesh.createPolygon() | Takrifkan muka poligon |
Mesh.toMesh() | Tukar atau klon geometri mesh |
Transform | Terjemahan, putaran, dan skala setempat |
FileFormat | Pendaftaran dan pengesan untuk format |