Jak ładować modele 3D w Java

Jak ładować modele 3D w Java

aspose-3d-foss dla Java zapewnia prosty interfejs API do otwierania plików 3D. Po załadowaniu pliku do Scene obiektu możesz przechodzić po hierarchii węzłów i odczytywać dane geometryczne.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

Dodaj zależność Maven:

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

Krok 2: Zaimportuj klasę Scene

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

Krok 3: Załaduj plik

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

Lub użyj statycznej fabryki:

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

Obsługiwane formaty: OBJ, STL, glTF 2.0 / GLB, FBX (tylko binarny — ASCII FBX nie jest obsługiwany i powoduje ImportException).


Krok 4: Przejdź po węzłach sceny

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

Krok 5: Uzyskaj dostęp do danych siatki

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

Typowe problemy i rozwiązania

Wyjątek podczas ładowania

Sprawdź, czy plik nie jest uszkodzony i czy format jest obsługiwany (OBJ, STL, glTF, FBX).

NullPointerException przy dostępie do encji

Nie każdy węzeł zawiera geometrię. Zawsze sprawdzaj node.getEntity() instanceof Mesh przed rzutowaniem.

Niezgodność systemu współrzędnych

Użyj ObjLoadOptions.setFlipCoordinateSystem(true) lub zastosuj rotację po załadowaniu.


Najczęściej zadawane pytania (FAQ)

Jakie formaty mogę wczytać?

OBJ, STL (binarny i ASCII), glTF 2.0 / GLB oraz FBX. Dla FBX, tylko binarny FBX jest obsługiwany. Pliki ASCII FBX spowodują ImportException("ASCII FBX format not yet supported - only binary FBX is supported").

Czy mogę wczytać z InputStream?

Tak. scene.open() akceptuje an InputStream.

Czy biblioteka jest bezpieczna wątkowo?

Każdy Scene instancja jest niezależna. Ładowanie oddzielnych plików do oddzielnych instancji z oddzielnych wątków jest bezpieczne.

 Polski