Cara Memuat Model 3D di Java

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.

 Bahasa Indonesia