Hvordan laste inn 3D-modeller i Java
aspose-3d-foss for Java gir et enkelt API for å åpne 3D-filer. Etter å ha lastet en fil inn i en Scene objekt kan du gå gjennom nodehierarkiet og lese geometridata.
Steg-for-steg guide
Steg 1: Installer pakken
Legg til Maven‑avhengigheten:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>Steg 2: Importer Scene-klassen
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;Steg 3: Last inn en fil
Scene scene = new Scene();
scene.open("model.obj");Eller bruk den statiske fabrikken:
Scene scene = Scene.fromFile("model.obj");Støttede formater: OBJ, STL, glTF 2.0 / GLB, FBX (kun binær — ASCII FBX støttes ikke og kaster ImportException).
Steg 4: Gå gjennom Scene-noder
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);Steg 5: Få tilgang til Mesh-data
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");
}
}Vanlige problemer og løsninger
Unntak ved lasting
Bekreft at filen ikke er korrupt og at formatet er støttet (OBJ, STL, glTF, FBX).
NullPointerException ved tilgang til entitet
Ikke hver node inneholder geometri. Sjekk alltid node.getEntity() instanceof Mesh før du kaster.
Uoverensstemmelse i koordinatsystem
Bruk ObjLoadOptions.setFlipCoordinateSystem(true) eller bruk en rotasjon etter lasting.
Ofte stilte spørsmål (FAQ)
Hvilke formater kan jeg laste?
OBJ, STL (binær og ASCII), glTF 2.0 / GLB, og FBX. For FBX, kun binær FBX støttes. ASCII FBX-filer vil kaste ImportException("ASCII FBX format not yet supported - only binary FBX is supported").
Kan jeg laste fra en InputStream?
Ja. scene.open() aksepterer en InputStream.
Er biblioteket trådsikkert?
Hver Scene instans er uavhengig. Å laste separate filer inn i separate instanser fra separate tråder er trygt.