Cara Memuat Model 3D di Java
aspose-3d-foss untuk Java menyediakan API yang sederhana untuk membuka file 3D. Setelah memuat file ke dalam sebuah Scene objek, Anda dapat menelusuri hierarki node dan membaca data geometri.
Panduan Langkah-demi-Langkah
Langkah 1: Instal Paket
Tambahkan dependensi Maven:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>Langkah 2: Impor Kelas Scene
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;Langkah 3: Muat File
Scene scene = new Scene();
scene.open("model.obj");Atau gunakan pabrik statis:
Scene scene = Scene.fromFile("model.obj");Format yang didukung: OBJ, STL, glTF 2.0 / GLB, FBX (hanya biner — ASCII FBX tidak didukung dan akan melempar ImportException).
Langkah 4: Telusuri Node Scene
void walk(Node node, int depth) {
String indent = " ".repeat(depth * 2);
System.out.println(indent + "Node: " + node.getName());
for (Node child : node.getChildNodes()) {
walk(child, depth + 1);
}
}
walk(scene.getRootNode(), 0);Langkah 5: Akses Data Mesh
for (Node node : scene.getRootNode().getChildNodes()) {
if (node.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) node.getEntity();
System.out.println("Mesh '" + node.getName() + "': " +
mesh.getControlPoints().size() + " vertices, " +
mesh.getPolygonCount() + " polygons");
}
}Masalah Umum dan Solusinya
Pengecualian saat memuat
Pastikan file tidak rusak dan formatnya didukung (OBJ, STL, glTF, FBX).
NullPointerException saat mengakses entitas
Tidak setiap node membawa geometri. Selalu periksa node.getEntity() instanceof Mesh sebelum melakukan casting.
Ketidaksesuaian sistem koordinat
Gunakan ObjLoadOptions.setFlipCoordinateSystem(true) atau terapkan rotasi setelah memuat.
Pertanyaan yang Sering Diajukan (FAQ)
Format apa yang dapat saya muat?
OBJ, STL (biner dan ASCII), glTF 2.0 / GLB, dan FBX. Untuk FBX, hanya FBX biner yang didukung. File FBX ASCII akan melempar ImportException("ASCII FBX format not yet supported - only binary FBX is supported").
Apakah saya dapat memuat dari InputStream?
Ya. scene.open() menerima sebuah InputStream.
Apakah perpustakaan ini thread-safe?
Setiap Scene instance bersifat independen. Memuat file terpisah ke dalam instance terpisah dari thread terpisah aman.