Fitur dan Fungsionalitas

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 .glb ekstensi untuk output glTF biner yang kompak
  • Periksa node.getEntity() != null sebelum 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

MasalahPenyebabPerbaikan
Pengecualian saat memuatFile tidak didukung atau rusakVerifikasi file terbuka di penampil 3D
Material hilang setelah memuat OBJ.mtl file tidak ditemukanTempatkan .mtl di sebelah .obj; pastikan material diaktifkan
Skala tidak cocok setelah imporSistem satuan yang berbedaTerapkan 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 / MetodeDeskripsi
SceneKontainer 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
NodeNode hierarki adegan
node.createChildNode()Buat dan lampirkan node anak
MeshMesh poligon dengan titik kontrol dan daftar face
mesh.createPolygon()Definisikan face poligon
Mesh.toMesh()Konversi atau kloning geometri mesh
TransformTranslasi, rotasi, dan skala lokal
FileFormatRegistri dan detektor untuk format
 Bahasa Indonesia