Cara Memuat Model 3D dalam Java

Cara Memuat Model 3D dalam Java

aspose-3d-foss untuk Java menyediakan API yang mudah untuk membuka fail 3D. Selepas memuatkan fail ke dalam satu Scene objek, anda boleh menelusuri hierarki nod dan membaca data geometri.

Panduan Langkah demi Langkah

Langkah 1: Pasang Pakej

Tambah kebergantungan Maven:

<dependency>
  <groupId>com.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.1.0</version>
</dependency>

Langkah 2: Import Kelas Scene

import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;

Langkah 3: Muat Fail

Scene scene = new Scene();
scene.open("model.obj");

Atau gunakan kilang statik:

Scene scene = Scene.fromFile("model.obj");

Format yang disokong: OBJ, STL, glTF 2.0 / GLB, FBX.


Langkah 4: Lintasi Nod Adegan

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");
    }
}

Isu Umum dan Penyelesaian

Pengecualian semasa memuat

Pastikan fail tidak rosak dan format disokong (OBJ, STL, glTF, FBX).

NullPointerException semasa mengakses entiti

Tidak semua nod membawa geometri. Sentiasa periksa node.getEntity() instanceof Mesh sebelum menukar jenis.

Ketidakcocokan sistem koordinat

Gunakan ObjLoadOptions.setFlipCoordinateSystem(true) atau terapkan putaran selepas memuatkan.


Soalan Lazim (FAQ)

Format apa yang boleh saya muat?

OBJ, STL (binari dan ASCII), glTF 2.0 / GLB, dan FBX.

Bolehkah saya memuat dari InputStream?

Ya. scene.open() menerima satu InputStream.

Adakah perpustakaan ini thread-safe?

Setiap Scene instance adalah bebas. Memuatkan fail berasingan ke dalam instance berasingan daripada thread berasingan adalah selamat.

 Bahasa Melayu