Wie man 3D-Modelle in Java lädt
aspose-3d-foss für Java bietet eine unkomplizierte API zum Öffnen von 3D-Dateien. Nach dem Laden einer Datei in ein Scene Objekt können Sie die Knotenhierarchie durchlaufen und Geometriedaten lesen.
Schritt-für-Schritt-Anleitung
Schritt 1: Paket installieren
Fügen Sie die Maven-Abhängigkeit hinzu:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>Schritt 2: Scene‑Klasse importieren
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;Schritt 3: Datei laden
Scene scene = new Scene();
scene.open("model.obj");Oder verwenden Sie die statische Fabrik:
Scene scene = Scene.fromFile("model.obj");Unterstützte Formate: OBJ, STL, glTF 2.0 / GLB, FBX (nur binär — ASCII FBX wird nicht unterstützt und wirft ImportException).
Schritt 4: Szenenknoten durchlaufen
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);Schritt 5: Mesh‑Daten zugreifen
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");
}
}Häufige Probleme und Lösungen
Ausnahme beim Laden
Stellen Sie sicher, dass die Datei nicht beschädigt ist und das Format unterstützt wird (OBJ, STL, glTF, FBX).
NullPointerException beim Zugriff auf Entity
Nicht jeder Knoten enthält Geometrie. Prüfen Sie immer node.getEntity() instanceof Mesh vor dem Casten.
Koordinatensystem-Fehlanpassung
Verwenden Sie ObjLoadOptions.setFlipCoordinateSystem(true) oder wenden Sie nach dem Laden eine Rotation an.
Häufig gestellte Fragen (FAQ)
Welche Formate kann ich laden?
OBJ, STL (binär und ASCII), glTF 2.0 / GLB und FBX. Für FBX, nur binäres FBX wird unterstützt. ASCII FBX-Dateien werden werfen ImportException("ASCII FBX format not yet supported - only binary FBX is supported").
Kann ich aus einem InputStream laden?
Ja. scene.open() akzeptiert ein InputStream.
Ist die Bibliothek thread‑sicher?
Jeder Scene Instanz ist unabhängig. Das Laden separate Dateien in separate Instanzen aus separaten Threads ist sicher.